【干货】《GTAOL》外挂开发教程05:Hook发包内容(中)

文摘   时事   2025-01-02 00:11   广西  
本期教程继续带领大家看啊,就是说,因为这个游戏它没有加密,所以我们可以在铭文包下端对sin函数进行操作,因为它没有加密嘛。
在别的游戏的时候,你要具体看你的需求,看你要在哪里下手才能截取到合适的内容。并且现在我们是在WS2这个模块里面的sin函数,这个模块可能因为系统版本不同而有所差异,哪怕大家都是Win10,这里也可能不一样。所以你需要具体看,只有真正把本期教程看懂了,自己做出来了,这样你才能换电脑,你才能搞得顺利。所以本期教程很重要啊。
我们就开干吧。首先,我们要hook它,对吧?我们来触发这个按钮,看看我们hook是怎么实现的。我这个是我们自己创建的一个函数,创建了一个空的函数壳子,表示我们这是一个空的函数系统,不会去帮我们平对战,不会帮我们保存寄存器,什么也不会干。就是说,全靠我们自己来干好。了解了这一点之后,我们让它转化成DIOR的类型,然后我们给它创建了一个底word,它就是我们的函数地址。
首先,我们用这个我们自己随便创建的一个函数的地址减去hook地址。那么,hook地址是怎么来的呢?Hook地址就是我们想在哪里进行hook的地方。比如说,我们想在这里hook,那这里就是771B5A或者5V,对吧?实际上,因为这个游戏是一个动态模块句柄,也就是说它是模块句柄加上一个偏移。而且这个偏移因为系统版本不同,这个DIO就会有所不同。所以,你可能换了系统、换了电脑,这个东西也不一定好使,你要自己去学会更新,拿计算机算一下,相信这个就不用我教了。
然后,再减去一个5,就是我们的跳转值,就是我们的一个跳转值。怎么来跟大家说这个事情呢?就是说我们要跳转到哪里去,我们要跳转到哪里去,就是这样算出来的。用我们现在的这个地址减去一个我们的函数的首地址,然后再减去一个,就是说就会是我们要跳转的一个地方,也就是这里跳转的一个值,就是它就是这个值。或者说呢,就是说我们应该是从硬编码这边来看,应该说是这边的值,E8表示的是com,我们跳过去跳到哪,跳到这个值。这个值怎么来的呢?就是这样算出来的啊,就是这样算出来的。
然后,我们需要用到这样一个函数,这个函数是什么意思呢?这是一个Windows API,它的功能就是确保你这个地方是可以写入的,你是有权限的,不然的话你有可能会修改失败,对吧?百度一下,我们来看一下,变更认可页面区域上的保护,变更这个保护就是确保你可以把它改变掉。然后,这个是我们要改变的地址,然后这后面的100个字节都是我们有可能会改变的,这里是用来存放之前的东西的,我们就先不管它,就是说你运行完了之后,他用O的,把这个你改变之前的东西给他存起来,然后呢,你看这后面还有还原,你改变了之后呢,再给你还原回来,把那个保护还原回来,这样就相当于啥,也就是说,把它还原回来嘛。
那我们怎么来改呢?因为我们知道它是一个六字节的,我们之前应该是我把它还原回来啊,我把它还原回来,这是咱们之前的状态是这样的,六个字节。
那我们把他的hook地址,也就是第一个5A的这个地方,8B变成E8,对吧?然后呢,他这个是byte的,对吧?我们改的是BYTE的,是改的是一个字节,对吧?后面呢,我们把五个字节连起来,五个用的是DWORD型四字节,对吧?然后呢,我们这个地址呢需要加一,因为第一个字节是一八已经被用掉了,对不对?那我们这后面的四个字节,是不是要把跳转值附进来,对吧?嗯,我们是六个字节,你这样才用掉了五个字节。
那它的最后一个这个七七怎么办?如果你只改了五个字节,那他这个七七就会跑到下面来,和331起就会形成新的命令了,那你这样肯定就会崩掉了,对不对?所以呢,我需要把七七也复制。大家可能说我把它复制成0000也是不对的啊,000也是不对的啊,零零它也是个命令,你必须要把它复制成九零啊,在这个汇编当中,九零他的意思是NOP掉,就是说跳过这一行的意思啊。所以说我们给他了一个九零,那实现的效果呢就是这样的啊。
我们hook一下,这样呢它就变成一个call去call到这个地址了,然后呢这里就是一个NOP,空了一个NOP,这一行是跳过的,嗯。我们进入这个框呢,然后再出来,还是会继续执行那些功能好。
那我们这一块讲完了,我们是不是要去讲一下这个call里面我们要去做什么事情,对吧?进入call里面要去做什么事情。这个我们还是要分几期教程来讲吧,如果一期教程写太多了,怕大家有点吸收不过来。大家先把刚刚讲的这个流程先执行下来,然后呢同时大家也去思考一下,就是说我们这里下段,对吧,我们得到的这个,就是他的包地址和包查,它我们现在看他是在加C和加八的地方,那我们一步步的运行,运行进来,我们可以看到我们把push d执行完了之后,我们自己不是画写了一个push d吗?我们需要把寄存器的内容,八个寄存器全部铺设进来,那这个push肯定会影响对战的呀,对吧?
我们把这个八个寄存器push了之后啊,那我们需要我们的ESP,就是说我们的包地址和包查是ESP加多少了呢,肯定不是一开始我们刚进来的那个值了,对不对?那大家需要算一下啊,大家先自己尝试一下,然后呢我们下期教程接着讲,这里具体为什么它是加4C,为什么是加五零。那本期教程就到这里。

暮色的狐
这是一只高强度上网冲浪、高质量输出内容的狐狸。主打ACGN杂谈、技术干货分享、第九艺术鉴赏、网梗百科解析、情感树洞鸡汤、正能量价值观~
 最新文章