-
-
[求助]修改PE优先装入地址,总是修改出错
-
发表于:
2009-10-22 11:34
4025
-
刚学习PE这部分知识,想先熟悉联系练习手,准备试试写一个可以将PE格式文件在运行时优先装入的地址。在程序中写了有一个窗口,是用来接收输入地址的。但是将字符串转换16进制地址很麻烦,所以想使用StringToAddress,无奈没有parser.dll,下载了一个竟然无法用。
所以为了简单起见,我就在程序中使用一个全局变量,这个全局变量保存的便是一个新的地址,如下所示:
.data
dwAddrs dd 00401000h
.
.
.
.code
我使用文件内存映射机制打开需要修改的文件,在打开文件时权限是可读可写。实际上的确是可以进行修改,只是修改后的地址并非是我设置的00401000h,而是一个00000001h,是在不知道是什么原因,修改的几条指令如下:
esi是一个指向IMAGE_NT_SIGNATURE指针
lea edi,[esi].OptionalHeader.ImageBase
push esi
assume esi:nothing
lea esi,dwAddrs
cld
stosd
.
.
.
请问是什么原因啊?请教各位给我讲讲。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)