【发布时间】:2012-06-09 01:07:46
【问题描述】:
我尝试用我糟糕的汇编技能分析一个 dll 文件,如果我无法实现非常琐碎的事情,请原谅我。我的问题是,在调试应用程序时,我只在调试会话中找到我要查找的代码,在我停止调试器后,地址就消失了。 dll 看起来没有被混淆,因为许多代码都是可读的。看看screenshot。我要查找的代码位于 debug376 部分的地址 07D1EBBF。顺便说一句,我从哪里得到这个 debug376 部分?
所以我的问题是,如何在不调试的情况下找到此功能? 谢谢
更新
好的,正如我所说,一旦我停止调试器,代码就会消失。我什至无法通过字节序列找到它(但我可以在调试模式下)。当我启动调试器时,代码不会立即反汇编,我应该在那个地方添加一个硬件断点,只有当断点被命中时,IDA才会显示反汇编代码。看看这个screenshot 您会看到我感兴趣的代码行,如果程序未在调试模式下运行,则该代码行不可见。我不确定,但我认为这类似于在运行时解包代码,在设计时不可见。
无论如何,我们将不胜感激。我想知道为什么该代码被隐藏,直到断点命中(它显示为“db 8Bh”等)以及如果可能的话如何在不调试的情况下找到该地址。顺便说一句,这可能是来自不同模块(dll)的代码吗?
谢谢
更新 2
我发现 debug376 是在运行时创建的一个段。这么简单的问题:我怎样才能知道这个片段来自哪里:)
【问题讨论】:
标签: reverse-engineering disassembly ida