2012-10-01 43 views
-1

我有这个Address地址在一个.exe文件中,我想做一个C#Windows窗体应用程序,让我在地址十六进制部分写一个新号码,我的意思是“ C0/EA/03“,我想将”03“更改为我在应用程序中编写的编号并保存更改。那可能吗?如果是这样,请帮助我如何做到这一点。 在此先感谢。在一个特定的地址更改十六进制值

对于更加具体,我想这样做:

- 例如(无效,只是一个例子) -

enter image description here

所以当我点击按钮03我之前展示的地址现在是FF(255 hex)。

+2

你就不能使用十六进制编辑器... – MethodMan

+1

不C#不和文件支持读取和写入数据??? –

回答

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/

+0

Ty先生,是的,这是OllyDbg,我打算做的事情是这样的http://screensnapr.com/e/tHqBBC.jpg所以当我点击按钮03在我现在展示的地址现在将FF (255十六进制)。 – Derezzed

+0

那么再阅读RVA文件偏移转换,我链接并让我知道如果你有任何问题! – mattypiper

+0

@ JaggedO'Neill Ikr,这只是一个无效的例子。 – Derezzed

相关问题