用frida hook的时候,发现有个寄存器的值始终和预期不符,总是差那么点偏移
后来发现汇编最后有一个感叹号,查了下这个好像arm64才有的
总之意思就是在一条指令执行之后,会回写用于计算的寄存器
比如指令是这样的:
LDRH W23, [X20,#2]!
那么首先会取X20
偏移0x2的位置作为地址,读取16位(半字,一个字是32位,也就是4字节),结果给W23
然后把X23
高16位清零;到这里指令就“等于是”执行完成了
然后X20
的值就会被修改为X20 + 2
也就是说X20
所指向的位置在命令执行后进行了偏移
具体参考: