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 。

相关推荐
techdashen6 小时前
Rust 1.88 终于稳定了裸函数:写汇编不再需要那堆样板代码
汇编·rust
So_shine1 天前
stm32f103汇编-1:LED点灯
汇编·stm32·单片机·led
北漂Zachary2 天前
四大编程语言终极对决:汇编/C#/Go/Java谁更强
汇编·golang·c#
达帮主3 天前
25.C语言 递归函数
c语言·开发语言·汇编
aq55356005 天前
Laravel2.x:被遗忘的PHP框架遗珠
开发语言·汇编·c#
lhbian5 天前
C# vs 汇编:编程世界的两极对比
开发语言·汇编·c#
zopple6 天前
汇编、C、C++和Java核心技术对比
c语言·汇编·c++
aq55356007 天前
Laravel7.x重磅升级:十大新特性解析
开发语言·汇编·c#·html
aq55356009 天前
三大编程语言深度对比:C# vs 易语言 vs 汇编
开发语言·汇编·c#
aq55356009 天前
编程语言对比:从汇编到PHP的四大层级解析
开发语言·汇编·php