首页
社区
课程
招聘
[已解决]关于脚本
发表于: 2006-7-10 14:17 4528

[已解决]关于脚本

2006-7-10 14:17
4528
正在学Unpacking ACProtect,看到里面有个小软件是专门对付Code Splicing的,以下是它的源码:

procedure TForm1.Button1Click(Sender: TObject);
var PID,PHD,Start,Size,SPStart,SPSize,Cnt,I,Go,GJMP:DWORD;
    Buf:byte; JMP:WORD;
    MBuf:array[0..4] of byte;
begin
Memo1.Clear;
PID:=HextoInt(Edit3.Text);
Start:=HextoInt(Edit1.Text);
Size:=HextoInt(Edit2.Text);
SPStart:=HextoInt(Edit4.Text);
SPSize:=HextoInt(Edit5.Text);
PHD:=OpenProcess(PROCESS_ALL_ACCESS,False,PID);
for I:=Start to Start+Size do begin
ReadProcessMemory(PHD,Pointer(I),@Buf,Sizeof(Buf),Cnt);
if (Buf=$E8) and (I+8<Start+Size) then begin
  ReadProcessMemory(PHD,Pointer(I+1),@Go,Sizeof(Go),Cnt);
  ReadProcessMemory(PHD,Pointer(I+Go+5),@JMP,Sizeof(JMP),Cnt);
  if JMP=$25FF then begin
   ReadProcessMemory(PHD,Pointer(I+Go+7),@GJMP,Sizeof(GJMP),Cnt);
   if (GJMP>=SPStart) and (GJMP<SPStart+SPSize) then begin
    ReadProcessMemory(PHD,Pointer(GJMP),@GJMP,Sizeof(GJMP),Cnt);
    if (GJMP>=SPStart) and (GJMP<SPStart+SPSize) then begin
     Memo1.Lines.Add(inttohex(I,8)+' <-- '+inttohex(GJMP,8));
     ReadProcessMemory(PHD,Pointer(GJMP),@MBuf,Sizeof(MBuf),Cnt);
     WriteProcessMemory(PHD,Pointer(I),@MBuf,Sizeof(MBuf),Cnt);
    end;
   end;
  end;
end;
end;

Delphi的程序我不懂,看了半天也不知道怎么用脚本现实同样的功能:(

请大侠指点

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 198
活跃值: (1585)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主能不能提供完整的?
2006-7-10 18:05
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 cd37ycs 发布
楼主能不能提供完整的?


见附件
上传的附件:
2006-7-10 18:16
0
雪    币: 198
活跃值: (1585)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 0cat0 发布
见附件

缺少文件。编译通不过。
2006-7-11 12:59
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 cd37ycs 发布
缺少文件。编译通不过。


上传一个别人编译好的

不过我已经找到答案了
http://bbs.pediy.com/showthread.php?s=&threadid=24822&highlight=%CD%BB%C6%C6%B7%E2%CB%F8%CF%DF
里面有我要的脚本
上传的附件:
2006-7-11 14:38
0
游客
登录 | 注册 方可回帖
返回
//