简单反汇编之if判断

本文通过分析VC环境下一个简单的if语句在Debug和Release模式下的反汇编代码,展示了编译器对代码的优化处理。在Debug模式下,反汇编代码与源代码结构相似,而在Release模式下,编译器优化使得代码变得难以阅读,但执行效果保持一致。通过对比学习,可以逐步掌握反汇编的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    什么都是从简单开始发展的,反汇编也不例外,最近学习了如何在VC中查看及反汇编代码,反汇编在新手看来都是很神秘的东西(也包括我),感觉很牛,不过也倒是,反汇编犹如武侠中的"吸星大法",这个比喻一点都不过分,会了"吸星大法"的人想要谁的功夫只要一伸手就可以得来,不过能练成"吸星大法"的牛人也不多,因为在练习的时候要坚受苦练......

   那么在软件也不例外,什么九阴白骨爪,吸星大法,葵花宝典,等等,其中"吸星大法"最为邪恶。为了"吸星大法"还是一步一个招式,慢慢往下练。

 

  先来看看最简单的if语句debug反汇编,代码如下:

 

F10启动单步调试,然后右键 Go To Disassembly转到汇编视图,如下:

 

test反汇编函数如下:

 

 

    当然我们在实际反汇编的过程中是反汇编Release也没有源代码可对比的,上面是源吗加debug反汇编,看起来跟我们写的程序结构式很相符的。但是到了Release版本,编译器对代码做了很多的优化以及处理,代码的结构跟原来作者所表达的思想是截然不同的,但是结果都是一样的。下面我们来看看最简单的if语句Release反汇编,用OD加载Release版本的程序,然后走入程序入口,反汇编代码如下:

 

  通过以上分析可以看出Release版本和debug版本代码完全不一样,Release是通过编译器优化处理,也是发行版,比debug难读懂。而我们在实际过成中反汇编都是针对Release,所以还是得需要多多练习,从简单开始,多对比debugRelease版生成的汇编代码的不同,循循渐进,慢慢练成属于自己的"吸星大法"!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值