GBA反汇编(烈火之剑<中文版>查找字库)

本文介绍了如何通过反汇编工具No$GBA debug版对GBA游戏《烈火之剑》进行反汇编,以找到字库地址。通过设置断点、观察精灵对话框变化、分析寄存器状态,逐步锁定关键寄存器R7,发现R7指向的ROM地址为字库地址。在分析循环和指令过程中,确定了r8和r11的重要性,并进一步细化分析,揭示了字库查找的流程和关键步骤。
摘要由CSDN通过智能技术生成

其实,反汇编很简单,但最好还是看一下每个功能

第一步,下载 No$GBA debug版,注意是后缀是debug;

第二步,ROM,烈火之剑的ROM.

这两样东西,都能用搜索引擎搜索到


第三步

注意绿色方框的地址,写断点("调试"→"设置带条件的断点"或 ctrl + B)设置成  "[06013000..06013020]!"(注:不包括双引号,因为每个Tile 20字节大小,所以设置为区域断点)


②不要关了精灵对话框,时刻注意它的改变,切换回不显示任何文本的状态如下图

(注:其中会中断几步,那些都不是要显示文本的);




③,按R键,其中会中断很多次例如下图

看指令和寄存器状态,指令上一步是,

streqh r3,[r1],2h;此指令,把寄存器R3的值写入[r1]中.(注:以后[]里面都表示存储器地址);

虽然是写入该地址数据指令,但看r3的值为0,所以现在这段程序还不是显示文本的

<提示:你可以按F7单步跟踪,你会发现此段是把区域的Tile清空>


④点击游戏的屏幕或F9或"运行"→"运行",会发现又断在刚才那个地方,注意了,你要时刻注意这精灵对话框,看里面的变化


⑤因为运行过头了,所以变成现在这种情况


注意绿色的六个寄存器状态,和绿色的代码,

08005C8C E7D1     b       8005C32h	;
08005C8E B001     add     sp,4h		;
08005C90 BC03     pop     r0,r1		;
08005C92 7882     ldrb    r2,[r0,2h]	;
08005C94 1852     add     r2,r2,r1	;
08005C96 7082     strb    r2,[r0,2h]	;
08005C98 BCF8     pop     r3-r7		;
08005C9A 4698     mov     r8,r3		;
08005C9C 46A1     mov     r9,r4		;
08005C9E 46AA     mov     r10,r5	;
08005CA0 46B3     mov     r11,r6	;
08005CA2 46BC     mov     r12,r7	;
08005CA4 BCF0     pop     r4-r7		;
08005CA6 BC01     pop     r0		;
08005CA8 4700     bx      r0		;
08005CAA 6838     ldr     r0,[r7]	;
08005CAC 4310     orr     r
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值