debugging - OllyDbg 2.01 - 查找引用静态字符串的命令

标签 debugging ollydbg

我最近在 OllyDbg 2.01 和crackmes 可执行文件的帮助下进行了破解和逆向工程。

所以在这个特定的破解版中,我正在滚动命令并注意到一个带有 ASCII 字符串“&File”(它是一个菜单字符串)的 PUSH :

1

所以我想:“如果我可以通过简单的滚动找到这些信息,那么肯定有一种自动的方法来找到引用特定字符串的命令”。

所以我到达程序的顶部,按 CTRL+B 并搜索 ASCII"file"以希望再次找到它:

2

点击 OK 后,OllyDbg 没有找到之前的 PUSH。相反,我得到了这个:

3

嗯……好吧,这不是我所期望的,但让我们看看里面有什么。所以我右键单击 => Follow in Dump,我得到了这个:

4

所以是的,我们在转储中找到了我们的字符串。但是,我仍然没有找到我原来的PUSH。您还可以注意到字符串的地址与 PUSH 的参数 (40512C) 相同。

作为最后一次尝试,我右键单击地址为 40512C 的信件,选择“查找引用文献”,但没有:找不到引用文献。

所以 TL ; DR 问题:如何自动查找引用字符串的命令?因为很明显,每次我想找到一个字符串时,我都不会滚动整个命令堆栈。

PS:该字符串也不会出现在“引用的文本字符串”中。

在此先感谢您的帮助。

编辑:好的,所以我找到了解决方案。我搜索了“2C 51 40 00”的代码,这是向后的地址,我再次找到了我的PUSH。这有点hacky,欢迎任何有更有效解决方案的人分享。

最佳答案

因此,有多种方法可以做到这一点。我更喜欢的是以下内容:Ctrl+G并转到转储中的字符串。 (0x0040512C) 选择第一个字节并点击 Ctrl+R .这将为您提供一个列表,其中引用了特定的字符串。您还可以在字符串“&”的第一个字节上放置一个硬件断点,然后每次访问它时都会中断。您还可以搜索常量(地址或 ascii 字符本身)。

顺便说一下,有一个专用于 reverseengineering 的子站点:)

关于debugging - OllyDbg 2.01 - 查找引用静态字符串的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554127/

相关文章:

debugging - ollydbg 操作码跟踪

c - 调试器关闭后的 MSP430 中断问题

c - 多文件 C 程序,如何最好地实现可选日志记录?

c++ - CoCreateInstance 在 Release 中工作得很好,但在调试中没有

debugging - FSTP DWORD PTR DS :[ESI+1224] do? 是什么意思

events - Ollydbg “Single step event at ntdll - Press shift+f8 to pass execution…”吗?

reverse-engineering - 如何通过OllyDbg绕过IsDebuggerPresent?

c - 段错误 - 调试程序集 gdb

c - 是否可以在 GDB 调试器中使用 "jump"/"skip"?

assembly - 奥利数据库 : sign extending with Movsx