标题: 曹操传exe修改器
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-8 22:33 资料 主页 文集 短消息 只看该作者
曹操传exe修改器

所谓的曹操传exe修改器其实只有十五个功能。


附件: Ekd5exe.rar (2005-6-8 22:33, 23.1 K)
该附件被下载次数 13750


精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-16 20:47 资料 主页 文集 短消息 只看该作者
一、破浪履
修改的不是破浪履这个宝物本身,而是恶路移动这个特殊效果。把破浪履的特殊效果指定为恶路移动,是在data中完成的;而恶路移动有什么特点,才是在exe文件中进行说明的。

新增功能:
1.除大河、浅滩、沼泽,其余不利地形照样多消耗机动力。
2.大河加成120%,浅滩110%,沼泽100%
3.在大河上不坐船
4.宝物说明“恶路移动”改为“凌波微步”


精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-16 20:48 资料 主页 文集 短消息 只看该作者
二、战场人物形象

改动一览:
1.所有兵种的普通形象都指向不同的图片。
2.缩减了三转个数,对于一转个数不封顶,但图片总数不得超过255。
3.特殊形象06根据兵种来判断,群雄至西凉骑兵是155,骑马策士至铁锤骑兵是156。
4.普通形象由1E改为00。
5.前174个人物的形象指定地址在5F16~5FC3。

空闲区域:5FC4~6186,共1C3字节。

普通形象、特殊形象与图片的具体对应关系在此:
My Webpage
精华帖
顶部
性别:未知-离线 世说新语

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 67
编号 39403
注册 2005-5-22


发表于 2005-6-16 22:33 资料 主页 短消息 只看该作者
为什么我用了战场人物形象补丁后就不能进入战场了?
一旦进入就说错误……
能不能给个使用说明什么的?
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-16 23:44 资料 主页 文集 短消息 只看该作者
曹操传的图片只有151个,而我这个补丁里面用了很多151以后的图片,都是需要自己往三个战场文件里面添加才能用的。否则形象不足,自然会报错了。
精华帖
顶部
性别:未知-离线 世说新语

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 67
编号 39403
注册 2005-5-22


发表于 2005-6-17 00:18 资料 主页 短消息 只看该作者


QUOTE:
原帖由周瑜于2005-06-16, 23:44:42发表
曹操传的图片只有151个,而我这个补丁里面用了很多151以后的图片,都是需要自己往三个战场文件里面添加才能用的。否则形象不足,自然会报错了。

那么,如周郎所说,现在需要174个战场形象才能进入游戏的话……
怎么往三个战场文件里面添加战场人物形象呢?

这个实在是不知道……
所以问一下,应该不算灌水吧……
精华帖
顶部
性别:男-离线 peacockwang

Rank: 7Rank: 7Rank: 7Rank: 7
组别 羽林都尉
级别 破虏将军
好贴 1
功绩 75
帖子 776
编号 30530
注册 2005-1-18
来自 秦——长安
家族 轩辕学院


发表于 2005-6-17 08:38 资料 文集 短消息 只看该作者
去幽人兄的网络硬盘下载图片添加工具
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-18 10:21 资料 主页 文集 短消息 只看该作者
三、兵种改动

改动一览:
1.拐子马对除步兵和拐子马以外所有兵种伤害加成为125%。
2.弓兵、弓骑、炮车对拐子马的伤害加成为60%。
3.步兵对拐子马的伤害加成为150%。
4.金锤骑兵和铜锤骑兵的30%策略附加伤害取消,西凉骑兵、驯熊师、驯虎师不变。

空闲区域:3B27C~3B297,共1C字节。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-18 15:42 资料 主页 文集 短消息 只看该作者
四、装备辅助道具:

改动一览:
1.骑马策士单向接受所有贼兵可装备的辅助道具,避免牛皋变更兵种时发生装备不匹配现象。
2.四锤骑兵均可装备特殊效果为“致命一击攻击”的辅助道具。

空闲区域:6DAE~6DC2,共15字节。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-18 23:24 资料 主页 文集 短消息 只看该作者
五、穿云箭

说明:运行本补丁之前,必须先运行第四项——装备辅助道具。

改动一览:
1.所有具有“辅助风类策略”特殊效果的宝物,同时具有远距攻击的效果。攻击范围为原没羽箭范围,特殊效果值仍然控制风系策略加强的百分比。
2.将策略效果说明“辅助风类策略”改为“掌控风的力量”。

空闲区域:利用了第四项中6DAE~6DC0的空闲区域,剩余60C1~60C2,共02字节忽略不计。
精华帖
顶部
性别:未知-离线 冰火蝴蝶

紫蘅公主

Rank: 13Rank: 13Rank: 13Rank: 13
组别 翰林学士
级别 平西将军
功绩 303
帖子 2269
编号 5287
注册 2004-2-13


发表于 2005-6-18 23:28 资料 主页 文集 短消息 只看该作者
被捉来顶帖子

upup
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-19 10:49 资料 主页 文集 短消息 只看该作者
To 蝴蝶mm:即使是灌水,也照样献花一朵  以后可要多来支持哟。

To 幽人:只需要比较使用补丁前后的应用程序,找到不同之处在反汇编代码中的对应位置,就可以看见我写的全部代码,所以没有必要贴上来。每一功能大约修改了100字节左右,贴上来的话会比较多,如果再逐条解说,可能会比写代码本身的时间还长。


六、可装备的部队

说明:本补丁借用eXeScope对资源的修改,增大了原exe文件512字节。使用时请注意只能对同一个应用程序使用一次,否则将不可恢复的损坏此应用程序。

改动一览:
1.把我军出现的所有兵种显示在“可装备的部队”列表中。
2.四个锤骑兵由于武器、防具、辅助均相同,合并起来以节省地方。
3.与曹操传类似,把防具为铠甲和衣服的职业分别集中在上下。
精华帖
顶部
性别:未知-离线 BT土偶

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 2
帖子 202
编号 31017
注册 2005-1-24


发表于 2005-6-19 13:23 资料 短消息 只看该作者


QUOTE:
原帖由周瑜于2005-06-08, 22:33:42发表
所谓的曹操传exe修改器其实只有六个功能。

请问我能否用这修改器修改《说岳》以外的MOD並發表?
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-19 14:53 资料 主页 文集 短消息 只看该作者
To BT土偶:我的修改器是在众人研究的基础之上制作出来的,并非不传之密,当然大家都可以使用。不过由于其功能是为说岳定制的,在其他MOD中可能不适用,使用时还请斟酌。


七、百分数

说明:运行本补丁之前,必须先运行第三项——兵种改动。

改动一览:
1.道具特殊效果“每回合恢复HP”和“节省MP”原为分数,改为百分数。其中“节省MP”指的是节省的MP占应该消耗MP的百分比。
2.“辅助获得Exp”原为十分数,改为百分数,指的的增加的经验而不是总经验占应得经验的百分比。
3.修改许多策略效果说明的数据表示,不一一列举。

空闲区域:利用了第三项中3B27C~3B294的空闲区域,剩余3B295~3B297,共03字节忽略不计。产生66DC-66FB的空闲区域,共20字节。
精华帖
顶部
性别:未知-离线 世说新语

Rank: 2Rank: 2
组别 百姓
级别 破贼校尉
功绩 1
帖子 67
编号 39403
注册 2005-5-22


发表于 2005-6-19 17:08 资料 主页 短消息 只看该作者
啊……
不能适用啊……
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-20 14:40 资料 主页 文集 短消息 只看该作者
八、气合

说明:运行本补丁之前,必须先运行第二项——战场人物形象。

改动一览:
1.

QUOTE:
3F450 气合加攻击还是精神 00-02
       依次是策士、风水、道、马策、舞、西凉、黄巾、海盗、熊、虎、都督、咒术、仙人
       00和01表示加精神(不明白为什么要分成两个) 02表示加武力

改为:3F421起1B字节,控制所有职业气合时加攻击还是精神,00表示都加,01表示加精神,02表示加攻击

2.设置铁滑车等加攻击力,骑马策士和仙人同时加攻击力和精神力。

注:霸气、奋起、鼓舞、霉气、压迫、威吓与气合所加减相同。

空闲区域:利用了第二项中5FC4~5FE0的空闲区域,剩余5FE1~6186,共1A6字节。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-21 10:20 资料 主页 文集 短消息 只看该作者
九、自动使用道具

说明:运行本补丁之前,必须先运行第二项——战场人物形象,第三项——兵种改动,第七项——百分数。

改动一览:
1.使得道具特殊效果“自动使用豆”的特殊效果值有效,指定被攻击或者策略损失HP后使用的道具代码。57为豆,与原效果相同。
2.改动策略效果说明“自动使用豆”为“自动使用”+道具名。

空闲区域:利用了第二项中5FE1~5FEF的空闲区域,剩余5FF0~6186,共197字节。利用第七项66DC-66F2的空闲区域,剩余66F3~66FB,共9字节忽略不计。

data修改建议:把道具“恢复用豆”,改为“豆”;把道具“恢复用米”,改为“米”;把道具“恢复用桃”,改为“桃”。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-23 13:55 资料 主页 文集 短消息 只看该作者
十、突破能力限制

改动一览:
1.无论是我方武将通过吃果子和升级增加得到的,还是敌方、友方武将根据出场等级计算得出的,无道具状态下的攻防精暴士能力值,都可以突破255。
2.无道具、有道具、战场上暂时上升三种情况下的攻防精暴士的最大值都为9999,HP最大值为65535,MP最大值为255。
3.存档文件Svxxd.e5s的格式改变,每个武将分别在其五项基本能力值的后面增加一个字节作为高位,总计512个武将增加2560字节。
4.出兵选人时、显示人物状态时的能力管满管代表数值。基本能力(含道具、浮动)满管为1200,HP满管为1000,MP满管为255。
5.武将姓名限制为4个汉字(8个字节)以内。

空闲区域:8502~87EE,共2ED字节

附上旧存档转变为新存档的工具


附件: 存档转换器.rar (2005-6-23 13:55, 207.93 K)
该附件被下载次数 679
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-26 21:49 资料 主页 文集 短消息 只看该作者
十一、升级特殊效果

说明:运行本补丁之前,必须先运行第二项——战场人物形象,第十项——突破能力限制。

改动一览:
1.特殊武器和防具7~9级的特殊效果值变为原来的1.5倍,例外情况:“穿透攻击”的特殊效果值不变,“远距攻击”的特殊效果值加倍,“自动使用道具”的特殊效果值增1;“辅助精神力”的武器的特殊效果值为(等级-1)×data值。
2.部分特殊效果在10级时有明显加强,具体请看此帖:
http://dx.xycq.net/forum/index.php?showtopic=57254
3.突破全身道具对单项能力叠加不超过255的限制。

空闲区域:利用了第二项中5FF0~604C,616D~6186的空闲区域,剩余604D~616C,共120字节。

data修改建议:
按照宝物帖1~4级的参数设定特殊效果值,“自动使用道具”的特殊效果值设定为0x57。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-27 15:37 资料 主页 文集 短消息 只看该作者
十二、大杂烩

说明:运行本补丁之前,必须先运行第二项——战场人物形象,第十项——突破能力限制。

改动一览:
1.剧本中可设置的武器防具最高等级变为10级。注:原本满级状态下经验自动变为MAX,现改为满级与9级时经验均变为MAX。
2.部队的攻防精暴士减少时,由减少为70%改至减少为80%。
3.转职等级改为20、40。
4.取消木人中毒、土偶混乱的部队特性。
5.重设战前选择部队出场时的兵种排列顺序。
6.道具等级由武将升4级道具升1级改为武将升6级道具升1级。已测试通过的有:敌军携带宝物、普通装备,我军武将加入携带普通装备,战场外获得宝物。
7.设定等级加成与果子理论。
8.进一步完善了van的我方武将加入等级公式。
9.全部49条撤退台词均可使用。

空闲区域:利用了第二项中604D~6084空闲区域,剩余6085~616C,共E8字节。
精华帖
顶部
性别:男-离线 刘德华

Rank: 4
组别 士兵
级别 偏将军
功绩 4
帖子 353
编号 574
注册 2003-9-7
家族 轩辕丐帮


发表于 2005-6-27 15:58 资料 主页 短消息 只看该作者
希望周瑜大人可以开发一个大众版本的.exe修改器啊,感激不尽啊`````
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-28 21:43 资料 主页 文集 短消息 只看该作者
十三、仙人

说明:运行本补丁之前,必须先运行第二项——战场人物形象。
改动一览:
1.取消土偶攻击后的混乱效果。
2.增加仙人攻击后100%的混乱麻痹封咒中毒效果。
3.设置仙人的攻击穿透效果为6,即最远端距离攻击中心为3的菱形。
4.选择攻击目标时,显示穿透效果6的范围。

空闲区域:利用了第二项中6085~612F空闲区域,剩余6130~616C,共3D字节。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-29 12:42 资料 主页 文集 短消息 只看该作者
十四、平均等级

改动一览:
敌军出场武将和小兵是根据我方出战武将的平均等级来加成计算的。我方的平均等级,是去掉高四分之一和低四分之一后的武将等级的平均。
现更改为:取我方出战武将等级最高的n人的平均等级。n的设置位置在17C97,现设为1。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-6-30 11:24 资料 主页 文集 短消息 只看该作者
十五、不匹配装备

改动一览:
剧本中给武将设定道具、改变兵种的时候,合适位置上的不匹配装备仍然会在游戏中保留。

在“个人装备设定”里,可以更自由的给敌人武将装备各种道具,尤其是10级道具。
10级宝物特殊效果的属性设置地址在6F77~6FA3,共2D字节,分别表示特殊效果12~3E在10级的时候的特殊效果值,可自行设定,FF表示无变化。

六沉枪:九宫格攻击,归顺我方的陆文龙就拿着这杆超级六沉枪。
龙泉剑:辅助攻击防御100%,完全物理攻击免疫,强魔法部队使用。
梅花亮银锤:减轻策略伤害100%,攻击类策略免疫,强近战部队使用。
碧玉梨花袍:减轻策略损伤100%,攻击类策略免疫,强近战部队使用。与上一个重复,改为辅助策略防御可能更好,如此特殊效果值应相应下调,与龙泉剑相同为佳。
六方青铜锤:全屏攻击,隐藏在我方无法攻击的某个角落的炮车或者连弩使用,地图上有两个就可以禁止我方出军师。
飞焰扇:辅助火类策略200%。
八卦仙衣:辅助精神力200,以上两项配合使用有极恐怖的效果。
玉砌连环铠:自动使用桃,一夫当关,万夫莫开。用于阻挡我方多路进攻部队中的一路,一定回合后自动解除装备。
雪狸袍:100%,主将可酌情使用,一旦被围攻,效果也就不大。

太乙道袍:每回合恢复MP 200
湛卢剑:辅助士气200
昊天剑:节约MP100%
以上根据剧情安排使用,可以在对话中加以介绍。

翡翠甲:辅助HP 200
柳叶甲:减轻远距损伤100%
碧云斗篷:辅助MP200
轰天雷:辅助攻击命中100%
七星剑:辅助策略命中100%
以上效果不大,可以给小将使用。

全部补丁如上,以后不再更新,若有BUG请自行解决。
更新的补丁很多,除了增加文件大小的那个,其余全部依次运行一次即可。
精华帖
顶部
性别:未知-离线 幽人独往来
(做人别太CCTV)

蒲领侯枢密直学士

Rank: 13Rank: 13Rank: 13Rank: 13
组别 翰林学士
级别 平东将军
好贴 3
功绩 592
帖子 2540
编号 1982
注册 2004-7-13




QUOTE:
幽人曾提出在剧本中让武将来回转换兵种以达到解除装备的目的,故保留转换兵种时取消不匹配装备的设置。

已经发现了更好的方法,就是加入武将装备设定,把需要卸掉的装备处设为“卸掉”,其他设为“默认”,原先以为“默认”就是“初始装备”,现在发现原来是“现有装备”。

所以这一块周瑜GG也可以改成自动保留了
精华帖
顶部
性别:未知-离线 ccj1985

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 6
编号 36696
注册 2005-4-13


发表于 2005-7-8 12:33 资料 短消息 只看该作者


QUOTE:
原帖由周瑜于2005-06-16, 20:47:33发表
一、破浪履
修改的不是破浪履这个宝物本身,而是恶路移动这个特殊效果。把破浪履的特殊效果指定为恶路移动,是在data中完成的;而恶路移动有什么特点,才是在exe文件中进行说明的。

新增功能:
1.除大河、浅滩、沼泽,其余不利地形照样多消耗机动力。
2.大河加成120%,浅滩110%,沼泽100%
3.在大河上不坐船
4.宝物说明“恶路移动”改为“凌波微步”

这点还挺有点创新的,感觉非常不错!!~~
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-7-11 16:23 资料 主页 文集 短消息 只看该作者
大规模修改exe的步骤:

1.反汇编整个exe程序。

2.定位需要修改的位置,通常是一个函数。
需要此前大规模阅读源代码,并详细记录各个函数的输入输出。输入通常包括ecx,以及调用函数前入栈的参数,即函数体中的ebp+08,ebp+0C等,输出通常为eax或者al。
注:函数执行后,寄存器ecx、edx通常会被破坏。即使没有被破坏,函数体后直接使用寄存器值也是极其危险的做法,不推荐。

3.将整个函数或者是函数中的某一段,替换成自己的代码。
替换前必须完全理解被替换代码的功能,最好能完全理解每一语句和每一子函数的作用。
替换代码不得超过被替换代码的长度,如确实超过长度,可以利用空闲区域,主要有三种利用方法。
1)使用jmp(包括条件跳转)跳转到空闲区域,执行完后使用jmp返回。可以把任意数量、无论本身是否成为一个独立功能块的代码,放在空闲区域,但不可复用。
2)使用call调用一个位于空闲区域的新函数,执行完后使用ret返回。函数体必然是一个独立功能块,需要预先定义输入输出参数,可以复用。
3)隐式跳转,把跳转表的某一项指向空闲区域,执行后用jmp返回。不可复用同1。另外注意这种情况下,反汇编器W32dsm不知道这段代码是从哪里跳转来的,需要自己作详细记录。

4.将汇编代码转变为机器码。
可以在反汇编得到的代码中查找相同的汇编语句,拷贝其机器码。如果没有,则可以查找参数不同的语句,然后修改其参数即可。
对于jmp(包括条件跳转)和call语句,应该预留写跳转长度的字节,长短跳转需要判明。call指令长度5个字节,短跳转2个字节,无条件长跳转5个字节,条件长跳转6个字节。此后给每一句新写的汇编标上地址号,再计算出jmp和call的距离。

5.将机器码写入exe文件,并再次使用反汇编程序,检查反汇编结果与所写语句是否相同。

注:如果修改了原有函数的输入输出参数的个数、类型、含义等,则每一个调用此函数的地方都必须作相应修改。

推荐使用的工具一览:
1.反汇编:W32dsm
2.阅读反汇编代码:VC
3.修改exe文件:WinHex
精华帖
顶部
性别:男-离线 小行者

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 讨逆将军
功绩 32
帖子 698
编号 41928
注册 2005-6-29


发表于 2005-7-11 22:39 资料 文集 短消息 只看该作者 QQ Yahoo!
请问周大:做这样的事情 需要多深厚的 编译原理 基础知识?请告知,谢谢。
精华帖
顶部
性别:男-离线 周瑜

栎阳侯谏议大夫

Rank: 16
组别 翰林学士
级别 征西将军
好贴 10
功绩 943
帖子 4714
编号 1808
注册 2003-11-3
家族 瓦岗寨


发表于 2005-7-12 10:53 资料 主页 文集 短消息 只看该作者
To 小行者:很遗憾,我没有学过编译原理,只学过汇编语言。推荐参考书目:《IBM PC汇编语言程序设计》沈美明 温冬婵 编著,清华大学出版社,1991年6月第一版。
最近我发的帖子基本由浅到深,总结了上个月做修改器的经验与方法。如果能看懂博雅张生关于增加策略伤害系数种类的帖子,便可以跟着学习下去。
另外,一句话中加上太多空格,会让人看的很吃力。

exe修改举例——破浪履补丁
将使用补丁前后的exe文件加以比较,可以看出该补丁更改了8个地方,分别是:
自0x3EBCF起0xEF字节
自0x375DD起0x0A字节
自0x398FE起0x1C字节
自0x3B09C起0x13字节
自0x40213起0x0A字节
自0x50926起0x0F字节
自0x50B51起0x0F字节
自0x8AA98起0x08字节
下面分别加以介绍:

曹操传中关于地形的两个函数,原本功能分别为:
  函数名          ecx            ebp+08       返回值
:0043F7CF   武将战场属性地址    地形编号  al,武将在该地形上消耗行动力(考虑宝物效果)
:0043F84D   武将战场属性地址              al,武将在当前地形上的攻防加成
该补丁将这两个函数合并为一个函数,其功能为:
  函数名          ecx            ebp+08       返回值
:0043F7CF   武将战场属性地址    地形编号  al,武将在该地形上消耗行动力(考虑宝物效果)
                                          dl,武将在当前地形上的攻防加成(考虑宝物效果)

具体介绍新函数的代码:
:0043F7CF 55                      push ebp
:0043F7D0 8BEC                    mov ebp, esp               //函数头,保存ebp和esp值
:0043F7D2 83EC14                  sub esp, 00000014          //函数中可用内存为5个dword,地址ebp-04,ebp-08,...,ebp-14
:0043F7D5 894DEC                  mov dword ptr [ebp-14], ecx//保存武将战场属性地址
:0043F7D8 E893BCFFFF              call 0043B470              //获取武将职业于al
:0043F7DD 25FF000000              and eax, 000000FF
:0043F7E2 8945FC                  mov dword ptr [ebp-04], eax//保存武将职业
:0043F7E5 83F81B                  cmp eax, 0000001B          //检测武将职业是否超过最大职业数
:0043F7E8 7C0A                    jl 0043F7F4                //未超过,继续执行
:0043F7EA 0CFF                    or al, FF
:0043F7EC 80E200                  and dl, 00
:0043F7EF E98C000000              jmp 0043F880               //超过,此职业无效,设定行动消耗为FF,攻防加成为0,结束函数。

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F7E8©
|
:0043F7F4 8B4DEC                  mov ecx, dword ptr [ebp-14]//读取武将战场属性地址
:0043F7F7 E8643BFCFF              call 00403360
:0043F7FC 50                      push eax
:0043F7FD E88F61FFFF              call 00435991              //获得武将当前所在地形编号
:0043F802 83C404                  add esp, 00000004          //压栈参数出栈
:0043F805 25FF000000              and eax, 000000FF
:0043F80A 8945F0                  mov dword ptr [ebp-10], eax//保存武将当前所在地形编号
:0043F80D 50                      push eax
:0043F80E 8B4DFC                  mov ecx, dword ptr [ebp-04]//读取武将职业
:0043F811 6BC93C                  imul ecx, 0000003C
:0043F814 81C1E0E44A00            add ecx, 004AE4E0
:0043F81A E871380000              call 00443090              //获得该职业该地形的攻防加成
:0043F81F 8845F4                  mov byte ptr [ebp-0C], al  //保存攻防加成
:0043F822 8B4508                  mov eax, dword ptr [ebp+08]//读取参数,地形编号
:0043F825 25FF000000              and eax, 000000FF
:0043F82A 50                      push eax
:0043F82B E840380000              call 00443070              //获得该职业该地形的行动力消耗
:0043F830 8845F8                  mov byte ptr [ebp-08], al  //保存行动力消耗
:0043F833 6A22                    push 00000022              //恶路移动(凌波微步)的特殊效果编号
:0043F835 8B55EC                  mov edx, dword ptr [ebp-14]
:0043F838 8B0A                    mov ecx, dword ptr [edx]   //获得该武将data编号
:0043F83A 6BC948                  imul ecx, 00000048
:0043F83D 81C1681B4A00            add ecx, 004A1B68          //计算武将基本属性地址
:0043F843 E8C181FCFF              call 00407A09              //检测武将是否装备特殊效果编号为0x22的道具(返回值于eax,1是0否)
:0043F848 85C0                    test eax, eax
:0043F84A 742E                    je 0043F87A                //没有装备,则结束函数
:0043F84C 8B4508                  mov eax, dword ptr [ebp+08]//读取参数,地形编号
:0043F84F 3C09                    cmp al, 09                 //浅滩
:0043F851 7408                    je 0043F85B
:0043F853 3C0A                    cmp al, 0A                 //沼泽
:0043F855 7404                    je 0043F85B
:0043F857 3C0D                    cmp al, 0D                 //大河
:0043F859 7505                    jne 0043F860

* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043F851©, :0043F855©
|
:0043F85B B001                    mov al, 01                 //行动力消耗为1
:0043F85D 8945F8                  mov dword ptr [ebp-08], eax//保存行动力消耗

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F859©
|
:0043F860 8B45F0                  mov eax, dword ptr [ebp-10]//读取当前所在地形编号
:0043F863 3C09                    cmp al, 09                 //浅滩
:0043F865 7504                    jne 0043F86B
:0043F867 B00B                    mov al, 0B
:0043F869 EB0C                    jmp 0043F877

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F865©
|
:0043F86B 3C0A                    cmp al, 0A                 //沼泽
:0043F86D 7502                    jne 0043F871
:0043F86F EB06                    jmp 0043F877

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F86D©
|
:0043F871 3C0D                    cmp al, 0D                 //大河
:0043F873 7505                    jne 0043F87A
:0043F875 B00C                    mov al, 0C

* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043F869(U), :0043F86F(U)
|
:0043F877 8945F4                  mov dword ptr [ebp-0C], eax//保存攻防加成

* Referenced by a (U)nconditional or ©onditional Jump at Addresses:
|:0043F84A©, :0043F873©
|
:0043F87A 8B45F8                  mov eax, dword ptr [ebp-08]//将移动力消耗放在eax,只有低8位有效
:0043F87D 8B55F4                  mov edx, dword ptr [ebp-0C]//将攻防加成放在edx,只有低8位有效

* Referenced by a (U)nconditional or ©onditional Jump at Address:
|:0043F7EF(U)
|
:0043F880 8BE5                    mov esp, ebp               //函数结束,恢复入口的ebp和esp值
:0043F882 5D                      pop ebp
:0043F883 C20400                  ret 0004                   //返回并使参数出栈

因为此函数的合并,调用部分也需要做相应修改。
原本调用:0043F7CF的地方,由于入口、出口均未发生变化,故无需修改。
原本调用:0043F84D的地方,调用函数地址、返回值发生变化,需要修改。这种情况共六处:
:004381DD   , :0043A4FE   , :0043A510   , :0043BC9C   , :0043BCA7   , :00440E13
原调用方法:
:004381DD E86B760000              call 0043F84D
:004381E2 25FF000000              and eax, 000000FF
更改为:
:004381DD E8ED750000              call 0043F7CF
:004381E2 33C0                    xor eax, eax
:004381E4 0AC2                    or al, dl
:004381E6 90                      nop
在有限的空间内辗转腾挪,不但把edx的数据传入eax,还把eax的高三字节清零。:0043A4FE,:0043A510,:00440E13的修改方法类似。

原调用方法:
:0043BC9C E8AC3B0000              call 0043F84D
:0043BCA1 8845F4                  mov byte ptr [ebp-0C], al
更改为:
:0043BC9C E82E3B0000              call 0043F7CF
:0043BCA1 8855F4                  mov byte ptr [ebp-0C], dl
这个更改一目了然,不需解释。:0043BCA7的修改方法与之类似。

这样便实现了破浪履的移动力和攻防加成功能,下面来看看绘图功能。
去腿部分:
:00451523 8B4D18                  mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451526 81E1FF000000            and ecx, 000000FF
:0045152C 6BC924                  imul ecx, 00000024
:0045152F 81C1502C4B00            add ecx, 004B2C50          //计算武将战场属性地址
:00451535 E8E6CDFEFF              call 0043E320              //获得武将的朝向
更改为:
:00451523 8B4D18                  mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451526 E85BE3FEFF              call 0043F886              //自定义函数
:0045152B 85C0                    test eax, eax              //检测是否装备破浪履
:0045152D 0F85E8010000            jne 0045171B               //如装备则不执行去腿操作
:00451533 90                      nop
:00451534 90                      nop
:00451535 E8E6CDFEFF              call 0043E320              //获得武将的朝向

绘船部分与之类似:
:0045174E 8B4D18                  mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451751 81E1FF000000            and ecx, 000000FF
:00451757 6BC924                  imul ecx, 00000024
:0045175A 81C1502C4B00            add ecx, 004B2C50          //计算武将战场属性地址
:00451760 E8BBCBFEFF              call 0043E320              //获得武将的朝向
更改为:
:0045174E 8B4D18                  mov ecx, dword ptr [ebp+18]//读取武将战场属性编号
:00451751 E830E1FEFF              call 0043F886              //自定义函数
:00451756 85C0                    test eax, eax              //检测是否装备破浪履
:00451758 0F8590010000            jne 004518EE               //如装备则不执行绘船操作
:0045175E 90                      nop
:0045175F 90                      nop
:00451760 E8BBCBFEFF              call 0043E320              //获得武将的朝向

由这两处调用,可以定义出函数:0043F886的输入输出如下:
  函数名          ecx            返回值
:0043F886   武将战场属性编号   eax,是否装备破浪履(1是0否)
                               ecx,武将战场属性地址(提供下面获得朝向的函数0043E320使用)

实现如下:
:0043F886 55                      push ebp
:0043F887 8BEC                    mov ebp, esp
:0043F889 51                      push ecx                   //等效于sub esp, 00000004 表示函数中可用内存为1个dword,地址ebp-04
:0043F88A 81E1FF000000            and ecx, 000000FF
:0043F890 6BC924                  imul ecx, 00000024
:0043F893 81C1502C4B00            add ecx, 004B2C50          //计算武将战场属性地址
:0043F899 8BD1                    mov edx, ecx
:0043F89B 894DFC                  mov dword ptr [ebp-04], ecx//保存武将战场属性地址
:0043F89E 6A22                    push 00000022              //恶路移动(凌波微步)的特殊效果编号
:0043F8A0 8B0A                    mov ecx, dword ptr [edx]   //获得武将data编号
:0043F8A2 6BC948                  imul ecx, 00000048
:0043F8A5 81C1681B4A00            add ecx, 004A1B68          //计算武将基本属性地址
:0043F8AB E85981FCFF              call 00407A09              //检测武将是否装备特殊效果编号为0x22的道具(返回值于eax,1是0否)
:0043F8B0 8B4DFC                  mov ecx, dword ptr [ebp-04]//将武将战场属性地址放于ecx
:0043F8B3 8BE5                    mov esp, ebp
:0043F8B5 5D                      pop ebp
:0043F8B6 C3                      ret

最后,修改0x8AA98处的宝物效果说明,将“恶路移动”改为“凌波微步”。
精华帖
顶部
性别:男-离线 小行者

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 讨逆将军
功绩 32
帖子 698
编号 41928
注册 2005-6-29


发表于 2005-7-12 11:11 资料 文集 短消息 只看该作者 QQ Yahoo!
好,谢谢周大,我已经修改了我的帖子,并将您的帖子收藏。


精华帖
顶部

正在浏览此帖的会员 - 共 2 人在线




当前时区 GMT+8, 现在时间是 2024-8-23 15:24
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.021121 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP