注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

深夜是徘徊在潮湿睫毛上的我的梦以及他的梦

是直到最后都无法放手的一种气息,是我们生命中最后的思念……

 
 
 

日志

 
 

FC反编译的简单方法  

2009-01-23 08:55:22|  分类: FC知识整理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

FC反编译的简单方法:

应用:用作简单的DEMO的分析,学习

 

适用范围:mapper=0,并且没有trainer

 

 

如何判断适用范围呢?

       只要看文件头就知道了。用16进制编辑器打开ROM,查看前面的16个字节。

       文件头格式

偏移

字节数

内容

0-3

4

字符串“NES^Z”用来识别.NES文件

4

1

16kB ROM的数目

5

1

8kB VROM的数目

6

1

D0:1=垂直镜像,0=水平镜像

 

 

D1:1=有电池记忆,SRAM地址$6000-$7FFF

 

 

D2:1=在$7000-$71FF有一个512字节的trainer

 

 

D3:1=4屏幕VRAM布局

 

 

D4-D7:ROM Mapper的低4位

7

1

D0-D3:保留,必须是0(准备作为副Mapper号^_^)

 

 

D4-D7:ROM Mapper的高4位

8-F

8

保留,必须是0

16-

16KxM

ROM段升序排列,如果存在trainer,它的512字节摆在ROM段之前

-EOF

8KxN

VROM段, 升序排列

 

要求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和别的程序一样,在记录地址时,总是先记录低位再记录高位的。

 

 

低位

高位

NMI

FFFA

FFFB

START

FFFC

FFFD

IRQ

FFFE

FFFF

这6个字节分别是nmi, start, irq的低位和高位了。

Start一般是C000或者8000  (16进制的)

 

2提取程序部分

先要知道mapper=0ROM的数据结构。

文件头

程序

填充FF

3个重要地址

2段字模

 

操作是:

去除ROM的文件头16个字节

去除由全是FF的部分到末尾的所有内容。

余下就是程序部分。

另存。

这个文件是ROM的一部分,我取后缀名叫part1

 

 

3用工具反汇编

打开“反汇编器.exe”,点右面“6502”和“常规”

用这个 “反汇编器.exe”打开这个.part1

选择文件时,选”ALL FILES”就可以显示了。

点打开后,选中”BIN文件”,并写入start的地址 (见步骤1)

确定

 反汇编器.exe 下载地址:  http://www.uushare.com/user/fogota/file/1242338

我有一个例程,是一个只显示一个字母的DEMO,我做了全部操作,得到的文件都在这里。

例程下载地址:  http://www.uushare.com/user/fogota/files/1242818

 

4分析程序

由于程序一般中数据和程序混合的,自己要跟踪代码,分析那一段是数据,那一段是指令。

一般程序是从第一行开始执行,并且不会拿数据来当指令执行。

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

 

 

  评论这张
 
阅读(2290)| 评论(3)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017