lenvr 发表于 2023-3-22 19:15

软件破解逆向安全之初识HOOK

什么是HOOK?这是逆向工程里的一个大块,我在这里几句话是一定说不清楚的,如果大家想深入了解,可以去学习一下。我这里简单说一下,hook,中文就是钩子的意思,简单理解为勾住一切事物,来实现我们想要的功能。

外挂中的体现:实时读取数据(例如坐标),修改数据,不执行某处代码,过检测等等。


HOOK的方式可以分为:


直接修改,间接修改(找到空白地址写入自己想要执行的数据,原地址的区域做跳转,空白地址出跳转),直接修改。


接下来我们还是通过植物大战僵尸作为今天的实例,我们要做的是种植物而不掉阳光。


首先我们通过ce找出阳光的第一层偏移

我们看一下阳光减少什么访问了这个地址,

之前说过mov esi,[]是非常值得我们关注的地方,看一下地址

之前说过mov esi,[]是非常值得我们关注的地方,看一下地址

到OD里去跟踪427681这个地址看看附近是什么样的代码。

我们可以看到我们把阳光的值给了esi,然后进行了个比较,这个应该是判断阳光的值够不够买植物,如果够,下面的sub就是减少阳光,所以我们要hook此处,这里直接给nop掉就好。
我么种植物去试试

这样我们就实现了种植植物不减阳光了,哈哈哈哈哈。

除了这种方式,我们还可以修改内存地址数据或者远程汇编方式进行HOOK,接下来大家可以试试hook增加阳光100,动起手来非常有意思的。

接下来我们通过间接修改来实现一击必杀,原理就是修改数据。

我们先了解一下在游戏中对象的概念。在游戏里,很多物体都可以叫做一个对象,一个人,一个武器都可以。我们实现一击必杀的原理是什么呢?可以改枪械的威力,对象的血量,或者对象受到攻击的位置,不同游戏描述可能不一样但是原理都是一样的。

再次请出我们的受害者植物大战僵尸,我们这回要先找到对象(这里是僵尸)血量发生变化的滴地方,搜索到时候我们是这个思路,植物打到搜减少,没打到搜不变,僵尸血量应该在0-1000之间,我们不断去搜索一下


最后发现了这个,观察了一下,很明显最后一个是僵尸的血量,每次豌豆打会掉20血。我们接着去看看什么地方访问了这个地址。

发现有很多,我们记录一下这里的地址,去od里看看那里可以进行HOOK。我们可以猜测一下减血的代码,应该是先一个sub,然后一个mov赋值,看看能不能找到。跟进第一个地址:发现不是很像我们的猜测,也没什么好改的,看下一个,也没什么,但我们看到54d0c4的时候发现不一般。发现和我们想象的差不多啊,我们在这里下个断点,看看各个寄存器的值是什么。植物快打到僵尸的时候断了下来看下面可以知道,减数是20,被减数是110,很明显是豌豆的攻击力和僵尸血量,下面call上面的mov就是把血量赋值给对象,这样我们一击必杀的思路就有了,直接hook54d0ba地址,赋值直接给0。这时候我们可能就会想直接把ebp改成0,你可以试试改了之后的效果,程序会直接崩掉。所以我们这里需要简介hook,找到一个00 00 00 00。。。的地址空间,我们在那里进行0的赋值,跳到那里再跳回来,这样就实现了我们的hook。我们在这里找到一块,先把54d0ba处的代码改为jmp 此处,然后我们把mov dword ptr ds:,0写到这里,再写一个jmp 54d0ba下面自动填充nop的地址,这样我们就已经hook完成了



接下来我们试试是不是碰一下僵尸就死。这样就成功了,哈哈哈哈哈。

我们也许会有这样一个疑问,我们只改了一个僵尸的地方为什么全部的僵尸全是一击必杀呢?因为我们改的是一个对象,而所有的僵尸在游戏里都是一个对象,都要经过这一块的代码处理,所以我们改了一处就相当于改了所有的僵尸。

我们注重的是原理,理解了植物大战僵尸,其他的游戏也都是差不多的,多多练习,我们有一天会驰骋于游戏之中的,当然这不是我们的目的。




wjxlr 发表于 2023-3-23 11:09

楼主高明!学习了

adog 发表于 2023-3-23 12:13

学习学习

Bob5230 发表于 2023-3-23 12:39

感谢分享学习一下

face713 发表于 2023-3-23 14:41

谢谢楼主,这个方法好用

newbbq 发表于 2023-3-23 20:31

好难啊,没有汇编基础,哭

jjghaa1234 发表于 2023-3-23 21:14

感谢楼主分享,深刻学习

ilovn 发表于 2023-3-23 23:33

感谢楼主分享,深刻学习

ola5656 发表于 2023-3-24 01:05

踩坑...等有时间了就来学习下

zerofire 发表于 2023-3-24 09:46

学习了,网上系统学习的资料多数是收费的~
页: [1] 2 3
查看完整版本: 软件破解逆向安全之初识HOOK