Mines 发表于 2014-10-4 12:54

易语言之 HOOK的艺术

本帖最后由 Mines 于 2014-10-5 17:20 编辑

看大家学得都挺不错了。插花一个高级教程!
问:什么是HOOK?
            答:HOOK 钩子,挂接的意思!可以用来拦截任何程序的任何动作!
             大家都知道,程序代码是按流程向下走的!把代码比作一条直的大路!HOOK就是警察!你在走这条路的时候本来应该直走的, 可是遇到警察,你就要停下来,做一些事情,警察会把你要做的一些事情全部问清楚,然后决定是让你继续走泥,还是返回!
HOOK大概就是这样的意思,他把程序中的某个地方拦截下来,跳到你设定的子程序中,可以按你的意思,想拦截或 不拦截,取数据,参数,都可以!

问:HOOK能做什么?

答:HOOK能做的事可多了,而且特别的好玩!
比如:我们在调试逆向的时候,经常需要断点,其实那也是一种钩子让程序暂停下来,跳转到处理事件中,你可以决定让他继续,还是返回,每一个操作都被HOOK了,就像警察,你每走一步,都都要问你干嘛一样。。


我们用过拦截关机之类的软件吧,它就是HOOK了系统关机函数,判断参数后,决定要不要关机,当然可以把参数直接修改成不关机,让他的操作无效!
之前写过一个HOOK补丁不知道大家用过没,原理就是在程序加载时,让程序先不要运行,等我们写完数据再运行!
比如:XX验证,可以用OD修改PUSH XXXX来载入另一个窗口,如果在程序运行后再写,那肯定不行,那时候PUSH XXXXX窗口已经运行过了,你再写补丁有毛用?HOOK补丁就是在程序加载前拦截一些最先加载的API函数(在PUSH XXXX未运行到这里时),来提前写入补丁数据!而且不用脱壳!所以脱不脱壳都能PJ!没必要纠结壳了。。。回头给大家开源!自己写自己的补丁工具 当然全是用易语言写的

下边简一个简单的 信息框Hook,我们常用的信息框函数是MessageBoxA这个函数用百度或MSDN查一下,这个函数的参数!有四个参数,我们用CE看下他的内存,跳到函数头部,输入MessageBox就可以跳到这里了!你不必去理会CE怎么用,你可以使用OD,来查看他的内存,我们现在就来拦截他!
这是拦截前的内存!

这是HOOK前与后的对比!HOOK后被jmp到我们的子程序里边了!处理完再运行回来,否则会出错!下边贴出源码大家研究下!

像我们平常逆向时,下的ini,注册表,读文件的断点,可以用此方法来HOOK,这样就可以知道他读的哪里的注册表,读哪里的文件了,什么方式验证了。

比如:在逆向的时候你需要肉眼去判断,这个文件是验证注册表泥,还是读ini泥?当然,用HOOK可以拦截程序的这些操作并记录下来,我们可以把逆向常用的这些验证方式,给他HOOK,记录下来作为逆向的第一步知道他是什么样的验证!下边交给OD就行了!给逆向带来数不清的便捷!
另外:杀毒软件也是HOOK他把木马病毒有可能的操作拦截下来,判断是不是危险操作!如果危险就拦截。
再比如:游戏的保护系统HOOK写内存操作,让你无法写内存!都是HOOK,看吧HOOK有多神奇!{:6_144:}


zx2cwf 发表于 2014-10-4 13:17

沙发是我的   膜拜mines   跟你一起学易语言{:5_116:}

能隐能显 发表于 2014-10-4 13:39

学习了!!

王婆卖瓜 发表于 2014-10-4 13:59

太厉害了

先森 发表于 2014-10-4 14:43

牛逼 {:6_156:}

Shark恒 发表于 2014-10-4 14:46

霸气的伴侣~ 大家瞬间进入学习状态!

轮回 发表于 2014-10-4 23:37

学习了,很不错的东西

王尼玛 发表于 2014-10-5 17:06

感谢你的分享

王尼玛 发表于 2014-10-5 22:18

膜拜mines   跟你一起学易语言

海东 发表于 2014-10-7 07:27

顶起,有时间来学!
页: [1] 2 3 4 5 6
查看完整版本: 易语言之 HOOK的艺术