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