首页
社区
课程
招聘
[旧帖] [求助]apihook 的问题!大神进来指点一下 0.00雪花
发表于: 2013-12-17 23:00 1427

[旧帖] [求助]apihook 的问题!大神进来指点一下 0.00雪花

2013-12-17 23:00
1427
兄弟正练习apihook技术,瞎搞了几天!

比如下面QQ影音的汇编代码:

0042CF03    53              push ebx
0042CF04    8B5C24 10       mov ebx,dword ptr ss:[esp+0x10]
0042CF08    55              push ebp
0042CF09    33ED            xor ebp,ebp
0042CF0B    3BDD            cmp ebx,ebp
0042CF0D    56              push esi =======================我想在这里hook
0042CF0E    8BF1            mov esi,ecx
0042CF10    75 0C           jnz short QQPlayer.0042CF1E========到这里!
0042CF12    5E              pop esi=========================jmp回来的地方
0042CF13    8D45 0A         lea eax,dword ptr ss:[ebp+0xA]
0042CF16    5D              pop ebp
0042CF17    5B              pop ebx
0042CF18    83C4 08         add esp,0x8
0042CF1B    C2 0800         retn 0x8
0042CF1E    8B46 04         mov eax,dword ptr ds:[esi+0x4]
0042CF21    3BC5            cmp eax,ebp
0042CF23    74 0D           je short QQPlayer.0042CF32
0042CF25    50              push eax
0042CF26    FF15 D41EAC00   call dword ptr ds:[<&MSVCR80.free>] ; MSVCR80.free
0042CF2C    83C4 04         add esp,0x4
0042CF2F    896E 04         mov dword ptr ds:[esi+0x4],ebp
0042CF32    8B4424 1C       mov eax,dword ptr ss:[esp+0x1C]
0042CF36    3BC5            cmp eax,ebp
0042CF38    896E 08         mov dword ptr ds:[esi+0x8],ebp
0042CF3B    896E 0C         mov dword ptr ds:[esi+0xC],ebp
0042CF3E    57              push edi
0042CF3F    896E 18         mov dword ptr ds:[esi+0x18],ebp

===============================================

0042CF0D    56              push esi
0042CF0E    8BF1            mov esi,ecx
0042CF10    75 0C           jnz short QQPlayer.0042CF1E
0042CF12    5E              pop esi

然后在hook的地方拿到 esi 的值做个比较

兄弟的思路是:
1.先在0042CF0D地址hook 5个字节,让他jmp到自定义函数哪里,为了方便说明,自定函数叫做DDKnow   //

2,定义一个KKD函数!用来得到esi的值,然后比较!返回真和假就行了。。

3,在自定义DDKnow函数里,调用KKD函数。。然后再jmp回到0042CF12地址执行。。

问题是:
1.自定义函数必须是空函数吗?例如:上面的提到DDKnow函数,KKD函数。。

2.还有怎么得到esi的值!//可以的话,用代码说明一下,要不给个思路也行。。

有视频更好。。。

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1、自定义函数写的你的判断esi值的代码,空函数怎么干活
2、取esi值还不容易么,直接mov xxx,esi
3、这种会点汇编就搞定了,哪有什么视频。。。
2013-12-17 23:05
0
雪    币: 730
活跃值: (3385)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
3
__declspec( naked ) void MyFunc()
{
        int n;
        _asm
        {
             mov n,esi;
...
...
...
             push 0x42CF12;
             ret;
        }
}

naked可以避免破坏你进来出去的堆栈。
跳转用 push+ret 指令5个字节,可以不用计算偏移直接用绝对地址。包括从0042CF0D跳转到函数也可以用push+ret。
另外这个应该叫代码注入,不是apihook吧
2013-12-18 14:55
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢兄弟了!!
2013-12-19 14:02
0
游客
登录 | 注册 方可回帖
返回
//