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

[已解决]关于脚本

2006-7-10 14:17
3991
正在学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的程序我不懂,看了半天也不知道怎么用脚本现实同样的功能:(

请大侠指点

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 110
活跃值: (1225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cd37ycs 2006-7-10 18:05
2
0
楼主能不能提供完整的?
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
0cat0 2006-7-10 18:16
3
0
最初由 cd37ycs 发布
楼主能不能提供完整的?


见附件
上传的附件:
雪    币: 110
活跃值: (1225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cd37ycs 2006-7-11 12:59
4
0
最初由 0cat0 发布
见附件

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


上传一个别人编译好的

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