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 。

相关推荐
一品人家4 天前
win32汇编环境,得到当前日期时间的例子
汇编
试试看1684 天前
自制操作系统第三天
汇编·系统架构
0xCC说逆向7 天前
Windows逆向工程入门之汇编位运算
c语言·汇编·windows·安全·逆向
矮油0_o7 天前
30天开发操作系统 第 20 天 -- API
c语言·汇编·操作系统
charlie1145141917 天前
从0开始的操作系统手搓教程 4:做好准备,跳到加载器(Loader)
汇编·学习·操作系统·调试·mbr·手搓教程·bochs
官子无敌刘小路10 天前
汇编简介&常用语法
汇编
二进制怪兽14 天前
[笔记] 汇编杂记(持续更新)
汇编
bae-唯一15 天前
关于32位和64位程序的传参方法及虚拟机调试工具总结
汇编·学习
E_han16 天前
7.list
开发语言·汇编·数据结构·c++·算法·list
二进制怪兽16 天前
[笔记] x86汇编语言:从实模式到保护模式之第一章 十六进制计数法
汇编