实用代码:【源码下载】类:CVBAPIHooker —— 可以让你事件化处理API拦截的类
【源码下载地址】:http://60.191.21.235:1122/vbapihooker.rar
使用这个类可以很方便的拦截并处理目标进程中的导入api函数……
问题点数:0、回复次数:19Top
1 楼online(龙卷风V4.0--决战江湖(MS MVP-VB))回复于 2005-04-01 00:48:43 得分 0
1Top
2 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2005-04-01 00:56:12 得分 0
下面是拦截api后跳转到的汇编代码,其中0x11223344代表的是在目标进程中所分配内存段的起始地址……
这是每个api都不同的小代码段,主要功能是写入api钩子的序号
tinystub:
mov eax,0x11223344
mov dword ptr [eax+0x18],1 //APIHOOKID
jmp dword ptr stub //跳转到
这个是每个api最终都要到达的地方,主要功能么当然就是api拦截的主要工作咯
stub:
mov eax,0x11223344
pop ebx
mov [eax+0x44],ebx
pop eax
push ebp
mov ebp,0x11223344
mov [ebp+0x44],eax
cmp dword ptr [ebp+0xC],0
jnz beforecall //已经有sendmessage的地址则跳转
lea eax,[ebp+0x30]
push eax
call dword ptr [ebp+0x0] //call getmodulehandle
cmp eax,0
jnz getsendmsg //已经有User32在内存中则跳转
lea edi,[ebp+0x30]
push edi
call dword ptr [ebp+0x4] //call loadlibrary
getsendmsg:
lea edi,[ebp+0x37]
push edi
push eax
call dword ptr [ebp+0x8] //call getprocaddress
mov [ebp+0xC],eax
beforeaction:
mov [ebp+0x14],esp
//-----------------------------------
/* current process */
push 0x11
push 0x123456//lpthis
call dword ptr [id]//call callproc
//-----------------------------------
//-----------------------------------
/* other process */
push 0
push 0x11
push [ebp+0x28]//msg
push [ebp+0x24]//hwnd
call dword ptr [ebp+0xC] //sendmessage
mov [ebp+0x1C],1
loop1:
cmp [ebp+0x1C],1
jz loop1
//-----------------------------------
xor eax,eax
cmp [ebp+0x20],1 //check block flag
jz blockcall
pop ebp
mov edi,0x11223344
call dword ptr [edi+0x10]//addr
push ebp
mov ebp,0x11223344
jmp afteraction
blockcall:
mov edi,[ebp+0x50]
mov eax,[esp]
lea esp,[esp+edi*4+4]
push eax
xor eax,eax
afteraction:
lea edi,[ebp+0x2C]
mov [edi],eax
//-----------------------------------
/* current process */
push 0x22
push 0x123456//lpthis
call dword ptr [id]//call callproc
//-----------------------------------
//-----------------------------------
/* other process */
push 0
push 0x22
push [ebp+0x28]//msg
push [ebp+0x24]//hwnd
call dword ptr [ebp+0xC] //sendmessage
mov [ebp+0x1C],1
loop2:
cmp [ebp+0x1C],1
jz loop2
//-----------------------------------
mov eax,[ebp+0x2C]
pop ebp
mov edi,0x11223344
push [edi+44]
ret
注:我汇编学的不好,所以写的代码在懂汇编的人看起来可能会有很多多余的地方……不过,我是懒猪,只求功能正常就好,嘿嘿~~
Top
3 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2005-04-01 00:57:41 得分 0
哎呀,写错了……
jnz beforecall //已经有sendmessage的地址则跳转
应该是
jnz beforeaction //已经有sendmessage的地址则跳转
阿门~~Top
4 楼boywhp()回复于 2005-04-01 07:38:19 得分 0
我靠!N人出来拉!!!Top
5 楼rainstormmaster(暴风雨 v2.0)回复于 2005-04-01 07:54:42 得分 0
5Top
6 楼boywhp()回复于 2005-04-01 08:03:50 得分 0
大虾!收我为徒吧!我很有潜力的!
rainstormmaster(暴风雨 v2.0)
supergreenbean(超级绿豆 - 要准备发芽了)
QQ:343435488
EMail:Boywhp@126.comTop
7 楼pxb0420(三疯幽幽)回复于 2005-04-01 08:27:53 得分 0
还没看程序,一看汇编就是不一般了,以后你回答的问题要好好看看了.Top
8 楼tanaya(唐博士http://blog.csdn.net/tanaya)回复于 2005-04-01 09:14:15 得分 0
顶,超级upTop
9 楼jlum99(闲人)回复于 2005-04-01 09:22:59 得分 0
markTop
10 楼roger_xiong(卖女孩的小火柴~)回复于 2005-04-01 09:46:33 得分 0
我顶~~~Top
11 楼KaKaMo(无级)回复于 2005-04-01 11:48:31 得分 0
楼主太棒了!偶喜欢,顶!Top
12 楼tztz520(午夜逛街)回复于 2005-04-01 11:52:20 得分 0
豆子犀利Top
13 楼qyii(劳心劳力)回复于 2005-04-02 13:33:26 得分 0
哦?是吗?啊,那好!嗯...行,行,行!好的,谢谢了!呵呵~Top
14 楼dongge2000(目前叫西西了)回复于 2005-04-02 14:08:29 得分 0
哇!老大酷哦!Top
15 楼eglic(圪圪) (理由永远是谎言,信仰永远是自慰)回复于 2005-04-02 14:15:22 得分 0
强,学习Top
16 楼boyzhang(张郎)(爱你爱到Windows没BUG的那天)回复于 2005-04-02 15:23:35 得分 0
豆子又出山了!
好呀! :)Top
17 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2005-04-07 16:01:16 得分 0
往包里加入了一个更加详细的使用例子……还有野猪,hoho~~~~~Top
18 楼galanz(微小就是永恒)回复于 2005-04-07 16:05:00 得分 0
1Top
19 楼bob008(冻冬)回复于 2005-04-08 03:37:30 得分 0
我喜欢吃豆子哦,加偶,偶来拜师,要不成立个VB豆子帮让你当老大,偶当小流氓也行
QQ:13841047Top




