FC反编译的简单方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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分析程序

由于程序一般中数据和程序混合的,自己要跟踪代码,分析那一段是数据,那一段是指令。一般程序是从第一行开始执行,并且不会拿数据来当指令执行。

也就是说从第一行开始,只要看“跳转”就可以知道程序经过的地址,没有经过的就是数据了。

相关文档
最新文档