【发布时间】:2016-05-09 21:11:20
【问题描述】:
我用 C++ 编写了一个小的 .exe 程序。
int main()
{
string myString = "Hello";
printf("%s", myString);
return 0;
}
我需要使用 ollydbg 来替换字符串中的第一个字母,然后打印出来。 或者,我可以完全打印一个不同的字符串。 我已经将.exe文件加载到ollydbg,发现执行是调用printf的地方,但找不到导致它的JMP命令。
如何克服这个问题? 我用谷歌搜索了教程,但没有找到类似的东西。
提前致谢。
【问题讨论】:
-
您可能会发现,即使使用 Olly,这也很难实现。您拥有的字符串应该在只读文本段中作为文字字符串。您可能会发现您需要在磁盘上的二进制映像中对其进行修改。
-
@DavidHoelzer,有人建议我使用布尔代数(例如 AND 与 0xFFFF FFDF)或 ADD/SUB 操作。我的另一个选择是将其从“H”更改为“h”。用不同的字符串替换字符串怎么样?所以在调用 printf 之前,我传递了一个不同的字符串。
标签: assembly reverse-engineering ollydbg