hex反编译成c语言,IDA Hex-Rays反编译器使用的一些小技巧

fce2465629ba

这是什么?

在我的IDA系列中,我会介绍一些我在交互式反汇编程序,IDA Pro中发现的有趣又有用的东西。

我写这篇文章出于两个原因:

大部分有价值的信息都很分散,难以找到。有时候,你不得不靠自己去找寻这些信息,或是在论坛中寻求帮助。

更好的理解IDA的架构可以使你在使用它的时候少一些挫折感,也有节省大量时间。了解你的工具的不足和了解它的功能同样重要。[1]

汇编伪代码映射

对于这个反编译器,你需要了解的第一件事就是,它能进行反汇编并把它转化为C语言伪代码。听起来似乎有点多余,但确实很多人都没有意思到这点。例如,假设你有一个函数,它的功能是将一串flag变量与一个静态值进行比较,像这样:

Hex-Rays觉得这是一个偏移地址,因为它看起来像一个地址,但实际上它是一个标记检查代码。

fce2465629ba

在伪代码窗口中没有选项来修正它,但这个反编译器能把汇编代码映射为伪代码,我们可以通过把鼠标移至&loc_401001上,按下TAB键转到对应的反汇编代码中,把鼠标移到这个值上,按H,把它标记为一个值,而不是地址偏移。在再次按下F5进行反编译后,我们可以看到代码变成了我们想要的样子:

fce2465629ba

没办法上传动图,很无奈。。。

反编译器没有遗漏分支

一些人觉得反编译给出的伪代码有错误,如果有需要,它会把分支消去,人们觉得这种做法不可靠,所以他们花了大量时间在那些没有经过优化,重复,臃肿的汇编代码上。这种做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值