3、修改刷怪类型
再往下拉就找到刷怪代码了,一般每个战场都有多种刷怪模式,战场2比较特殊只有一个。可以看到这里被我改出了原版没有的动物犬。
介绍一下这四个区域:
地址区:每次读取程序都可能会变,这里的内容不能改。
二进制区:程序的真正内容(不光包括exe,也包括它运行需要依赖的dll),用记事本打开全是乱码的就是这些玩意,对非专业人士来说,天书,还没有标点。
反汇编区:x32dbg 翻译的汇编代码,我们主要改的是这个区域的内容。
注释区:x32dbg 生成的注释,不要试图改这个,没有任何用。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=8bbc10f94bf41bd5da53e8fc61db81a0/0cb070cf3bc79f3d0e7e13e2ffa1cd11708b29d7.jpg?tbpicau=2024-07-03-05_71b11682758e63a029b4a6d9efd271fe)
接下来我们试图把下面的 喽罗长枪新 也给改成 动物犬。选中 动物犬 那一行,按空格,把这条不明觉厉的玩意复制下来。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=a22e42e85cd8bc3ec60806c2b289a6c8/ffa42df5e0fe9925729e9e8271a85edf8fb171e4.jpg?tbpicau=2024-07-03-05_6ce66e03c31a1ce375ab00ef209bd154)
然后再选中下面的 喽罗长枪新,按空格,粘贴,确定。应该会看到下面这个结果。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=cb7775a706a98226b8c12b2fba80b97a/872ad933c895d1438df813f136f0820258af07e7.jpg?tbpicau=2024-07-03-05_08c47332cd46030d6f7f6e7fdcd7a98f)
这样就成功修改了刷怪类型。需要强调的是,同样是动物犬,这条不明觉厉的玩意每次打开也可能会变来变去,所以不要试图记录哪条代码对应哪个怪。
那如果我想要改成善翼呢?这附近没有善翼的代码啊,点上面标签里的引用,搜索字符串怪兽善翼,然后双击跳过去,空格复制,复制之后关掉小窗口,按键盘上的减号,就能跳回刚才的位置,粘贴。这样就改出了善翼。
善翼有好多种,无属性,金木水火土都有,这里笼统的“怪兽善翼”是随机刷其中一种。类似的设定还有“动物老虎”是随机刷小老虎,大老虎,白虎。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=1038c8d5c425bc312b5d01906ede8de7/7cb59b504fc2d562b8f8cdf6ba1190ef77c66c42.jpg?tbpicau=2024-07-03-05_058233499ae60019d65e8b77b6495359)
然后看上面的几个数值型参数,我来介绍一下它们都控制什么。
如下图所示是一个完整的刷怪函数调用。
push 0x63,阵营。在游戏中我们能观察到并非所有的敌人都处于同一阵营,秦兵和盗贼,动物和秦兵之间也会互相攻击,这个参数就是控制这个的。64是有血条NPC,你不打它它也不打你。63是上来就干,随机战场动物都是63。同一阵营的敌人不会互相攻击。
push 0xFFFFFFFF,勿动。
push esi,勿动。
push 0x67,刷怪位置,这个位置不是xy坐标,而是一个编号,真正的位置坐标是在其他地方定义的。
push 0x2,刷怪数量,这里要注意这个数值是16进制数值,如果超过10就要弄个进制转换器。
这样就能通过更改这几个参数更好地控制刷怪。比如我把push 0x2改成push 0x8,就能在这个位置刷出8条狗来。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=5db35ba6f4773912c4268569c8188675/61824bfbfbedab64a8ff50dbaa36afc378311ead.jpg?tbpicau=2024-07-03-05_14ae8ddb5fe177b0a8bac80605f725ab)