IDA权威指南——第一章

1.2何为反汇编

为了回溯编程过程,我们使用各种工具来撤销汇编和编译过程。通过这些工具我们可以得到汇编语言形式的输出结果。

反汇编的重重困难

  编译过程会造成损失

  编译属于多对多操作

  反编译器非常依赖于语言和库

  要想准确地反编译一个二进制文件,需要近乎完美的反汇编能力.

1.3为何反汇编

通常以下情况下需要进行反汇编

  分析恶意软件

  分析闭源软件的漏洞

  分析闭源软件的互操作性

  分析编译器生成的代码,已验证编译器的性能和准确性

  在调试时显示程序指令

1.4基本的反汇编算法

第一步:确定进行反汇编的代码区域.通常情况下指令和数据混杂在一起.通常用该文件的一个基本格式来区分,比如Windows下 的PE和linux下的ELF.

第二步:知道指令的起始地址之后,下一步就是读取该地址(或文件偏移量)所包含的值,并执行一次表查找,将二进制操作码的值与他的汇编语言助记符对应起来.根据被反汇编的指令集的复杂程度,这个过程可能非常简单,

第三步:获取指令并解码任何所需的操作数后,需要对它的汇编语言等价形式进行格式化,并将其在反汇编代码中输出.

IDA 基本认识:

open一个文件:

可以看到pe64.dll说明IDA已经识别到这个文件的类型,当选项中只有binary file时,说明IDA没有识别出来,此选项为默认选项.

 

posted @ 2023-11-09 20:21  robot__i  阅读(146)  评论(0)    收藏  举报