首页
社区
课程
招聘
[求助]VC怎么HOOK 获取寄存器的值(HOOK 获取recv socket套接字)?
发表于: 2013-6-8 23:18 7625

[求助]VC怎么HOOK 获取寄存器的值(HOOK 获取recv socket套接字)?

2013-6-8 23:18
7625
前提是这样的 我把一个DLL 注入到一个进程里边

然后想通过 这个DLL 取得这个进程里Recv 这个函数里EAX的值 也就是Socket 套接字。

在网上找了些资料说是用HOOK 获取 但都没代码 求前辈们 贴下代码

Recv 这个函数 在进程里的地址是 71A2676F  如图 我想获取的就是当进程执行到 71A2676F 时EAX的值



感谢PEDIY  各位前辈老师

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学会API HOOK 就行了
2013-6-9 04:13
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
纠正一点,你要获取的不是寄存器.而是堆栈,有可能因为调用Recv的不同而不是用EAX寄存器,所以用EAX寄存器是不可靠的

Recv(SOCKET s,char*buff...);的SOCKET是压入堆栈的.所以是ESP+4
写个HOOK ..

Recv JMP到裸函数然后过滤


void  WINAPI GetSocket(SOCKETs)
{
     //这就是你要的SOCKET
}

__declspec(naked) void __stdcall RecvEx()
{
     __asm{
      mov eax,dword ptr [esp+04h]
      push esp
      push eax
      CALL GetSocket
      pop esp

      ;函数原始的代码
      mov edi,edi
      push ebp
      mov ebp,esp

      mov  eax,Recv;原始函数入口+5
      add  eax,5
      jmp eax
    }
}



大概这样.......纯裸眼写,应该不会错
2013-6-9 04:28
0
雪    币: 36
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
去找下inline hook 的资料 ,先接管再转到原先的函数就可以了
2013-6-9 07:48
0
雪    币: 1042
活跃值: (495)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Inline Hook 资料应该很多。 库也很多。
2013-6-9 09:25
0
游客
登录 | 注册 方可回帖
返回
//