向PE文件指定位置(如:00000138处,00000000替换为00001A00)(100分)

  • 主题发起人 主题发起人 SP229
  • 开始时间 开始时间
S

SP229

Unregistered / Unconfirmed
GUEST, unregistred user!
如何可向PE文件指定的地方写入指定内容.
比如在PE的0014AE00处替换指定长度的内容.
 
建议三个API,不过如果你原来是数据区,可能写保护。

OpenProcess得到进程句柄
ReadProcessMemory读取进程内存数据
WriteProcessMemory写进程数据
 
PE文件头,还有就是给PE新增的一个节.主要是这两个地方.在线等.
 
to xiammy

比如:给my.exe.对API我不会用.请你举下例.先谢了.
 
我是这样的:
procedure TFrmExportTB.SpeedButton4Click(Sender: TObject);
var
iTargetFile: Integer;
begin
iTargetFile := FileOpen(open.FileName, fmOpenReadWrite);
FileSeek(iTargetFile, 0, $00000138);
filewrite(FileHandle,'00001A00',4);
end;
不行.
 
上面执行的结果是PE的开始处写入字符00001A00,我想在指定的地方把长度为8个0(00000000)替换成00001A00
请高手帮忙.
 
各位大佬帮忙啊
 
to xiammy
帮帮我.
 
我想把$001A0000写到OFFSET138处,用下面的方法会写到文件的开始处,请大富翁们看看.
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
h: hwnd;
buf: integer;
begin
if not opendialog1.Execute then exit;
buf:=$001A0000;
h:=fileopen(opendialog1.FileName,fmopenreadwrite);
fileseek(h,$00000138,4);
FileWrite(h,buf,sizeof(buf));
fileclose(h);
end;
 

Similar threads

回复
0
查看
804
不得闲
回复
0
查看
1K
不得闲
D
回复
0
查看
827
DelphiTeacher的专栏
D
D
回复
0
查看
782
DelphiTeacher的专栏
D
D
回复
0
查看
865
DelphiTeacher的专栏
D
后退
顶部