注册 | 登录

游侠NETSHOW论坛





查看: 1682|回复: 0
打印 上一主题 下一主题

[原创] 大航海家3海战船只霍尔克速度修改exe文件,用到8086汇编基础。 [复制链接]

帖子
22
精华
0
积分
12
金钱
142
荣誉
0
人气
8
评议
0
跳转到指定楼层
楼主
发表于 2020-5-13 02:53:15 |只看该作者 |倒序浏览
本帖最后由 维尔纳夫 于 2020-5-21 14:51 编辑

大航海家3 霍尔克船速加快汇编原理。
由于是修改exe,这样一劳永逸等于是个新的游戏了。
前言:
我玩了大航海家4,发现一点也不好玩,而且反复跳出,于是还是喜欢大航海家3,但是大航海家4也有他的优点:
1:海战霍尔克直线顺风航速是最快的(毕竟战舰嘛,而且三个大帆),这一点大航海家3没做好,导致霍尔克做海盗,始终追不上敌人的小船。
2:大航海家3后期托拉斯,会用到很多船只,但是船长会时不时退休,这样就变成了满地图找船长的游戏,降低体验,而大航海家4,船长不会退休,可以安心贸易。
于是,我利用汇编8086语言,直接修改了exe,一劳永逸,现在新增如下:
1:船长一旦退休,会自动补充一个新的船长,确保自动贸易不中断。(这个之后会开贴介绍
2:海战中,霍尔克的直线顺风条件下,船速最快,可以达到8节,其他的船,船速上限最快为6节;逆风条件下,霍尔克最慢,这样就和大航海家4一样了。



通过前期的排查(这个很复杂,不详细介绍了,就是断点跟踪法一步步发现具体指针位置),我们知道,大航海家3的海战速度是在
内存5771AF(对应exe文件的1771AF)这个地址的,
那么我们用winhex或者UE或者其他16进制编辑器都可以,打开大航海家3的exe。

第一步:准备工作,找空地盘!!!
我们发现
177142到17714F共14个90表示14个空的字节可以用
1773E2到1773EF共14个空字节可以用
177531到17753F共15个空字节可以用

第二步:比较船只类型的跳转
我们的思路是这样的,就是先找到海战读取的船只耐久度,然后判断船只是否是霍尔克,如果是,那么耐久度正常,如果不是霍尔克,那么
耐久度降为10%,这样霍尔克船速就上来了。
那么我们开始,
先找到1771AF这个地址。
也就是exe的1771AF这个位置,写入
EB 91 90 90 90 90
表示
现在我们要跳转到177142开始加入判断的语句(因为原本1771AF这个地址只留给你6个空字节,我要写这么多功能,肯定要借用其他空地方。
所以才借用了177142,正好有14个空字节可以借地盘,你不借他也是空着的)



第三步:


现在在177142这个位置开始写
1:比较舰种,
80 FA 03
(cmp dl 03
记住,dl里寄存的是船只种类的代码,00表示史耐克,01克雷尔,02克格,03霍尔克,这里我们和03对比。
注意,计算的可以在随便哪里模拟,但是跳转地址的,一定要实地模拟,不可改变模拟场所)
2:不等于霍尔克就跳转到177531
(jne 00177531)
0F 85 E6 03 00 00
3:是霍尔克的话跳转到1773E2
(jmp 001773E2)
E9 92 02 00 00

第四步:开始写非霍尔克的程序
现在在177531这个位置开始写
8B 56 18 D1 EA
0F AF C8
E9 77 FC FF FF 90(跳回1771B5,这个地址就是一开始我们跳出比较的后续地址,表示继续执行海战,很重要,所谓万物归原)
第五步:开始写霍尔克的程序(在1773E2这个位置开始写)
8B 56 18
0F AF C8
E9 C8 FD FF FF 90(跳回1771B5,和第四步一样)

至此,exe就修改好了,然后不用其他的修改器,直接进游戏,就是:
霍尔克顺风直线速度最快,可以追上克雷尔,逆风还是原来的样子,最慢0节,可以做海盗王了。
已有 1 人评分人气 收起 理由
小小旅行家 + 1 厉害了,我的哥

总评分: 人气 + 1   查看全部评分

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2024-4-20 13:34 , Processed in 0.324244 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到