此方法是从神秘老师(一只神秘)的视频得到的灵感,分享出来也是经过其本人的同意
视频如下
也希望大家多多支持神秘老师捏
多的不说,少的不唠,也是进入正题
我们先找到需要获取的函数
然后进行分配内存页,保存该地址
然后在函数头进行如下的操作码修改
意思就是:
把该地址传给r1
再把需要获取的寄存器的地址使用str指令写入r1的值中(注意不是地址)
在之后触发该函数即可获取到你所需要的寄存器的地址了
没触发前
触发后
这个就是r0的地址了,跳转过去就是该类的实例
甚至可以多写几条str就可以达到获取全部寄存器值了
比如STR R1, [R1,#4]等等
当然,和老外那个断点脚本相比呢,有利也有弊,请大家酌情选择,适当衡量
最后,肯定会有人有疑问,那原函数不是被破坏了么
大丈夫よ、对该函数进行hook就可以处理了捏
然后说一下
如果当场上有多次函数被触发怎么办?
这个呢就是根据被触发的先后顺序而确定该获取哪一个寄存器的地址
而这个确实称得上另类的人造指针了。
有能力者可以制作成一个脚本,像获取lr寄存器查看调用啦,或亦是通过修改实例里的字段来达到不用写敌我判断啦,都挺实用的。
ojbk,今日的就到此为止,感谢大家的支持。