ARM 全局变量更换基址寄存器

思索了两个晚上,一直没有弄清几万条指令里唯一的 x27, #80 来自哪里,结合上下文判定是个全局变量,通过动态调试给main传参数,确认参数 s 时会改变 x27, #80 的值,由 0 变 1。于是反推到 case 's' 处,发现此关联。以后找 arm 汇编的全局变量,用全局变量基址找关联更容易一些。

x23 :

40200c: d00001d7 adrp x23, 43c000 <memcpy@GLIBC_2.17>

402018: 9121c2f7 add x23, x23, #0x870 // x23=0x43c870

case 's':

402464: 52800020 mov w0, #0x1 // #1

402468: b90052e0 str w0, x23, #80 // gvar_80 = 1

40246c: 17fffeef b 402028 <ferror@plt+0x148>*/

x27 :

4020e8: d00001c0 adrp x0, 43c000 <memcpy@GLIBC_2.17>

4020ec: 9121c01b add x27, x0, #0x870 // x27=0x43c870

402600: b9405360 ldr w0, x27, #80 // w0=gvar_80;

偏移都是 80 ,但因 x* 变了,逆向时不好找到关联。与 intel 指令比起来,多了一层基址 0x43c870 。

相关推荐
hhcgchpspk2 小时前
汇编语言传递数据和地址的误区
汇编·笔记·nasm·masm
iCxhust3 小时前
MTK8088单板机制作(一)时钟电路
汇编·单片机·嵌入式硬件·微机原理·8088单板机
iCxhust5 小时前
8086 汇编位测试使用方法
汇编·单片机·嵌入式硬件·微机原理·8088单板机
iCxhust6 小时前
用汇编在8088单板机上创建一个进程
汇编·微机原理
AI科技星1 天前
第三卷:质数王朝志(全卷定稿)
c语言·开发语言·汇编·electron·概率论
H Journey1 天前
汇编基础知识:CPU的寻址逻辑
汇编·cpu寻址
AI科技星2 天前
《全域数学/数术工坊》体系总览
c语言·开发语言·汇编·electron·概率论
H Journey2 天前
用汇编语言写一个hello world,并进行汇编和编译
汇编·assembly·寄存器
逆境不可逃2 天前
一篇速成 汇编程序语言设计之 8086 汇编核心指令
汇编
疯狂打码的少年3 天前
【程序语言与编译】程序设计语言分类(机器/汇编/高级)
汇编·笔记