标题:
光明力量3第二部反汇编和高级修改
[打印本页]
作者:
jinxin8889
时间:
2011-4-28 17:55
标题:
光明力量3第二部反汇编和高级修改
目标游戏 光明力量3第二部
工具:IDA,yabause IDA处理器选项中找不到sh2,用sh4B代替
首先利用yabause在人物属性结构中魔法编号(网上可找到现成的金手指)的地址下断
mov.b @r10, r4 ; 断在此处,取魔法编号
mov.l dword_80CA74C, r0 ; 此处反汇编与yabause不同,可能是cpu选的有问题
jsr @r0 ; 取魔法属性地址,
extu.b r4, r4
mov.l @r9, r1 ; 1->r1 @r9存的应该是魔法的等级
mov r0, r2
add #-1, r1
shll2 r1
add r2, r1 ; r1=魔法属性地址
mov.b @r8, r2 ; 取人物的现有MP值
add #6, r1
mov.b @r1, r1 ; 取该编号的魔法MP消耗值
extu.b r2, r2
extu.b r1, r1
cmp/hs r1, r2
bt loc_80CA64E ; MP够了则跳
mov.w 080CA746, r5 ; 猜测下面代码的作用是显示MP不够
mov.l dword_80CA750, r4 ; h'1D3E38EA
mov.l dword_80CA754, r1 ; h'EBBEAACF
mov #1, r7
jsr @r1
mov #h'78, r6
bra loc_80CA38A
mov #h'63, r10
get_MagicAddress:
code:080ACF44 exts.w r4, r4 ; r4=魔法编号
code:080ACF46 extu.w r4, r2
code:080ACF48 mov.w word_80ACF5E, r1 ; h'FF
code:080ACF4A cmp/hi r1, r2
code:080ACF4C bf loc_80ACF50
code:080ACF4E mov #0, r4
code:080ACF50
code:080ACF50 loc_80ACF50: ; CODE XREF: get_MagicAddress+8j
code:080ACF50 mov #h'14, r1
code:080ACF52 muls r1, r4 ; 编号*常数,这是明显标志,这个常数表示每个魔法属性结构所占的字节数
code:080ACF54 sts macl, r2
code:080ACF56 mov.l dword_80ACF60, r1 ; h'602E658
code:080ACF58 mov r2, r0
code:080ACF5A rts
code:080ACF5C add r1, r0 ;r1存的就是魔法属性的基址
code:080ACF5C ; End of function get_MagicAddress
code:080ACF5C
分析魔法属性结构:
支援魔法属性(每个魔法占0x14字节)
02 01 00 00 10 02 05 00 20 03 09 00 00 01 00 00
00 01 00 00
+0 使用对象 02-对自己人 01-对敌人
+1 魔法类型 1-能力变化 0-减血
+4 一级距离 31-一至三格
+5 一级范围 04-全体
+6 一级MP消耗值
+7 一级威力
后面3字节代表二级、三级、四级属性
根据以上的方法又找到物品和必杀技的属性结构
必杀技属性(每个占4字节)
01 0A 10 24
+3 威力 不能设得太高 最高可设为4A
半人马之箭(BC)属性:占24个字节:
75 30 46 10 01 32 1F 07 03 00 04 10 05 0F 03 03
13 07 07 02 12 79 18 02
+00 价格
+02 物品相性
+03物品属性 10-不会损坏 11-可以损坏 12-装备后处于诅咒状态
+04装备限制
+05使用范围 32-2至3格 31-1至3格 最大3格
+06 增加的攻击力
+07 增加的防御力
+0E 加强的属性为速度
+14 装备学会的能力 11表示魔法 12表示必杀技
+15 魔法或者必杀技的编码
+16 使用产生魔法类型 1604全体加HP 1702全体加MP 1D升级效果 10吸血吸魔
+17 魔法等级
(01攻击 02防御 03速度 04移动 05运气 11装备学会的魔法
12必杀技, 13会心率 14反击率 0E光属性防御 08每回合增加的MP 07每回合增加的HP,不能放最后的一个字 )
作者:
yzb
时间:
2011-4-28 19:22
ss的内存不是06开头的吗????
作者:
jinxin8889
时间:
2011-4-28 19:32
在yabause中是06开始,以上代码是我用IDA载入bin文件反汇编后导出来的,是以08开头的,因为没sh2处理器可选,有些命令翻译得有些问题
作者:
yzb
时间:
2011-4-28 20:12
那还不如直接dump 06000000-06100000这段内存出来,我记得程序区是从06004000开始的?
另外你前面没编号后面又有编号的,看起来有点乱啊~
作者:
jinxin8889
时间:
2011-4-28 20:26
yabause应该不能dump,ida刚开始用,有些功能还不会用,以前用的是OD,但是OD又不能调试SS游戏
作者:
jinxin8889
时间:
2011-4-28 20:28
请yzb指教一下,IDA应如何设置才能方便的调试SS游戏
作者:
yzb
时间:
2011-4-28 22:03
请yzb指教一下,IDA应如何设置才能方便的调试SS游戏
jinxin8889 发表于 2011-4-28 20:28
Yabause不是有抽取内存的选项吗 = =!
[attach]318[/attach]
另外ida 按个人习惯设置,比如我习惯按以下设置
因为主程序是从06004000开始的
[attach]319[/attach]
作者:
jinxin8889
时间:
2011-4-29 05:36
非常感谢.............
作者:
Ken_Tse
时间:
2011-4-29 11:56
恩,推荐多出这样的原创帖。PS,SS游戏选择SH4没错,另外,内存结构通常我是用RAM不是Rom。
作者:
syjsdh
时间:
2011-5-8 16:20
好复杂啊。需要学习。
作者:
戴过红领巾
时间:
2011-10-17 13:27
就看看,不说话。
襄阳网页QQ
始兴冒险岛sf
定兴奇迹论坛
鹤岗神魔大陆论坛
乌苏天堂单机
孟连蜀门sf发布网
临江魔域家族
耀县轻变传奇私服
彝良魔兽世界
作者:
000641315
时间:
2015-12-26 19:20
如何才能修改魔法设定消耗的MP值?
比如,4级奥拉,我想改成最少消耗18点MP,同时MP消耗光。就像魔法光明一样。
谢谢!
作者:
000641315
时间:
2015-12-26 19:22
如何修改魔法设定消耗的MP值?
比如,4级奥拉,我想改成最少消耗18点MP,同时所有MP用完,就像魔法光明一样。
谢谢!
作者:
yhjyhjyhjyhj
时间:
2018-4-8 17:31
要学习哪门功课才能学会啊?我一直想自己做修改器~
作者:
headhunter1986
时间:
2020-5-21 20:40
涨知识了,感谢分享
作者:
gundamepyom
时间:
2020-10-19 19:05
非常好的技术
作者:
gundamepyom
时间:
2020-10-19 19:05
这个是什么工具啊
欢迎光临 意志之路汉化组 (http://yzzl.kxb4u.com/)
Powered by Discuz! 7.2