前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IDA pro简介

IDA pro简介

作者头像
安恒网络空间安全讲武堂
发布2019-09-29 14:12:33
4.9K0
发布2019-09-29 14:12:33
举报

IDA pro介绍

本周分享的工具是IDA Pro 7.0。IDA Pro全称是交互式反汇编器专业版(Interactive Disassembler Professional),简称IDA,它是一种典型的递归下降反汇编器。IDA并非免费软件,但Hex-Rays公司提供了一个功能有限的免费版本。IDA是Windows,Linux或Mac OS X托管的多处理器反汇编程序 和调试程序,它提供了许多功能,是一款很强大的静态反编译工具。支持很多插件和python,利用一些插件可以提供很多方便的功能大大减少工作量,在CTF中,逆向和pwn都少不了它,更多强大的功能等待童鞋们自己去学习挖掘,三言两语讲不完。它支持数十种CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。 IDA pro7.0(绿色英文版)部分插件+ 《IDAPro权威指南第2版》已经上传至群文件,来源于: 吾爱破解论坛。论坛也有汉化版,英文原版本习惯了都一样。 看雪有一个 IDA pro插件收集区,大家有需要也可以去那找https://bbs.pediy.com/forum-53.htm

IDA pro常用功能介绍

IDA pro安装很简单,没什么难度,这个还是绿色版直接解压运行即可,就是大家需要什么插件自己装,这样比较干净整洁,挺好的。

IDA文件目录简介

ida.exe32位的,大部分CTF中 windows上可执行程序逆向用这个就可以了; ida64.exe顾名思义是 64位,一般CTF中 ELF文件中都是用这个打开, 32位版本支持不好的都可以用这个。

启动

打开以后首先显示IDA的介绍和注册信息等

New(新建空白的工程),Go(运行工程),Previous(运行过的工程记录)

选择 File菜单下的 Open,打开要逆向的文件,弹出一个 Loadanewfile的界面。可以选择:

  1. 程序的类型;
  2. 处理器的类型;
  3. 加载的段地址和偏移量;
  4. 是否允许分析;
  5. 一些加载选项;
  6. 内核和处理器的一些选项;
  7. windows系统dll所在的目录。

默认选择第一个 PE文件就可以,一些其他格式的文件可以使用第三个选项 Binaryfile以二进制文件的形式记载,自己解析。

各窗口的功能:

  1. IDA view: 定位要修改的代码段在哪里。
  2. Hex view: 用来修改我们的数据
  3. exports: 导出函数表窗口
  4. import: 导入函数表窗口
  5. names: 函数和参数的命名列表
  6. functions: 样本的所有函数窗口
  7. strings: 字符串显示窗口,会列出程序中的所有字符串

顶部是工具栏其中包括一些逆向分析过程中经常使用的工具,基本工具栏能满足普通用户的需要,当然还可以通过 菜单栏View-> Toolbats-> Advancedmode选项切换到 高级模式工具栏,高级模式工具栏包含更加丰富的工具。切换回基本模式方法一样,在上面有个 Basicmode

工具栏下面是导航栏,加载文件地址空间的线性视图,不同的颜色代表不同类型的文件内容,在导航栏下方列出了不同颜色所代表的文件内容。可以放大或缩小导航带,点击导航栏可以在反汇编窗口或十六进制窗口中跳转到对应选中的位置。

反汇编窗口也称 IDA view窗口,显示了被加载文件的反汇编代码,是我们静态分析过程中最主要的窗口。该窗口有两种显示格式,分别为文本视图和图形视图。很多时候我们会根据分析的需要在文本视图和图形视图之间切换可以使用快捷键: 空格键

图形视图能够清晰地显示一个函数的控制流程,可以通过”CTRL +鼠标滑轮”来缩放图形显示的大小。但对于大型或者复杂的函数可能会导致图形视图变得极为杂乱,此时可以通过IDA在图形视图下默认打开的图形概况窗口来定位需要查看的图形区域。

文本视图中,左边显示了所在段名称+文件地址,如图中光标所在处为 .text:00401091表示地址 0x00401091处代码位于 .text段,右边显示反汇编出来的汇编指令。

把鼠标移到某些标识符上 IDAPro会有一些提示,双击能自动跳到相应的位置。把一个函数逆向的方法很简单,只要光标在函数区域按 F5键(需要安装 Hex-RaysDecompiler插件,这里安装包已经自带,这是IDA最nb的插件)就转换显示出伪代码。

用户还可以通过 菜单栏View-> OpenSubviews选项打开需要的其他窗口。 下面将逐一介绍在静态分析过程中经常使用的一些次要显示窗口。

这是通过F5转换出的伪代码,方便用户更快速理解分析,大大降低了逆向工程的门槛,不再让人看汇编代码看到头秃。

Hex_View窗口也称十六进制窗口,相当于一个十六进制的编辑器,可以直接对代码和数据进行修改,用户可以同时打开多个十六进制窗口。

Exports窗口为 导出函数窗口,列出了被载入文件的所有导出函数,若载入文件没有抹去符号,很多时候用户可以直接在导出函数列表中找到入口函数。

Imports窗口为导入函数窗口,它会列出被分析的二进制文件导入的所有函数。

Structures窗口,在分析阶段,IDA会查询它的函数类型签名扩展库,设法将函数的参数类型和程序使用的内存匹配起来。但在实际分析过程中经常会遇到IDA无法自动识别的数据结构,此时就需要用户自己判断内存结构的类型,若该数据为结构体,可以在 Structures窗口创建一个 自定义结构体,然后将对应内存数据解析成该结构体,方便后续地分析。如下图所示为 Structures窗口中列出的一些快捷键用来创建结构体。在创建结构体后,可以在需要应用该结构体的数据地址处,使用ALT + Q快捷键列出 创建的自定义的结构体。更加详细地创建和使用结构体 的方法可以参见 《IDAPro权威指南第2版》的第8章。

Enums窗口,枚举窗口与结构体窗口类似,用户同样可以创建自定义联合体。如下图所示为Enums 窗口中列出的一些快捷键用来创建联合体。

Strings窗口显示了从被分析的二进制文件中提取出的字符串以及字符串所在的地址。在静态分析过程中,分析人员经常使用的一种方法就是字符串定位法,通过在Strings窗口中搜索一些特定的字符串,然后通过字符串的引用能够快速定位到关键的代码逻辑。

functions窗口列举出了IDA识别出的所有函数,双击选定函数条目,反汇编窗口会跳转到选定函数所在的起始地址处,在分析过程中能够快速定位到指定函数。

输出信息窗口,输出窗口将输出你所执行的各种操作的状态。

输出窗口下面的输入框在旧版本的 IDA pro里是用于执行IDC脚本命令,新版开始支持 python,如果你想用 IDC语法,点击一下左下角 python按钮切换到 IDC模式即可。

在关闭IDA程序或者打开其他数据库时,IDA都会弹出下图所示的保存数据库的对话框。

若勾选 Packdatabase(Store),会将之前分析过程中生成的四个数据库组件文件打包生成一个idb文件,并且删除四个数据库组件文件,若原目录下已有该分析文件对应的idb文件,会直接覆盖。在下次继续分析该文件时可以直接用IDA打开该 idb文件。 当用户不需要保存数据库时,可以勾选 DON’T SAVE the database选项,此时仍然会删除四个数据库组件文件,但不会生成或者覆盖 idb文件

IDA常用快捷键功能

空格键:反汇编窗口切换文本跟图形 Esc:在反汇编窗口中使用为后退到上个操作的地址处 Shift+F5:打开签名窗口 shift+F12:自动分析出参考字符串 ALT+T:搜索字符串(文本搜索) ALT+L:标记(Lable) ALT+M:设置标签(mark) ALT+G:转换局部变量为结构体 ALT+Enter:跳转到新的窗口 Alt+B:快捷键用于搜索十六进制字节序列,通常在分析过程中可以用来搜索opcode CTRL+M:列举出当前已经添加的标签 CTRL+S列举出二进制程序的段的开始地址、结束地址、权限等信息 F9:动态调试程序(其实IDA主要用作静态分析用的) F5:将一个函数逆向出来(生成c伪代码) G:跳转到指定地址 A:将选择的信息转换成ASCII(转换成可读性跟强的字符串) X(ctrl+X): 交叉引用,类似于OD中的栈回溯操作 N:对符号重命名 :&;(冒号&分号):光标所在位置添加常规注释和可重复注释 P:创建函数 T:解析结构体偏移 M:转换为枚举类型常量 Y:设置变量类型 H:转换16进制 C:光标所在地址处的内容解析成代码 D:光标所在地址处的内容解析成数据 A:光标所在地址处的内容解析成ascll码字符串 U:光标所在地址处的内容解析成未定义内容。

总结

IDA是一款功能很丰富很复杂很强大的工具,应用十分广泛。逆向工程的难点除了工具使用,更多的是分析方法和调试技巧。童鞋们如果想进一步深入学习,建议可以先了解常见的汇编指令和C语言,可以多尝试自己写写程序并锻炼动态调试能力。对于分析方法的训练,建议大家可以自己对照着源码和反汇编以后的代码去理解。更深层次的就是需要了解微机原理和程序设计方法,熟悉win api这些,这两年在CTF中linux ELF文件的逆向居多,win可执行程序较少,对于脱壳等也较少,更多倾向于算法逆向分析对于逆向技巧减少了很多。但是实际应用中,这些都是必备技能。希望大家能在2019学到更多知识,变的越来越牛逼。相关工具资源大家可以去 看雪、 论坛去找,之后安恒学院也会在X平台上线相关从入门到精通的系列课程和培训等,到时候请大家多多捧场。欢迎各位大佬在评论区留言分享经验技巧和资源

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 恒星EDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IDA pro介绍
  • IDA pro常用功能介绍
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档