linux gdb反汇编定位问题

发布时间:2023年12月18日

日前解决一现网问题遇到补丁加载未生效现象,想要验证流程是否走进补丁代码,由于补丁函数和原函数名称一样,且修改代码较少,通过普通gdb方法难以看出是否走进补丁,但可用gdb反汇编方法来验证。

gdb该进程,之后断补丁函数,再使用disassemble进行反汇编,查看补丁加载前后汇编代码,若不一致则可确定两次走进不同函数。

加载补丁前

加载补丁后

从汇编指令可看出,加载补丁后在原函数基础上加了8字节的偏移,补丁的原理就是在原来函数基础上加上跳转,到补丁函数地址执行,之所以是8字节,因为ldr指令和br各占4字节,总共是8字节,这也是为什么有些函数太小就无法做补丁的原因,因为函数本身大小没有达到汇编跳转指令的大小。

文章来源:https://blog.csdn.net/hhhlizhao/article/details/135044627
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。