安全矩阵

 找回密码
 立即注册
搜索
查看: 6546|回复: 0

利用IDA PRO反汇编C++程序之洗白篇

[复制链接]

991

主题

1063

帖子

4315

积分

论坛元老

Rank: 8Rank: 8

积分
4315
发表于 2021-2-5 21:06:38 | 显示全部楼层 |阅读模式
原文链接:利用IDA PRO反汇编C++程序之洗白篇

IDA Pro是Hex-Rayd公司销售的静态反编译软件,全称为交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro。IDA Pro首先是一个反汇编器,可以显示二进制汇编代码(可执行文件或DLL),它提供的某些高级功能使操作者可以更容易理解汇编代码。其次,它又是一个调试器,通过它可以逐条调试二进制文件中的指令,从而确定当前正在执行指令及执行顺序等。

作为最优秀的反汇编软件之一,通常情况下人们利用IDA Pro进行挖掘、研究软件中的漏洞、逆向分析恶意代码及使用IDC脚本语言自动执行各项任务。也可以利用IDA Pro调试软件,修改软件中的数据或执行流程,从而达到改变软件功能的目的。
工业网络安全领域中,在没有源代码的情况下,人们通常利用IDA Pro分析恶意软件,了解恶意软件的运行机制,及时防御攻击。也可以利用IDA Pro进行漏洞分析(挖掘漏洞、分析漏洞、开发破解程序)等。
本文先介绍一下IDA PRO的常用功能,后期安帝科技会继续带来使用IDA PRO更改简单C++程序的过程分享。

什么是IDA PRO

01  常用快捷键
  • a:将数据转换为字符串;
  • F5:一键反汇编;
  • Esc:回退键,能够倒回上一部操作的视图;
  •   :空格键,切换IDA-View窗口中的图形视图和文本视图;
  • Shift+F12:可以打开string窗口,一键找出所有的字符串;
  • ctrl+w:保存IDA数据库;
  • ctrl+s:选择某个数据段,直接进行跳转;
  • x:对着某个函数、变量按该快捷键,可以查看它的交叉引用;
  • g:跳转到某个地址;
  • n:更改变量的名称;
  • y:更改变量的类型。

02  窗口简介
在IDA PRO中可以通过View→Open Subviews菜单打开用户需要显示的窗口。

(1)IDA-View窗口
IDA-View窗口即反汇编窗口是操作和分析二进制文件的主要工具。IDA-View窗口有两种显示模式:默认的基于图形视图和面向文本的列表视图,用户可根据自己的喜好选择适合的视图模式。
  • 图形视图
图形视图将一个函数分解为很多基本块,可以通过图形视图清楚地了解函数中的逻辑及控制流程。
图形视图使用不同颜色的箭头区分函数块中的执行方向。绿色线代表当条件为true时的执行分支,红色线代表当条件为false时的执行分支,蓝色线代表下一个即将执行块。

  • 文本视图
文本视图会呈现一个程序完整的反汇编代码清单,只有通过这个窗口才能查看一个二进制文件的数据部分。
可以通过Options→General命令打开IDA的常规选项,在这里可以在视图中添加偏移地址、栈指针、反汇编注释等。

在显示窗口的左侧提供箭头窗口,描述函数中的非线性流程。实线代表非条件跳转,虚线代表条件跳转。如果一个跳转将控制权转交给程序中某个以前的地址,这时会使用粗线进行表示,出现这类逆向流程,通常表示程序中存在循环逻辑。


(2)函数窗口
函数窗口包括函数名、段名、起始地址、长度、参数信息等。


(3)十六进制窗口
十六进制窗口显示程序内容和列表的标准十六进制代码,以及其对应的ASCII字符。右击选择“Edit”选项或按下F2快捷键可进入十六进制编辑器,在编辑器修改对应数据后,右击选择“Apply changes”或按下F2提交数据,从而达到修改应用程序的效果。


(4)结构体窗口
结构体窗口用于显示 IDA 决定在一个二进制文件中使用任何复杂的数据结构布局。双击数据结构的名称,IDA 将展开该结构,可以查看该结构的详细布局,包括每个字段的名称和大小。可以在此窗口中进行创建和修改结构体的操作。


(5)枚举窗口
如果 IDA 检测到标准枚举数据类型,将在枚举窗口中列出该数据类型。可以使用枚举来代替整数常量,提高反汇编代码的可读性。在枚举窗口中也可以定义自己的枚举类型,并将其用在经过反汇编的二进制代码中。


(6)String窗口
String窗口中显示的是从二进制文件中提取出来的所有字符串,以及每个字符串所在的地址。该窗口有助于通过程序运行输出逆向找出对应的代码片段。


(7)函数调用窗口
函数调用窗口展示了一个函数中调用了哪些其他函数,以及自身被哪些函数调用。

如上图所示:函数main在函数_scrt_common_main_seh(void)中调用1次,main函数本身调用了其他9个函数。


初次接触时,IDA Pro中似乎有很多窗口,上述的7个窗口是反编译时常用的几个。具体区别为:
  • IDA-View窗口主要用于操作、分析二进制文件;
  • 函数窗口主要用于列举IDA在数据库中的函数;
  • 十六进制窗口主要展示程序内容和列表的十六进制代码;
  • 结构体窗口主要展示二进制文件中的复杂数据结构;
  • 枚举窗口主要展示IDA检测到的标准枚举数据类型;
  • String窗口主要展示二进制文件中的所有字符串;
  • 函数调用窗口主要展示一个函数的上下级调用关系。
除了上述窗口,IDA Pro中还有其他窗口,如:导入窗口、导出窗口、Names窗口、段窗口、签名窗口、类型库窗口等。
上述窗口的理论知识已为大家进行了洗白,《利用IDA PRO反汇编C++程序之操作篇》即将上映,欢迎大家持续关注安帝科技,我们下周一见~~~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 18:42 , Processed in 0.012184 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表