本期教程让我们找一下游戏的双击怀旧版的发包号以及游戏的喊话号。我先暂停一下游戏,都已经准备好了。然后我们可以使用OD(指示物定位器),先附加一下游戏进程,然后在反馈边窗口按下Ctrl+G输入WSA send。在这里要注意,前四个字符是大写的WSA,后面的send是小写的。然后点击OK进入。正常的话,我们在这个头部下断就可以了,但是这个游戏你发现下断断不下来,那我们就可以来到ES加64,这个是它的虚表的位置,在这里下一个断点。
如果像我这种立刻就断下来了,如果没有断的话就等一会,然后我们取消断点F7记录一下,可以记录一下,然后运行起来下一个断点,发现它立刻就断下了。然后我们可以看一下它这个地址,这个地址下的值是4351C30。再点一下运行变成B00,再点一下运行它就不断了,又断了。
B60什么东西?C30B零零。那这个C30和B00是什么呢?是他这个游戏的心跳,因为他这个游戏心跳不频繁,我们也不用去玻璃筛选了,就直接去用吧。现在下好断点了呢,我们点回车,输入一个123,然后取消这个断点,然后Ctrl加F有先返回,看一下右下角的对战,有没有我们这个喊话的内容呢?你看像这里,我们刚才进入这个虚表的位置,再返回,再返回,返回到这里,可以看到我的这种备注,这个就是他的一个铭文的发包。
这里有我们需要输入的一个喊话内容,123对吧?那这样的话,我们就找到了这个游戏的发包靠了。运行起来,在这里下一个断点啊,然后我们说一段话吧,然后说456,取消断点,然后Ctrl加F9返回。这里也可以点K啊,点这里的K看一下他这个对战。这里我就直接带着大家返回了。返回的时候,你不知道哪个才是正确的喊话code吧?那么我们就可以把这些都下一个断点啊,再返回下断点,返回下断点,再返回下断点,返回几次基本就差不多了啊。
这里我就返回到这,因为这个,你看这里我有个备注啊,是喊话号包括前面的,其实也能达到一个喊话的功能啊,这有就用这个为大家讲解了,因为这个比较简单嘛,就两条代码。那么我们就先把这些断点都给它取消掉,然后回到这个号的位置,这里我们复制保存一下,来到喊话靠了,在这里下一个断点,然后我们说喊一句话喊个111吧,断下之后呢,发现ES,他这个计时器传递的是一个地址,我们右键跟随到数据窗口啊,来到这个地址下,发现这有个313131,这很明显呢,就是他就是一个这个传递的制服啊,可以看到他传递的就是这个11,我们刚才喊话的内容啊,然后正常往下看呢,是看不出来什么的啊,我们往上看一下,减4的位置呢,有一个3,减8的位置也有一个3,那我们这个11的长度也是3。
那为了验证一下呢,我们运行起来再说一句话,可以说个123456对吧7,断一下,然后我们再来到这个位置,可以看到啊,这个1234567它的长度也是7,那说明什么呢?就是减4的位置,它传递的就是它的长度啊,然后就是加0的位置,就是说这个传递的地址呢,就是它的字符减8的位置呢,是固定值3啊,那么有了这些信息呢,我们就可以用这个代码注入器去验证一下我们找到的是否是正确的这个喊话号啊,先写一下啊。
然后靠一个靠地址是5B 8C 124啊。因为他这个啊牧夫ES嘛,ES传递的是一个地址啊,咱们可以用CE去搜索一下一段空白的这个地址,找到相连的啊,像这个5458啊,505458,这里把这三个地址双击下来,58给他转成这种字符的形式啊,然后咱们给他一个123123的长度是3,然后这里的固定值咱也传递是3对吧。运行起来,半截取消运行起来,然后在代码输入器这里传递的就可以是这个这个地址了啊,这个0S20058。
咱们附加一下游戏进程,点击输入,嗯,这里的水怎么变掉了,再注入一下啊,可以看到游戏里面已经喊话出来了123了啊,那说明咱们找到了这个正确的car。然后下面还有一个这个对EDR计算器清零的这个操作啊,不管他是什么吧,咱们先把他这个用上吧,无伤大雅。接下来呢,咱们可以再下一个断点,看一下这个中文制服,他传递的都是什么啊,比如说我用一个这个黑白来到这里,啊这个这里呢减8的位置还是一个固定值3,这里呢是4啊。说明什么呢?说明一个这个中文字符啊,他的长度是2啊,两个黑白两个字呢就是长度是4。
那有了这些信息呢,咱们就可以去用一语言去写一下这个喊号了啊,打开语言,然后咱们可以在启动窗口这里添加一个按钮,这叫喊话靠,然后来到程序集,在靠下面咱们可以添加一个指程序啊,先不管三七二十一,先给他写上,呃木府EX逗号,呃这里呢暂且咱们用地址啊,然后木嗯,然后是呃木府EBX啊,靠地址靠。地址是什么呢?啊然后咱们再去call一下EBX,这样就OK了啊。现在唯一的问题呢其他都是不变的,现在唯一的问题呢就是咱们这个地址给他怎么传递。
首先,我们需要申请一段内存。我们可以先插入一个局部变量,命名为ADR。然后,声明一个整数型变量,大小为500。我们申请内存的首地址(ADDR)等于这个内存的首地址。但是在这里,如果直接传递ADR的话,减4和减8的位置就不好写。所以我们先写上进程ID,然后地址就是ADR,接着给上这个值,这个值。。制服。我想想,这么写直接传递的话,它直接传递ADR的位置,正常的话,因为ADR是局部变量,所以就是BP减4的局部变量。
但是,直接这么传递的话,因为这已经是地址了,减4和减8就没法表达了。所以我们可以用加8,然后再写,整数写,ADDR这个是固定字3,加4这里是它的长度,我们就用取文本长度,然后给上这个制服,取这个制服的长度就OK了。这样的话,在这里,首先,目BEX传递的是ADDR,这里还需要加一条ADDEX,逗号8。首先这一条,move EX,EBP减4传递的是申请内存地址的这个首地址,加8就是字符的位置,所以我们这里正常传递的应该是字符。所以就把这个ES的地址再加上一个8。
看一下正不正确啊,然后都写完了,没问题。然后我们把这段转成支付代码的形式,在这里喊一下话,然后还有黑白1234。然后我们把游戏下掉,先编译一下,编译放到游戏的根部。这里我先暂停上一下游戏,然后按home退出一下,点击一下这个喊话靠,可以看到成功喊话了,黑白1234,这是我们这个输出的制服输入的内容。这样的话,我们就把这个发包和喊话都找完了,也写完了。看一下还有什么,没有什么了,本期教程就到这里。
标题:页游外挂开发教程07:发包和喊话CALL
链接:https://www.ltthb.com/news/xydt/121549.html
版权:文章转载自网络,如有侵权,请联系删除!