反汇编简介

什么是反汇编

在传统软件开发模型中,程序员使用编译器,汇编器和链接器中的一个或者几个创建可执行程序。为了回溯编程过程(或对程序进行逆向工程),我们使用各种工具来撤销汇编和编译过程。

反汇编难点
编译过程造成损失 机器语言中没有变量或函数名,变量类型信息只有通过数据用途(而不是显示的类型声明)来确定。看到一个32位数据被传输,需要经过一番分析才能知道它表示的是一个整数,浮点值还是指针。
编译属于多对多操作 源程序可以通过多种不同的方式转换成汇编语言,机器语言也可以通过许多不同的方式转换成源程序。
反编译器非常依赖于语言和库 用专门生成C代码的反编译器处理有Delphi编译器生成的二进制文件,可能会得到非常奇怪的结果。同样,对用于windows编程API一无所知的反编译器处理编译后的windows二进制文件,也不会得到任何结果。
想要准确的反编译一个二进制文件,需要近乎完美的反汇编能力 反汇编的任何错误遗漏都会影响反编译代码

为什么要反汇编

分析恶意软件
分析闭源软件的漏洞
分析闭源软件的互操作性
分析编译器生成的代码,以验证编译器的性能和准确性
在调试时显示程序指令

如何反汇编

如果有一个100kb的文件,需要区分其中代码与数据,并把代码转换成汇编语言显示给用户。整个过程中,不遗漏信息。
反汇编器会从大量算法中选择一些适当的算法来处理文件,了解基本算法和其局限后可通过手动干预来提高反汇编输出整体质量。
第一步

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值