Single

真封神引擎逆向-添加传送点

[striped]35%[/striped]

首先我们要知道,有些传送点是需要特定NPC的,比如各主城之间的传送,但是有些传送是不需要特定NPC的,这些传送点多是后来添加修改,限制比较少,本次教程也是针对这样限制少的传送点来完成的。首先我们要知道,这些没有限制的传送地址一般在5AB350之后,下面我直接跳到5AB350看看。

看到旁边的注释了吧,ASCII码是留在客户端的接口,通过命令可以调用,下面我添加注释,帮助大家理解一下这端代码的含义

这一段,就是一个传送,下面给大家详细解释一下。

第一行,mov edi,0x533E90 这里呢,是把数据段533E90的开始的内容存放到edi里,让我们来看看533E90里是什么,

可以看到,我们的传送命令是放在这里的,所以我们要自己加传送的时候,需要在数据段选一处空白,写上自己的传送指令,然后用mov命令传送到edi。

接下来看mov ecx,0xF 这一句,这一句是传入命令的长度,比如 movetofenghong,这条命令是十四个字节,后面有一个空位,F转换为十进制是15,也就是说他会接受15个字节的传送指令,有人说那就全部设置15字节就好了,但是有些传送指令并没有那么长,而且太长浪费空间,所以我们要根据实际情况来写这个命令的长度,比如我的传送命令是movetobaimomo,长度是十三个字节,但是我给ecx赋值时,写了mov ecx,0xA,也就是说我接受十字节的指令,这样的话,我在客户端写movetobaim就可以执行传送指令,当然,movetobaimomo也是生效的,他会自动只读入前十字节,但是反过来,十字节的命令,你写十五字节的长度,如果数据段后面有其他内容,那就会读其他内容,你的传送指令就废了,废话这么多,这一段看不懂不要紧,写传送记得长度对应上就行了,最安全、也节省空间。

jnz short 005AB39A,这一句,是跳转到下一个段传送代码,传送代码是从给edi赋值开始的,所以这一句是要跳到下一个传送的开头的地址。

mov dword ptr ss:[esp+0x14],0x1E,这里的0x1E是一个立即数,是一个常量,他是传送消耗的声望数,通过修改0X1E可以调整传送消耗的声望点。

mov dword ptr ss:[esp+0x30],0xA7BC,这一句是把传送点的X坐标存进地址,这里的X坐标需要转换,先把游戏里的X坐标乘20,之后转换为16进制就好了,注意有些坐标的负号。

Y坐标同理,不多赘述。

jmp 00469C4B,这一句是跳转到真正指向传送的代码段,你不需要理解,照抄上一个传送的就可以,只要把这些参数传进去就可以传送了,如果想更深入了解,请关注下期教程。

暂无评论

发表评论