首页
社区
课程
招聘
[旧帖] 请教看雪大大们,关于HOOK收包Call写法问题 0.00雪花
发表于: 2015-7-7 20:01 3849

[旧帖] 请教看雪大大们,关于HOOK收包Call写法问题 0.00雪花

2015-7-7 20:01
3849
我想HOOK程序的收包函数,返回内容,该怎么写呢。麻烦大家帮忙下。谢谢。

00402F80 85C0 test eax, eax
00402F82 7E 13 jle short 00402F97
00402F84 FF15 28876F00 call dword ptr [6F8728]
00402F8A 85C0 test eax, eax
00402F8C 74 02 je short 00402F90



procedure MyOperation; stdcall;
begin
//Form1.Memo1.Clear;
  //Form1.Memo1.Lines.Add('dddddddddddddddddd');
end;
procedure HookCall; stdcall;
var
  OldCall, MyCall: DWORD;
begin
  OldCall := $6F8728;
  MyCall := DWORD(@MyOperation);
asm
  pushad
  pushfd
    call MyCall
  popfd
  popad
    Jmp OldCall
end;
end;
procedure TForm1.Button7Click(Sender: TObject);
var
  HOOK_addr: DWORD;
  tOldPoint:Cardinal;
begin
  tOldPoint := 0;
  HOOK_addr := $6F8728;
  VirtualProtect(Pointer(HOOK_addr), $5, PAGE_READWRITE, tOldPoint);
  Pbyte(HOOK_addr)^:=$e8;
  Pdword(HOOK_addr+$1)^ :=((dWORD(@HookCall)) - HOOK_addr - $5);
  VirtualProtect(Pointer(HOOK_addr), 5, tOldPoint, nil);
end;

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 11
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
什么意思?

假如[6F8728]call原型是这样的:
BOOL _stdcall f_6F8728(char* RcvPck, ULONG size){....};

那么:
先分配空间用于存储MyCall参数: LPARA

pushad
  pushfd
    push LPARA         // 添加
    call MyCall
  popfd
  popad
    Jmp OldCallvoid

stdcall  MyCall(LPARA lpara)
{
PULONG paraP= esp + 4(MyCall push) + 4(push LPARA) + 4(pushfd) + 8(pushad) +4(f_6F8728 push);
ULONG size = *(paraP +1);
char* RcvPck = *(paraP );
.....
}
2015-7-9 20:00
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
水水水水水水水水
2015-7-10 17:51
0
雪    币: 96
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
2楼就是了,LZ你想看什么软件收到的明文包吗
2015-7-10 18:09
0
游客
登录 | 注册 方可回帖
返回
//