Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改特定地址中的十六进制值_C#_Assembly_Hex_Byte - Fatal编程技术网

C# 更改特定地址中的十六进制值

C# 更改特定地址中的十六进制值,c#,assembly,hex,byte,C#,Assembly,Hex,Byte,我在一个.exe文件中有这个地址,我想做一个C#Windows窗体应用程序,让我在地址的十六进制部分写一个新的数字,我的意思是它是“C0/EA/03”,我想将“03”更改为我在应用程序中写的数字,并保存更改。可能吗?如果是,请帮助我如何做。 提前谢谢 为了更具体,我想这样做: -示例(无效,仅为示例)- 因此,当我单击按钮时,我之前显示的地址中的03现在将是FF(255十六进制)。看起来像是OllyDbg的屏幕截图,是这样吗?下一个问题是您希望在运行时(注入)还是在静态exe文件(补丁)中执行

我在一个.exe文件中有这个地址,我想做一个C#Windows窗体应用程序,让我在地址的十六进制部分写一个新的数字,我的意思是它是“C0/EA/03”,我想将“03”更改为我在应用程序中写的数字,并保存更改。可能吗?如果是,请帮助我如何做。 提前谢谢

为了更具体,我想这样做:

-示例(无效,仅为示例)-


因此,当我单击按钮时,我之前显示的地址中的03现在将是FF(255十六进制)。

看起来像是OllyDbg的屏幕截图,是这样吗?下一个问题是您希望在运行时(注入)还是在静态exe文件(补丁)中执行此操作

要修补该文件,您需要计算该特定字节在exe文件中的实际偏移量。这样做需要识别PE文件的文本部分,转到文本部分的基址,然后偏移到文本部分。要获得偏移量,需要使用反汇编程序,如Olly或NDISAM。找到
shr dl,3
指令,然后计算该指令与加载的文本段底部的偏移量。请记住,加载的虚拟地址与文件中的地址不同。0x538695可能是一个加载的虚拟地址,但很难从您的问题描述中分辨出来(我猜它是一个虚拟地址,因为它看起来像Olly的字体)。无论如何,将该偏移量添加到PE EXE文件中文本部分的底部,即可全部设置

使用像LordPE这样的工具可能更容易做到这一点


你不能只使用十六进制编辑器..C#不支持从文件中读取和写入数据吗?泰先生,是的,它是OllyDbg,我计划做的是这样的,所以当我单击按钮时,我之前显示的地址中的03现在将是FF(255十六进制)。那么请阅读我链接的RVA到文件偏移量转换,如果您有任何问题,请告诉我@JaggedO'Neill Ikr,这只是一个无效的例子。