Assembly Ollydbg-更改字符串的第一个字母 我在C++中编写了一个小的.exe程序。 int main() { string myString = "Hello"; printf("%s", myString); return 0; }

Assembly Ollydbg-更改字符串的第一个字母 我在C++中编写了一个小的.exe程序。 int main() { string myString = "Hello"; printf("%s", myString); return 0; },assembly,reverse-engineering,ollydbg,Assembly,Reverse Engineering,Ollydbg,我需要使用ollydbg来替换字符串中的第一个字母,然后打印它。 或者,我可以打印一个完全不同的字符串。 我已将.exe文件加载到ollydbg,发现执行是调用printf的地方,但找不到导致它的JMP命令 如何克服这一点? 我在谷歌上搜索过教程,但没有找到类似的内容 提前谢谢。您可以使用 上下文菜单->搜索->所有引用的文本字符串 在与引用相同的窗口中,有一些地址可以使用CTRL+E Binary edit进行编辑,如果要永久更改,请执行以下操作: 按alt+e 找到你的exe文件。选择它右键

我需要使用ollydbg来替换字符串中的第一个字母,然后打印它。 或者,我可以打印一个完全不同的字符串。 我已将.exe文件加载到ollydbg,发现执行是调用printf的地方,但找不到导致它的JMP命令

如何克服这一点? 我在谷歌上搜索过教程,但没有找到类似的内容


提前谢谢。

您可以使用 上下文菜单->搜索->所有引用的文本字符串


在与引用相同的窗口中,有一些地址可以使用CTRL+E Binary edit进行编辑,如果要永久更改,请执行以下操作:

按alt+e 找到你的exe文件。选择它右键单击并选择查看可执行文件。 按ctrl+B并搜索hello。并改变h。 右键单击并选择“保存文件…”。。。。
你可能会发现,即使有奥利,这也很难实现。您拥有的字符串应该作为文本字符串存在于只读文本段中。您可能会发现您需要在磁盘上的二进制映像中对其进行修改。@DavidHoelzer,有人建议我使用布尔代数,例如与0xFFFF FFDF或ADD/SUB操作一起使用。我的另一个选择是将其从“H”更改为“H”。用不同的字符串替换字符串怎么样?所以在调用printf之前,我传递了一个不同的字符串。我如何更改它?看来不可能把它弄清楚。。。标记文本->右键单击->二进制->编辑Ctrl-E不执行任何操作