逆向-修复花指令得到源代码

本文介绍了如何处理逆向工程中遇到的花指令问题,通过编辑和修补程序来修正IDA的错误解析,确保函数地址正确,并利用NOP指令清理无用代码,最后刷新反编译窗口以更新伪代码。
摘要由CSDN通过智能技术生成

作为刚入门逆向新手,奔着遇到问题解决问题的思路,通过以文章的形式加深印象,仅作笔记分享。

花指令是用来对抗静态反汇编的,通过插入无用的字节使ida无法正确反编译,但不影响函数执行。通常使用花指令的程序在ida中会出现call一个函数地址加1的情况,这种情况应该call 0x1209这个地址。

这时候我们需要双击找到这个函数,会看到以下报错。

 定位到push rbx,通过Edit->Patch program->Change byte查看push rbx对应的十六进制是“ff f3”

也可以将光标放在此行,按快捷键d,是将指令转成数据。 

 地址0x1208是我们不需要的,而0x1209才是函数的正确地址,因此选中db 0F3h,右键->Analyze selected area,是让ida识别成指令。

 此时我们需要让0x1209当成函数的起始位置,光标定位到该行,通过快捷键p生成函数,可以看到如下:

 因为0x1208地址是无用的指令,所以需要给它nop掉,通过Keypatch插件将该行修改为nop,发现显示为db 90h,这时候右键让ida再分析一下就变成了nop指令了。

 

 f5打开反编译窗口,如果伪代码没有变化,说明ida有缓存,再按f5刷新一下即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值