能力值:
( LV4,RANK:50 )
2 楼
沙发~多谢分享!
能力值:
( LV2,RANK:10 )
3 楼
很基础,很通俗
能力值:
( LV3,RANK:20 )
4 楼
顶~~~~~
能力值:
( LV2,RANK:10 )
5 楼
入门级资料,不过值得支持了。
能力值:
( LV2,RANK:10 )
6 楼
Mark!
能力值:
( LV2,RANK:10 )
7 楼
再来个x64位下的hook呢
能力值:
( LV2,RANK:10 )
8 楼
好文章~~
能力值:
( LV2,RANK:10 )
9 楼
写的挺好的 楼主加油!顺便问一下VS2012 不装Visual Assist X有自动提示么
能力值:
( LV2,RANK:10 )
10 楼
瞬间感觉自己好弱啊,一个周末搞定了,我现在还没入门!!
能力值:
( LV2,RANK:10 )
11 楼
不错,支持个
能力值:
( LV2,RANK:10 )
12 楼
不错 支持
能力值:
( LV5,RANK:65 )
13 楼
标记一下
能力值:
( LV7,RANK:140 )
14 楼
hookon和hookoff不需要使用WriteProcessMemory,因为dll已经注入了目标进程,fadd的地址相当于本地地址,可以直接当作本地内存进行操作,比如*fadd=xxx 这样的,或者memcpy函数。
另外Inject里面也不需要内联汇编,一样的道理。
当然了并不是说你写的不对或者写的不好,而是交流一下其他的手法,操作本地内存可以更灵活
能力值:
( LV5,RANK:60 )
15 楼
学习了 谢谢
能力值:
( LV2,RANK:10 )
16 楼
完全看不懂不知道要如何才能正确的学习hook方面的知识
能力值:
( LV2,RANK:10 )
17 楼
楼主的复件也是牛了,还以为是源码
原来就是图
能力值:
( LV7,RANK:110 )
18 楼
楼主,你这HOOK程序,问题很严重啊!虽然能运行,但是你没看出有一个严重的问题么?你可以试试多线程频繁HOOK以及卸载HOOK的情况,你就会发现一个非常严重的后果!
能力值:
( LV7,RANK:110 )
19 楼
看你们学习HOOK的时候栽倒在我曾经栽倒的地方,真是不是滋味啊!
能力值:
( LV7,RANK:110 )
20 楼
yeyeshun
hookon和hookoff不需要使用WriteProcessMemory,因为dll已经注入了目标进程,fadd的地址相当于本地地址,可以直接当作本地内存进行操作,比如*fadd=xxx 这样的,或 ...
这个倒是其次,你没有发现,它没有处理多线程竞争么?按照它这调用方法,在多线程同时HOOK的时候就会出现一个线程在调用函数的时候,另外一个线程有可能正在进行HOOK,这是很危险的,WriteProcessMemory并不是线程同步的,还有,它没有对线程调用HOOK的函数进行调用次数统计,这个统计的作用是保证DLL模块在退出时所有的HOOK调用已经完成,当HOOK进行调用时,这个统计就加一,HOOK调用完成时,统计减一,如果模块需要退出,就检查HOOK调用统计,如果统计不为0,就让模块进入等待,直到调用统计为0为止!如果HOOK调用未完成,而模块又退出了,那么等待HOOK目标的后果就只有崩溃了
能力值:
( LV7,RANK:110 )
21 楼
yeyeshun
hookon和hookoff不需要使用WriteProcessMemory,因为dll已经注入了目标进程,fadd的地址相当于本地地址,可以直接当作本地内存进行操作,比如*fadd=xxx 这样的,或 ...
楼主,你的这个函数int WINAPI Myadd(int a, int b)
{
//截获了对add()的调用,我们给a,b都加上一定的数
a = a + 987;
b = b + 654;
HookOff();//关掉Myadd()钩子防止死循环
int ret;
ret = add(a, b);
HookOn();//开启Myadd()钩子
return ret;
}虽然可以防止钩子死循环 ,你这样调用却产生了一个多线程竞争的问题,要解决这个问题,你就不能这样关闭HOOK
能力值:
( LV7,RANK:140 )
22 楼
czcqq
楼主,你的这个函数int WINAPI Myadd(int a, int b)
{
//截获了对add()的调用,我们给a,b都加上一定的数
a = a + 987;
...
我思考了一下,发现我并不是楼主。。。
这些东西如果要写到完美的话还是很复杂的,我只是指出其中可以改进的一点而已。真正要使用的话,我选择minHook