逆向安全基础之IDA使用简介

摘要:
现在让我们简要介绍一下IDA在Windows试用版中的基本用法。以下简单的C语言程序为例说明IDA反汇编代码:该程序的基本功能是申请动态内存空间,存储一段字符串信息,打印,最后释放动态内存。随后,我们将结合具体应用信息,介绍安全反向分析和搜索安全漏洞的基本思路和方法。
转载:http://m.blog.csdn.net/ilnature2008/article/details/54912854IDA简介

IDA是业界一个功能十分强大的反汇编工具,是安全渗透人员进行逆向安全测试的必备工具,其强大的静态反汇编和逆向调试功能能够帮助安全测试人员发现代码级别的高危致命安全漏洞,当然其价格也不便宜,国内一个license从几千到一万多不等。现在结合windows试用版的IDA,简单介绍一下其基本使用。

IDA基本界面

现使用C语言编写一个简单的主程序,代码如下:

 逆向安全基础之IDA使用简介第1张

可以被IDA解析的文件包括.exe、.so、.o等格式,在IDA中直接打开上述格式的文件即可,以.o文件为例(使用gcc编译器编译:gcc -o test test.c),打开过程选择如下:

逆向安全基础之IDA使用简介第2张

红色窗口为函数列表,一个文件被反编译后所有的函数列表都可以在此窗格中显示;

蓝色窗口为汇编代码区,双击每个函数,可以看到对应函数对应的汇编代码段;

黑色窗口为输出窗口,文件反汇编过程中的信息都可以在此窗口中看到。

逆向安全基础之IDA使用简介第3张

在汇编代码区输入空格键,可以切换汇编代码为流程图浏览模式:

 逆向安全基础之IDA使用简介第4张

在流程图模式下,绿线代表判定条件成立,红线代表判定条件不成立:

逆向安全基础之IDA使用简介第5张

几个有用的窗口:

(1)常量字符串窗口:

逆向安全基础之IDA使用简介第6张

通过此窗口可以看到程序中所有的常量字符串列表,逆向分析一个程序从字符串入手是一个方向:

逆向安全基础之IDA使用简介第7张

(2)字符串查找窗口:

 逆向安全基础之IDA使用简介第8张

也可以通过ALT+T快捷键打开,可以通过此窗口查找某个指定的字符串:

 逆向安全基础之IDA使用简介第9张

(3)地址跳转:

 逆向安全基础之IDA使用简介第10张

也可以通过输入G打开窗口:

 逆向安全基础之IDA使用简介第11张

使用该窗口可以跳转到指定地址的汇编代码段。

(4)Debugger options:

 逆向安全基础之IDA使用简介第12张

在该窗口中设置调试程序的一些选项,包括调试时进行的一些操作设置、日志记录设置等等:

 逆向安全基础之IDA使用简介第13张

(5)Switch debugger

 逆向安全基础之IDA使用简介第14张

通过此窗口可以设置调用的调试器:

 逆向安全基础之IDA使用简介第15张

设置好调用的调试器后需要设置远程调试器的信息:

 逆向安全基础之IDA使用简介第16张

 逆向安全基础之IDA使用简介第17张

把我们想要在调试器服务端(Windows或Linux)调试的可执行文件拷贝到调试器客户端,使用IDA打开,上述设置的参数文件路径应该在远程调试服务端上有效,同时不要忘记输入调试器服务端的主机名字和IP地址,远程调试只有当这些设置完成后才有效。

(6)脚本执行窗口:

 逆向安全基础之IDA使用简介第18张

打开该窗口后,可以选择执行脚本(.idc或者.py格式),在静态分析汇报代码时需要编写一些自动化的脚本,都是通过此窗口进行执行,执行的结果会显示在前面提到的输出窗口中:

逆向安全基础之IDA使用简介第19张

(7)汇编代码注释编写:

鼠标点击某一行汇编代码,然后输入分号“;”,就可以打开输入编辑注释的窗口,在阅读汇编代码的过程中编写注释是一个很好的习惯。

 逆向安全基础之IDA使用简介第20张

(8)Xrefs graph to和Xrefs graph from

在函数名上点击右键:

 逆向安全基础之IDA使用简介第21张

通过Xrefs graph to可以看到该函数被其他函数调用的信息:

逆向安全基础之IDA使用简介第22张

通过Xrefs graph from可以看到该函数调用的其他函数:

逆向安全基础之IDA使用简介第23张

通过此功能可以了解函数调用流程图。

IDA汇编代码介绍

还是以下这个简单的C语言程序为例说明IDA反汇编代码:

逆向安全基础之IDA使用简介第24张

该程序的基本功能就是申请一块动态内存空间,并存储一块字符串信息,然后打印,最后释放动态内存。

使用gcc编译器对该c程序进行编译,程序输入出结果如下:

逆向安全基础之IDA使用简介第25张

以下是对.o文件进行反汇编的汇编代码段,图中介绍了核心代码的含义:

逆向安全基础之IDA使用简介第26张

 个人经验,开始阅读汇编代码时结合源代码会更好理解些,毕竟C语言代码的可读性更强,理解一些简单的汇编代码段后,阅读更大量的汇编代码就会得心应手些。

另外很多人都有疑问,如果有源代码的话,直接走读源代码不是更好吗,为什么还需要走读汇编代码?试想一下,一个千万行代码级别的产品,走读代码,该从哪开始?何况源代码中有很多宏定义,也有可能很多代码都不会被编译,从源代码看到的问题点可能实际根本不会存在安全风险,而反汇编则可以避免这种问题,我们可以根据进程信息去提取出有效的文件进行反编译,反编译的结果都是优化以后的代码,可以简单清晰的看出程序的数据流图,只不过反汇编要求安全测试人员对汇编代码要非常熟悉,万事熟能生巧,汇编代码多读多写,自然慢慢就会熟悉了。

后续会结合具体的应用信息介绍一下安全逆向分析与寻找安全漏洞的基本思路和方法。

免责声明:文章转载自《逆向安全基础之IDA使用简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇迁移docker wsl2 VHDX 文件的方法(转发)Go优秀开源项目推荐下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vss安装,设置以及与vs2005联合项目操作(转) 子曰

服务端安装 1.安装Microsoft Visual SourceSafe2005到一台服务器,安装模式选择Full 2.运行Microsoft Visual SourceSafe Administration 3.建立一个新的数据库,记住数据库所在目录,并将之设置为共享,权限为完全控制 4.添加新用户 客户端安装 5.在本地机器安装Microsoft...

第2章:动态调试技术--OllyDbg

OllyDbg 是有 Oleh Yuschuk 编写的一款具有可视化界面的用户模式调试器.可以在各种版本的 Windows 上运行,但在 NT 架构上是最好的. plugin 目录中存放插件,直接将插件放里面,OD即可检测到. Debug -> Select Import Librariers ,可以将符号库( Lib )导入,让OD以函数名的形式显...

Xcode基本操作

[From] http://blog.csdn.net/phunxm/article/details/17044337 1.Xcode IDE概览 说明:从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码编辑窗口(Standard/Primary Editor)”。...

VS调试快捷键

1.  F5 - 启动调试 2.  Shift + F5 - 停止调试 3.  Ctrl + F5  :开始执行(不调试) 4.  F9 - 设置断点 5.  Ctrl + Shift + F9 - 删除所有断点 6.  F10 - 逐过程调试 7.  F11 - 逐语句调试 8.  Ctrl+F10:程序没有启动,把光标放到程序想要运行的位置,然后按Ct...

在Android手机或者平板上直接调试运行APK程序

今天晚上有个同学问我,说AVD运行android程序太慢了,有没有更好的方法呢?? 于是我就推荐他可以用android系统的手机或者平板来直接调试运行android程序,下面让我来简单的介绍怎么用。 参考文章:http://www.cnblogs.com/plwang1990/archive/2011/07/04/2097757.html、 http://...

VSS的配置和使用

〇、摘要 在企业开发环境中,源代码管理占据着重要的一环。本文将通过一个实例,创建一个源代码管理的项目SourceManager,来讲述如何使用Visual Studio.Net开发环境,配合Visual Source Safe 6c和IIS,创建企业团队开发环境。 一、 开发前的准备 1、 在装有Windows 2000或者Windows XP Pro...