写这篇文章,只是抛砖引玉,希望有更好的教程出现。前一段时间,捣鼓了下辅助,如是编写下了这个教程。本来做了个完整的辅助DEMO,奈何发布后就被删 ,在此就不发DEMO,只介绍方法与技巧。
好了,废话不说了,下面开始写正文:
1.寻找背包基址。
如果寻找背包?这个问题其实很简单,背包是一格格的,所以必然是一个数组或链表的形式。知道了此形式,那么懂编程的人必然知道该如何寻找了;在编程时,肯定会初始化,既然初始化,那么一般都会初始化为0。好了,知道了这些,那么就可以用CE来寻找了。
打开CE,附加游戏进程,以第一个格为例子,查找数据,规律如下:有物品大于0,没物品等于0。来回几次后,找到如下数据:
有两个,没关系,可以将地址+4+4来验证看是不是和对应物品能对应的上。点击手动添加地址,如图输入地址:
得到结果如下:
和背包对应,如下:
打开CE,点击如下图:
得到返汇编代码,如下图:
一般红框中的格式,就是背包的格式,其中EDI为背包基址,ebx为背包的第几个格,0x410为背包的偏移。随便找一个,点击显示反汇编,找到EDI的值,如下图:
背包的基址为 [0x02D1762C]. 打开OD,验证地址。在OD中输入[0x02D1762C] + ebx*4+0x410,得到如下数据:
看红线部分,和背包中有无物品对应,如下图:
没物品为0
查看物品详细数据,在OD中输入如下:
并右键点击如上图,就可查看当前物品的属性,如下:
通过以上,得到数据如下:背包物品访问地址:[ [0x02D1762C] + ebc*4+0x410],加上对应的偏移,ebx为背包位置。
2。寻找自动喝药CALL 寻找了背包基址,那么下面就可以还是寻找喝药CALL了。寻找喝药CALL有两种方法,一种是:OD附加进程,在物品数量出([ [0x02D1762C] + ebc*4+0x410] + 0xC44),下一硬件写入断点,然后吃药,查找对应的CALL(CTRL + F9,然后F8)回溯。由于使用物品,所以会有物品的位置,以此为出发点,寻找CALL。一般一到两层,会找到使用CALL。或者放入快捷键中,下断点,如果一下断点,就停止,那么此方法不可行。另一种是:使用万能CALL,在WSASend (吃药会发包)API下断点,回溯2到3次,找到CALL。
此处使用第二种,万能CALL,早WSASend出下断点, 用此方法,最终找到喝药CALL如下:
喝药的CALL
{
push 0x23
push 1
mov edi,0x02D1762C
mov edi,[edi]
mov ecx,dword ptr ds:[edi+0x1C10]
push ecx
mov ecx,edi
call 0x00804560
}
其中,EDI是背包基址(使用dd 0x02D1762C )可查看对应。push 0x23为物品位置 ,注入进程,修改 push 0x23,点击注入,那么可以看到,自动喝药了。
教程到这也就结束了,欢迎大家一起讨论。
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |