曹操传运行时内存数据分析
经过今天一天的努力,得出了内存中有关物品的信息和一部分人物信息现将物品相关部分发表出来供大家参考!也希望有兴趣的朋友共同研究!
运行曹操传,然后用FPE分析,在编辑选项卡的客户区就可以看见内存中的数据,这里有我们感兴趣的东西,我们可以通过这里直接修改内存值,来实现修改游戏的目的。
打开的数据时非常巨大的,我不知道是不是这个软件把内存中所有的它能够都去的数据 都显示出来了还是仅仅把它感兴趣的数据(与游戏有关的数据)显示了出来。反正是很大,首先,通观全局发现在内存地址00400000之前没有任何数据唯有全部的??。从00400000开始向后翻,一直翻到了地址为00486AB0一共86AB0H个(约270k)字节终
于看见了我们熟悉的字符了!惊喜一把! 但是这惊喜给不了多少有用的信息,这里出现的虽然我们非常熟悉,但却不是我们要的东西,这里是纯粹的字符包括武将名、兵种属性、Lv、等级等等字符的编码对我们来说改了它就是要改游戏中一些对话框的标题名了!就是游戏中显示给我们的文字信息,无关紧要,但没有这些我们又会觉游戏有很大的不足。我们不需要改它的,这些是框架性的东西。
继续往下翻,字符栏有是乱码了!再后面是一些英文字符串,一看就认为它是程序中函数调用的函数名,或者文件名。完了是很多的00了!
继续下,又有乱码一会儿就出现了序章、第一章的字样,现在应该是exe文件里面的内容了!后面有许子将教学的内容了,(因为许子将教学据网上的观点是exe文件的)后面又是乱码!
经过很多的乱码或者偶尔的一段空白(全00)之后来到了地址为004A1120处,这里!出现了我特别敏感的东西!首先是游戏现在的战役,我当时是张辽破敌。后面有很多物品的名字加乱码!好!这就是我要找的!经过了A1120H个字节之后才发现有价值的东西!惊喜!真正惊喜了!
看4A1140(以后地址前面2个0均省略且都为16进制表示)处是短剑二字,下一行有大剑二字!在隔一行有钢剑二字,后面有很多道具的名字了。仔细观察发现:
每25个字节代表一种道具。
短剑为:
E6 CC BD A3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 FF 0A 00 0A 00
前16个字节为道具名称最多8个汉字,第17个为结束符或者分隔符吧!后面8个字节解析如下:
第一个00的位置(第18字节)表示该武器类型。00或01,则表示是剑类武器(君主,步兵,贼兵能装备);02或03,是枪类武器(骑兵类);04或05,是弓类武器(弓骑,弓
兵);06或07,是棍类(武道家,武娘);其他的我就不一一举例了,值得注意的是,如果想改成特殊武器,则该位数值一定要是单数,不然你改成了00,虽然君主类可以装备了,但是同样它的特殊效果也就没了,3段升级;只有改成01,则君主类可以装备,而武器也拥有特殊效果,同时9段升级。
第二个05(第19字节),表示的是该武器的价格。05表示价值500两。而FF表示255,说明该武器价值25500两,这个太大了,卖不掉,可以改成63,则该武器就可以值9900两
了(要注意的是,在曹操传里,钱的单位是以100两来计算的。所以01就等于是100两钱了)
第三个00(第20字节),则表示该武器的编码,即短剑编码为00.
第四个FF(第21字节),就是确定宝物的特殊属性的位置了,FF表示没有特殊属性,2E表示的是引导攻击,如果你改成其他的,就可以改变他的特殊属性了。注意必须要从12
开始才有意义
特殊属性及代码如下:
12-每回合恢复HP 13-每回合恢复MP 14-每回合恢复状态 15-每回合获得Exp 16-每回合获得武器Exp 17-每回合获得护具Exp
18-辅助攻击力 19-辅助精神力 1A-辅助防御力 1B-辅助爆发力 1C-辅助士气 1D-辅助HP
1E-辅助MP 1F-辅助获得Exp 20-辅助移动力 21-突击移动 22-恶路移动 23-混乱攻击
24-中毒攻击 25-麻痹攻击 26-禁咒攻击 27-辅助攻击命中 28-反击后反击 29-致命一击攻击
2A-远距攻击 2B-连串攻击 2C-无反击攻击 2D-骑马攻击 2E-引导攻击 2F-辅助火类策略
30-辅助风类策略 31-节约MP 32-可以禁咒 33-策略模仿 34-辅助策略命中 35-辅助攻击防御
36-辅助策略防御 37-辅助全防御 38-防御远距攻击 39-防御致命一击 3A-防御两次攻击 3B-防御策略损伤
3C-防御MP 3D-减轻远距损伤 3E-自动使用豆 3F-恢复HP 40-恢复MP 41-治疗混乱
42-治疗中毒 43-治疗麻痹 44-治疗禁咒 45-恢复状态 46-武力上升 47-智力上升
48-统率力上升 49-敏捷上升 4A-运气上升 4B-等级上升 4C-兵种上升
其他数值均无意义。
第五个0A(第22字节),则表示该装备在Lv1的攻击(文官则是策略)或防御效果 这里的0A当然就是攻击力+10啦(是16位进制哦),若改成FF,Lv1的攻击力就是255了。这个很好理解
第六个00指的是该装备的特殊化效果。由于短剑没有特殊属性,那自然也不会有特殊的效果啦,但是如果你把短剑的特殊属性改为辅助XX或者减轻XX的话,这个数值就有意义,试试把表示特殊属性的FF改为37,然后把这个00改为64,就表示辅助全防御+100%,这样在战斗中敌人无论怎么打也无法伤害到你了。
最后两个字节与该装备的类别有关:0A 00 表示普通武器或护具;09 01 表示宝物图鉴里面有的武器或护具;
举例:倚天剑的数据如下:
D2 D0 CC EC BD A3 00 00 00 00 00 00 00 00 00 00 00 01 FF 17 35 10 0F 09 01
前面6个字节当然是倚天剑三个字的代码了,从第18个字节01知该武器为剑类武器,第19字节FF表示不可卖,20字节表示倚天剑的编号为17,第21字节的35表示辅助攻击防御,第22字节的10表示在第一级时攻击+16,第23字节的0F表示辅助攻击防御+15%。
另外辅助物品的格式有所不同,一样是25个字节:
如铜盾:
CD AD B6 DC 00 00 00 00 00 00 00 00 00 00 00 00 00 35 14 36 FF 0F 00 FF 00
前17个字节和其他物品一样为该道具的名字,第18个字节表示该辅助物品的特殊属性如:35表示辅助攻击防御,第19个字节14表示价格;第20个字节36为该物品的代码;第22
个字节0F表示第18字节的属性的加成值,此处为辅助攻击防御+15%;第21和23两个字节对辅助物品来说好像每种都是一样的,分别为FF 和 00 ,最后第24,25字节表示装备
该物品的一些条件。FF 00 表示所有人都可以装备的一般物品;FF 01 表示所有人都可以装备的宝物图鉴里的辅助物品;最后一字节若为01则是宝物图鉴里面有的东西,若为00则没有;其他如马铠为03 00 只能骑兵装备;风车轮为05 01炮车装备;爪黄飞电FF01;皮盔为01 00;铁盔为00 01步兵装备;没羽箭为07 01贼兵装备;青龙宝玉0B 01;朱雀宝玉08 01;白虎宝玉09 01;玄武宝玉0A 01.其他的豆、米、桃、水、酒、果等都是 00 00。
至4A1B67止。其后八个字节出现曹操等人的数据信息。等人物信息分析出来之后再说下面的了!
其他道具也一样,只要找到表示该宝物属性的这一串地址即可。其实根据字串来找很容易的,而且每次运行游戏时这些地址都是固定不变的。所以只要找到,并保存,下次就
很容易继续找了
从004A1B68开始就是武将自身属性的地址开始,从004A1B68到004A1BAF是曹操的自身属性地址范围.每个人占48H(72)个字节这个内容在二楼给出的链接里面有非常详细的说明,相关内容在第4楼,还有截图。我这里就不重复了。。
需要补充的是:
1、所谓的“更衣地址”我觉得应该是004A1B6A~004A1B6B两个合起来组成的;
2、武将名字最多6个字,但是占13个字节,最后一个字节应该是结束的标志位;
3、应该是004A1B84~004A1B87是hp的值,上限是500,大于500都是500。但是如果把87处的最高位改成1,即把这个数变为负数,之后再如这4字节写成FF FF FF FF则HP为-1但是若改为FF FF FF 7F即87处最高位为0表示正数,则HP只能是500
004A1B88是mp的值,上限是250.这与HP的不同,这是无符号数一个字节表示范围0~255.大于250都为250
4、004A1B8F是出阵次数,004A1B90是胜利次数,打完一仗如果曹操说我军胜利了!那么该位+1,如果曹操说撤退吧!那么这个值就不变
004A1B91是撤退次数.曹操(为00)当然是不能撤退的!它撤退就GAME OVER了!
5、004A1B9F~004A1BAB这13个字节是70~7C的重复最后四个字节的00为结束标志。
重复512个人的信息直到004AAB6F处百姓8结束。
004ABFA0~004AC537各兵种的相应信息,每一兵种27个字节直至004AC537结束共35H(53)种。详情请参见二楼链接帖子中8楼相关描述
4AE4E0~4AEB33是地形情报一览中看到部分兵种的行动力及地形影响,每类兵种占60字节前30个字节表示地形中的效果0A代表100%,0B代表110%,09代表90%,08代表80%等等,后30个字节表示每种地形中消耗的机动力01,02,03和ff,ff代表不能通过,也可以改为00不费步数.4AE4E0~4AE51B表示君主类兵种(群雄、英雄、霸王都是一样的).后面的按照顺序依此类推.共27类。详情见二楼链接帖子中9楼相关描述
4AF4C0~4B0757是所有策略的相关信息,每种策略占70字节。详情见二楼链接帖子中11楼相关描述
4B0758起的21个字节是战役名称所占的地址。
4B0771后面有些零散的信息,列举如下:
4B0777表示剧本代码
4B077C~4B077F是金钱的地址
4B0782是忠奸度(从0-100),
从4B0783开始,每三位是一种存在仓库里的武器或者防具或者辅助,一直到4B09DA为止,可以自己随便设置.对于武器和防具第一位为代码,第二位为等级,第三位为该物品的经验值.对于辅助第一位为代码,第二位是FF,第三位是00.
4B09DB~4B09EB共17字节分别是恢复用豆、恢复用米、恢复用桃、神秘水、神秘酒、解毒药、兴奋剂、膏药、止咳药、万能药、印绶、武力果、智力果、统率力果、敏捷果、好运果、经验果的数量。最多FF(255)个。
4B09EC我方出场人数 4B09ED~4B09EF都为00
4B09F0~4B0A03共20字节表示我军必须出场人员的代码,曹操不指定,最多强制出6人
4B0A03~4B0A17共20字节表示我军不能出场人员的代码最多5个若曹操在此指定则曹操不出,只要这里没有操场的代码那曹操就必定出场,且为第一人。
4B1A18之后有曹操军主营的字符出现。
从4B2C50开始每36个字节代表一个人的信息,我方15人(出场的最大人数)。可参见二楼链接帖子中2楼相关描述
4B2C50是人物代码(曹操00)
4B2C51~4B2C53全部是00 00 00。
4B2C54出场顺序 第一个为00 第二个为01
4B2C55敌我属性00我军 01友军 大于或等于02敌军
4B2C56横坐标; 4B2C57:纵坐标
4B2C58都为FF
4B2C59~4B2C5A 属于曹操的人都为00 00其他人的不一样
4B2C5B为我军为00~0F我军未出15人则到最大序号其他主将也有接着我军排,不明其意!
4B2C5C在战场上都为02撤退了则变为03,强制改成别的人依然在战场上,但鼠标点他没有反应,也不会行动!
4B2C5D 行动状态bit5:趴下 bit1bit2=11 :行动完毕其他位不影响
4B2C5E 玩家是否可控 07:可控 其他不可控(该人物必须是友军或我军)
4B2C5F 人物朝向 0上1右2下3左
4B2C60~4B2C63为HP
4B2C64~4B2C67为MP 前面哪一个是满血满MP的值,这里是实际值
4B2C68为攻击力状态 大于03:上升03 正常 小于03:下降
4B2C69为防御力状态 大于03:上升03 正常 小于03:下降
4B2C6A为精神力状态:大于03:上升03 正常 小于03:下降
4B2C6B 爆发力 大于03:上升03 正常 小于03:下降
4B2C6C 士气 大于03:上升03 正常 小于03:下降
4B2C6D 移动力:大 于03:+2 03或小于:正常
4B2C6E 状态:bit0正常 bit1:麻痹bit2:禁咒bit3:混乱bit4:中毒 修改状态只需把相应位置1即可。如:将004B2C6E处改为02则麻痹;改为04则禁咒;08则混乱;10则中毒若要效果叠加依然相应位置1,如1E则4种不良状态都有;06则麻痹+禁咒。
4B2C6F~4B2C73:都是00 01 00 00 00结尾
我军完了是友军,接着是敌军没有的格式为:FF FF 00 00 XX 00 FF FF FF 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
其中XX的值逐个递增是人物在本次游戏中的Index吧!
敌军从004B313C开始至004B3C7B结束!
说明:
1、一般都认为4B2C4C~4B2C6F是我方第一个人的地址范围.但是看到最后一个位置4B3C7B处发现是照原来的方式来数,后面多出了01 00 00 00,并且原来的方式除了第一个人是以00 00 00 00开始,其他人都是01 00 00 00。而若以4B2C50~4B2C73表示我方第一人的话则每个人的格式都是一样的了!
2、4B2C6E处表示人物状态的是我归纳出来的,我发现该位为02(0000 0010)时是麻痹,04(0000 0100)时是禁咒,08(0000 1000)时是混乱10(0001 0000)时是中毒(括号中为前面的数的二进制形式)而06时是麻痹+禁咒,于是我推断这里是位控制的,只要相应位置1则对应的状态就有效,这样假如我们加1个位表示受伤也可以行得通的。在这里只有这4个位起作用,其他位都没有意义,于是这个地方00、01都是正常;3E、3F、5E、5F、7E、7F、9E、9F等都和1E是等效的都表示四种状态都有。
3、4B2C5D是我偶然发现我改成07时,那人出现了被打趴下时的样子,于是我像2中那样试发现了我描述的情况。
4、今天收获不小!感谢那些让我受益的帖子的原作者!!
4B3D08 S剧本的编号,若此刻在R剧本中则这一片内存不会变化
4B3D0A 现在进行的回合数00为第一回合
4B3D0B 总回合数。游戏中上方框内总回合数,修改不会立即生效,下一回合时就可以看见发生变化了。
[ 本帖最后由 z6482 于 2009-9-21 14:27 编辑 ]
|