我在.exe文件中有这个地址,我想做一个C#Windows窗体应用程序,让我在地址十六进制部分写一个新数字,我的意思是&#34 ; C0 / EA / 03" ,我想将" 03" 更改为我在应用程序中编写的数字并保存更改。那可能吗?如果是,请帮我说明怎么做。 提前谢谢。
为了更具体,我想这样做:
- 示例(无效,只是一个示例) -
所以当我点击按钮时,我之前显示的地址中的03现在将是FF(255 hex)。
答案 0 :(得分:2)
这看起来像OllyDbg的截图,是这样的吗?下一个问题是你想在运行时(注入)或静态exe文件(补丁)吗?
要修补文件,您需要找出该特定字节的exe文件中的实际偏移量。这样做需要识别PE文件的文本部分,转到文本部分的基地址,然后偏移到文本部分。要获得偏移量,您需要使用反汇编程序,如Olly或ndisasm。找到shr dl,3
指令,然后从加载的文本部分的基数计算该指令的偏移量。请记住,加载的虚拟地址与文件中的地址不同。 0x538695可能是一个加载的虚拟地址,但很难从你的问题描述中得知(我猜这是一个虚拟地址,因为它看起来像Olly的字体)。无论如何,将该偏移量添加到PE EXE文件中文本部分的基础,并且您已全部设置。
使用像LordPE这样的工具可能更容易完成。
http://www.tech-juice.org/2011/02/21/portable-executable-converting-rva-to-file-offset-and-back/