在 ollydbg 中搜索字符串
逆向工程
ollydbg
2021-06-18 09:37:46
1个回答
根据我的经验,OllyDbg不太擅长处理字符串引用。
是不是因为搜索只查找函数中使用的字符串?
据我所知,“搜索 >> 所有引用的文本字符串”正在搜索程序集中引用的字符串。它不是在整个二进制文件中搜索字符串,即使它们存在于二进制文件的某个地方。如果您想在整个二进制文件中搜索字符串,您可以使用您最喜欢的十六进制编辑器或其他实用程序,例如 Sysinternals' strings。
但是,我们应该记住,在代码本身中使用的字符串(例如,只是分配给从未在程序中使用的变量)是否会显示在二进制文件中,可能会在不同的编译器中更改. 即使从未使用过该变量,其中一些也会显示分配,一些仍会将字符串保留在二进制文件中,但您不会在程序集中看到它,而其他人会完全忽略它并且不会在二进制文件中包含该字符串全部。
另一件值得一提的事情是反汇编程序有时无法识别字符串,并将其误认为是十六进制值。在这种情况下,您可能会看到如下内容:
...
mov eax, 6C6C6568h
...
mov eax, 6274696Fh
...
mov eax, 3964h
而不是将其显示为mov eax, "helloitbd9"
.
有没有办法在数据部分搜索所有“字符串”?
你说你用十六进制编辑器看到了这个字符串,你应该可以通过查看内存映射用OllyDbg找到它。转到查看>>内存并双击您感兴趣的内存映射 - .data
。在打开的窗口中按Ctrl+b并搜索您的字符串,您应该在那里找到它。如果你没有找到它,你也可以在另一个内存映射中搜索它,比如.rdata
.
就个人而言,我强烈建议使用 x64dbg,它是一个活跃的开源项目,与绝对过时的 Ollydbg 不同。此外,x64dbg 的灵感来自 OllyDbg,因此迁移到它时不会有太多问题。
以下是一些资源:
其它你可能感兴趣的问题