首页
社区
课程
招聘
[原创]Anti HookAPI学习笔记
发表于: 2007-7-6 18:29 17691

[原创]Anti HookAPI学习笔记

zhuwg 活跃值
11
2007-7-6 18:29
17691

Anti HookAPI学习笔记
Hookapi分为2种,ring3 下挂钩 API 基本上也就是修改导入表,和Inline hook 修改前5个字节这几种方法,关于挂钩API 请参见:www.xfocus.net/articles/200403/681.html
部分引用如下:

这里对我们比较重要的是.idata部分的导入地址表(IAT)。这个部分包含了导入的相关信息和导入函数的地址。有一点很重要的是我们必须知道PE文件 是如何创建的。当在编程语言里间接调用任意API(这意味着我们是用函数的名字来调用它,而不是用它的地址),编译器并不直接把调用连接到模块,而是用 jmp指令连接调用到IAT,IAT在系统把进程调入内存时时会由进程载入器填满。这就是我们可以在两个不同版本的Windows里使用相同的二进制代码 的原因,虽然模块可能会加载到不同的地址。进程载入器会在程序代码里调用所使用的IAT里填入直接跳转的jmp指令。所以我们能在IAT里找到我们想要挂 钩的指定函数,我们就能很容易改变那里的jmp指令并重定向代码到我们的地址。完成之后每次调用都会执行我们的代码了。
77DB6F49 > 8BFF mov edi,edi
77DB6F4B . 55 push ebp
77DB6F4C . 8BEC mov ebp,esp
77DB6F4E . 51 push ecx
77DB6F4F . 53 push ebx
77DB6F50 . 33DB xor ebx,ebx
77DB6F52 . 817D 08 04000080 cmp dword ptr ss:[ebp+8],80000004
77DB6F59 . 895D FC mov dword ptr ss:[ebp-4],ebx
77DB6F5C . 0F84 B7020200 je ADVAPI32.77DD7219
77DB6F62 . 837D 10 01 cmp dword ptr ss:[ebp+10],1
77DB6F66 . 75 78 jnz short ADVAPI32.77DB6FE0
77DB6F68 . 395D 14 cmp dword ptr ss:[ebp+14],ebx
77DB6F6B . 74 73 je short ADVAPI32.77DB6FE0
77DB6F6D . 56 push esi
77DB6F6E . 8D45 FC lea eax,dword ptr ss:[ebp-4]
77DB6F71 . 50 push eax
77DB6F72 . FF75 08 push dword ptr ss:[ebp+8]
77DB6F75 . E8 46F9FEFF call ADVAPI32.77DA68C0
77DB6F7A . 8BF0 mov esi,eax
77DB6F7C . 3BF3 cmp esi,ebx
77DB6F7E . 8975 08 mov dword ptr ss:[ebp+8],esi
77DB6F81 . 0F84 96020200 je ADVAPI32.77DD721D
77DB6F87 . 8B45 14 mov eax,dword ptr ss:[ebp+14]
77DB6F8A . 8D50 01 lea edx,dword ptr ds:[eax+1]
77DB6F8D > 8A08 mov cl,byte ptr ds:[eax]
77DB6F8F . 40 inc eax
77DB6F90 . 3ACB cmp cl,bl
77DB6F92 .^ 75 F9 jnz short ADVAPI32.77DB6F8D
77DB6F94 . 2BC2 sub eax,edx
77DB6F96 . 57 push edi
77DB6F97 . 8D78 01 lea edi,dword ptr ds:[eax+1]
77DB6F9A . 8B45 0C mov eax,dword ptr ss:[ebp+C]
77DB6F9D . 3BC3 cmp eax,ebx
77DB6F9F . 0F85 80020200 jnz ADVAPI32.77DD7225
77DB6FA5 > 8975 10 mov dword ptr ss:[ebp+10],esi
77DB6FA8 > 57 push edi ; /BufSize
77DB6FA9 . FF75 14 push dword ptr ss:[ebp+14] ; |Buffer
77DB6FAC . 6A 01 push 1 ; |ValueType = REG_SZ
77DB6FAE . 53 push ebx ; |Reserved
77DB6FAF . 53 push ebx ; |ValueName
77DB6FB0 . FF75 10 push dword ptr ss:[ebp+10] ; |hKey
77DB6FB3 . E8 2F7CFFFF call ADVAPI32.RegSetValueExA ; \RegSetValueExA
77DB6FB8 . 8BF0 mov esi,eax
77DB6FBA . 8B45 10 mov eax,dword ptr ss:[ebp+10]
77DB6FBD . 3B45 08 cmp eax,dword ptr ss:[ebp+8]
77DB6FC0 . 0F85 7E020200 jnz ADVAPI32.77DD7244
77DB6FC6 > 5F pop edi
77DB6FC7 > 395D FC cmp dword ptr ss:[ebp-4],ebx
77DB6FCA . 0F85 81020200 jnz ADVAPI32.77DD7251
77DB6FD0 > 8BC6 mov eax,esi
77DB6FD2 . 5E pop esi
77DB6FD3 > 5B pop ebx
77DB6FD4 . C9 leave
77DB6FD5 . C2 1400 retn 14
7C8111DA > 64:A1 18000000 mov eax,dword ptr fs:[18]
7C8111E0 8B48 30 mov ecx,dword ptr ds:[eax+30]
7C8111E3 8B81 B0000000 mov eax,dword ptr ds:[ecx+B0]
7C8111E9 0FB791 AC000000 movzx edx,word ptr ds:[ecx+AC]
7C8111F0 83F0 FE xor eax,FFFFFFFE
7C8111F3 C1E0 0E shl eax,0E
7C8111F6 0BC2 or eax,edx
7C8111F8 C1E0 08 shl eax,8
7C8111FB 0B81 A8000000 or eax,dword ptr ds:[ecx+A8]
7C811201 C1E0 08 shl eax,8
7C811204 0B81 A4000000 or eax,dword ptr ds:[ecx+A4]
7C81120A C3 retn
7C809920 > 64:A1 18000000 mov eax,dword ptr fs:[18]
7C809926 8B40 20 mov eax,dword ptr ds:[eax+20]
7C809929 C3 retn

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

收藏
免费 8
支持
分享
最新回复 (14)
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
2
word格式得文档传上来一份 方便观看
上传的附件:
2007-7-6 18:30
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好文章,学习!!
2007-7-6 22:16
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持有word格式一起上传得!!!
2007-7-7 09:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
支持and学习
2007-7-16 05:50
0
雪    币: 243
活跃值: (205)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
6
呵呵,anti iat hook最好从dll文件读取真是入口地址,因为导出表也是可以被修改的,这个方法我用过效果不错:)
2007-7-16 11:35
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
7
太强了,有空再研究~~
2007-7-16 12:00
0
雪    币: 267
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看懂了才觉得的确是好文章...
2009-8-9 21:01
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
相当牛!!太厉害了。真是学无止境啊
2009-8-10 20:52
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我来学习了哦~~~~
2009-8-10 23:10
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不错。。在一定情况下有效
2009-11-26 15:33
0
雪    币: 175
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
休息中。,学习中
2010-3-28 23:17
0
雪    币: 656
活跃值: (448)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
13
不错..
2010-3-29 01:04
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
收益良多啊~~
2010-3-29 12:24
0
雪    币: 2
活跃值: (199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mark!!!!!!!!!!
2012-6-24 13:49
0
游客
登录 | 注册 方可回帖
返回
//