【问题标题】:Ollydbg - change string's first letterOllydbg - 更改字符串的第一个字母
【发布时间】: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


【解决方案1】:

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

在与引用相同的窗口中,您可以使用 CTRL+E(二进制编辑)编辑地址

【讨论】:

  • CTRL-E 什么都不做
【解决方案2】:

如果您想永久更改它,请执行以下操作:

  • alt + e
  • 找到你的exe文件。选择它right click 并选择View executable file
  • ctrl+B 并搜索你好。并更改 h。
  • right click 并选择 Save file...

【讨论】:

  • 如何更改?看来不可能
  • 想通了...标记文本->右键单击->二进制->编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 2018-09-18
  • 1970-01-01
相关资源
最近更新 更多