欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]FC机之超级玛丽简单逆向分析

[原创]FC机之超级玛丽简单逆向分析

最近无聊,用模拟器玩了几局超级玛丽。顺便分析一下。
经典的红白机的超级玛丽,相信大家都玩过。
程序是NES文件格式的,网上找了一些资料并且做了一些整理:
开始地址  用途       结束地址
$0000   2K字节RAM,做4次镜象(即$0000-$07FF可用)  $1FFF
$2000   寄存器       $2007
$2008   寄存器($2000-$2008的镜像,每8个字节镜像一次)  $3FFF
$4000   寄存器       $401F
$4020   扩展ROM       $5FFF
$6000   卡带的SRAM(需要有电池支持)    $7FFF
$8000   卡带的下层ROM      $BFFF
$C000   卡带的上层ROM      $FFFF
6502CPU介绍
一 CPU寄存器
累加器 A(8 bit)                    类似于EAX        
变址寄存器 X ,Y (8 )                         类似于ESI,EDI
堆栈指针寄存器 S ( 8) 100H-1FFH    类似于ESP
程序计数PC(16)                  类似于EIP   
标志寄存器 P(8)                               类似于ELF
            
二 CPU指令
6502                     X86            
lda #$04              mov al,04h
lda  $04               mov al,[04h]
jmp($4000)           mov eax ,[4000]           
                             jmp eax   
      
TAX                      MOV X,A
TXA                      MOVA,X                    
TAY                      MOV Y,A
TYA                      MOV A,Y                        
TSX                      MOV X,S
TXS                      MOX S,X
PHP                     push p
PLA                     pop  a
PLP                     pop  p
lda  内存单元  ;mov  a,内存单元
ldx  内存单元  ;mov x,内存单元
ldy  内存单元  ;mov y,内存单元
sta  内存单元  ;mov 内存单元,a
stx  内存单元  ;mov 内存单元, x
sty  内存单元  ;mov 内存单元,y
adc  操作数   ;and a,操作数
sbc  操作数   ;sub a,操作数
inx                 ;inc x
iny                 ;inc y
dex                ;dec,x
dey                ;dec,y
and  操作数          and  a,操作数
eor  操作数           xor  a,操作数
ora  操作数            or   a,操作数
cmp 操作数         cmp a,操作数
cpx 操作数         cmp x,操作数
cmy 操作数         cmp y,操作数
rts                          retn
brk                          int
JSR                        call
nop机器码 0EAH
分析PE程序需要用到OD;,分析NES也要相应的调试器,这里我用到的是VirtuaNES
静态分析,当然还是IDA了;
--------------------------------
开始分析:
游戏,命是最重要的。喜欢超级玛丽的人都知道3-1关的加无数命,原理就是连续踩坏蛋,100;200;400;800;。。。。。。8000;1命;
那么怎么实现这个命的功能呢?
我的思路是达到每踩一次坏带就加一次命的效果。
;D9DA(59EA)----AD10EAEAEAEA

图1
除了生命,什么最重要呢?那就是时间了 这次来个时间无限
通过反复分析 发现B74F为时间递减函数,直接nop掉就可以了。想分析的童鞋可以分析分析

图2

图3
这样 时间就不递减了,可以痛快的玩了。
我就分析这2点吧,想分析的可以继续分析下。

上传的附件 图片1.png
图片2.png
图片3.png
4.jpg
超级玛莉.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功