FC反编译的简单方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FC反编译的简单方法:
适用范围:mapper=0,并且没有trainer
如何判断适用范围呢?
只要看文件头就知道了。用16进制编辑器打开ROM,查看前面的16个字节。
要求bit 7的高位(即D4-D7)为0,bit 6的高位(即D4-D7)为0,则mapper=0
要求bit 6的D2为0,则没有trainer
步骤
1.找出3个重要地址nmi, start, irp
2.提取程序部分
3.用工具反汇编
4.分析程序
祥细操作
1找出3个重要地址nmi, start, irq
可用16进制编辑器或”No$nes”,打开ROM,并跳到FFFA,记录下由FFFA开始的连续6个字节。ROM和别的程序一样,在记录地址时,总是先记录低位再记录高位的。
这6个字节分别是nmi, start, irq的低位和高位了。
Start一般是C000或者8000 (16进制的)
2提取程序部分
先要知道mapper=0,ROM的数据结构。
操作是:
去除ROM的文件头16个字节
去除由全是FF的部分到末尾的所有内容。
余下就是程序部分。
另存。
这个文件是ROM的一部分,我取后缀名叫part1
3用工具反汇编
打开“反汇编器.exe”,点右面”6502”
用这个“反汇编器.exe”打开这个.part1
选择文件时,选”ALL FILES”就可以显示了。
点打开后,选中”BIN文件”,并写入start的地址(见步骤1)
确定
4分析程序
由于程序一般中数据和程序混合的,自己要跟踪代码,分析那一段是数据,那一段是指令。一般程序是从第一行开始执行,并且不会拿数据来当指令执行。
也就是说从第一行开始,只要看“跳转”就可以知道程序经过的地址,没有经过的就是数据了。