zoukankan      html  css  js  c++  java
  • IDA Pro 使用初探

    实验环境

    • 操作机Windows xp
    • IDA Pro 6.8

    实验目的

    • 体验初步的逆向工程。
    • 尝试使用IDA Pro,掌握不同的文件载入方法
    • 初步理解IDA Pro数据库文件的功能

    实验步骤

    步骤1:双击打开IDA pro32位程序加载器

    本步骤演示首次打开IDA Pro过程

    首先,我们演示第一次打开IDA Pro,这个过程会弹出一些额外的对话框,为了在以后的打开操作中节约时间和减少步骤,我们选择默认不显示这些对话框。

    (1)双击打开桌面上IDA_Pro_v6.8文件夹,然后找到文件idaq.exe双击打开:

    img

    (2)在弹出的IDA关于信息框(About)点击OK按钮,在接下来弹出的支持信息框(Support Message)选中下次不显示本信息(Don't show this message again)并点击OK按钮,确保下次不显示本对话框。

    img

    (3)接下来会弹出IDA许可声明对话框(IDA License),点击我同意(I Agree)即可,之后不会再出现本对话框。

    img

    步骤2:使用新建方式载入目标程序

    本步骤使用IDA Pro新建方式载入程序

    其次,我们演示IDA Pro的加载文件功能,这里通过新建方式载入待分析目标文件。

    (1)步骤1操作完成后,会弹出IDA载入框(Quick Start),显示IDA支持的三种加载文件方式,这里首先尝试使用新建方式(New):

    img

    载入方式功能介绍如下:

    • New(新建):选择新建功能,IDA将启动一个标准的文件打开对话框,根据用户选择,载入要分析的文件。
    • Go(运行):选择运行功能,IDA将直接打开一个空白工作区,用户可以直接将要分析的文件拖入工作去,或者使用File菜单中Open选项来打开文件。
    • Previous(上一个):选择上一个功能,IDA会打开其下“最近使用过的文件”列表中的一个文件。

    如果不存在之前打开的文件,该按钮为灰色禁用。

    (2)在文件选择对话框中依次点击 桌面 - 001文件夹 - x86.exe,载入目标程序:

    img

    (3)在弹出的加载对话框,可以看到IDA对当前程序的默认加载方式和选项,直接点击OK即可:

    img

    (4)接下来会弹出确认窗口,同样选中下次不显示本信息(Don't show this message again),并点击OK按钮:

    img

    (5)在接下来弹出的Hex-Rays信息框再点击OK后,会要求设置更新选项,这里直接点击OK,默认即可。

    img

    步骤3:关闭IDA Pro并保存数据库文件

    本步骤关闭IDA Pro并保存数据库文件

    IDB数据库文件中,记录了用IDA Pro对该程序分析中的工作状态,包括反汇编分析、区段扫描、用户自定义结构、用户自定义名称、注释等信息。

    在下次的载入中,可以通过直接加载数据库文件,获取之前的工作和分析状态,避免工作状态的丢失。

    然后,在载入操作完成后,我们演示关闭并保存IDA Pro数据库文件。

    (1)点击右上角的关闭按钮,弹出IDA Pro保存数据库窗口(Save Database),使用默认选项,直接点击OK即可以保存生成数据库(.idb)文件。

    img

    数据库打包选项功能介绍如下:

    • Don’t pack database(不打包数据库):这个选项仅仅刷新对4个数据库组件文件所做的更改,并不会创建IDB文件,不建议使用本选项。
    • Pack datatase(Stone)【打包数据库(存储)】:默认选项,会将4个数据库组件文件存到一个IDB文件中,之前的任何IDB文件将会被立即覆盖。

    创建IDB文件后,4个数据库组件文件将被删除。

    该选项不使用压缩。

    • Pack database(Deflate)【打包数据库(压缩)】:和前一个选项类似,但是会压缩数据库文件。
    • Collect garbage(收集垃圾):如果勾选本选项,IDA会在关闭数据库之前,从数据库中删除没有用的内存页面。

    在选择这个选项的同时,选择Deflate选项可创建尽可能小的IDB文件。

    • DONT’T SAVE the database(不保存数据库):如果勾选本选项,IDA将不会保存或覆盖之前生成的IDB文件。

    (2)再次打开桌面上的001文件夹,可以看到已经生成了x86.idb文件:

    img

    步骤4:使用IDA Pro加载64位程序并关闭

    本步骤拖动使用IDA Pro加载64位程序并关闭

    在实际使用过程中,可能由于某些误操作,使得我们不想保存IDA Pro的工作状态。

    这时,除了用快照方式还原外(第二课会介绍),还可以在关闭时选择不保存IDB数据库文件,这样本次载入时的所有工作操作都不会被记录。

    接下来,我们尝试使用拖动加载的方式,来载入程序。

    这次演示我们在关闭时,不保存IDB数据库文件。

    (1)双击打开桌面上的001文件夹,拖动x64.exe到IDA Pro文件夹下的iqaq64.exe上,加载64位程序:

    img

    (2)同样使用默认选项,直接点击OK:

    img

    (3)在接下来的任意一个对话框点击No,选择不加载程序调试信息pdb文件:

    img

    (4)成功完成对64位程序的加载,点击右上角关闭按钮,这次勾选不保存数据库:

    img

    (5)可以看到001文件夹下面,没有生成x64.exe对应的IDB文件。

    如果之前已有IDB数据库文件,将不会对之前的工作状态进行覆盖。

    步骤5:使用IDA Pro加载IDB文件

    本步骤使用IDA Pro打开IDB文件

    在实际的IDA Pro操作过程中,如果逆向分析人员需要向其他人共享自己的工作状态,一般采用向对方拷贝IDB文件的方式,不需要再拷贝原始文件就可以继续分析。

    最后,我们来演示仅仅通过载入IDB数据库文件,进行程序分析。

    (1)将文件夹中的x86.idb文件拷贝到桌面上,然后拖动到idaq.exe打开:

    img

    (2)同样可以正常获取汇编信息,在FILE菜单栏,可以看到最近打开的文件记录:

    img

    实验结果分析与总结

    IDA Pro可以通过多种方式,加载分析目标程序,生成的IDB文件保存分析程序信息。

    思考

    1、尝试使用idaq.exe打开64位程序,以及使用idaq64.exe打开32位程序,观察结果。

    2、自行尝试使用Go方式打开待分析程序。

  • 相关阅读:
    RabbitMQ修改端口号和心跳时间
    RabbitMQ常用命令行
    机票分页存储过程!
    Sql Server随机取数据
    Entity framewok 如何实现多条记录作为一条取出, for xml path如何实现
    AJAX请求时status返回状态明细表 readyState的五种状态
    最小化到托盘,右键退出
    post注入及提权思路
    MySQL提权之user.MYD中hash破解方法
    鸡肋提权之变态root利用
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14207306.html
Copyright © 2011-2022 走看看