linux gdb反汇编定位问题

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

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

加载补丁前

加载补丁后

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值