一、*IDA文件目录简介*

IDA的文件目录一般如下图所示,接下来介绍其几个文件夹的作用

cfg:cfg目录包含各种配置文件,包括基本的IDA配置文件ida.cfg,GUI配置文件idagui.cfg以及文本模式用户界面配置文件idatui.cfg。

dbgsrv: 在linux动态调试 ELF 文件对应的组件。

idc:idc目录包含IDA的内置脚本语言IDC所需的核心文件。

ids:ids目录包含一些符号文件(IDA语法中的IDS文件),这些文件用于描述可被加载到IDA的二进制文件引用的共享库的内容。这些IDS文件包含摘要信息,其中列出了由某一个指定库导出的所有项目。这些项目包含描述某个函数所需的参数类型和数量的信息,函数的放回类型以及与该函数的调用约定有关的信息。

Loaders:loaders目录包含在文件加载过程中用于识别和解析PE或ELF等已知文件格式的IDA扩展。

platform:系统运行需要的库文件

plugins:plugins目录包含专门为IDA提供附加功能的IDA模块。

procs:procs目录包含已安装的IDA版本所支持的处理器模块。处理器模块为IDA提供机器语言-汇编语言转换功能,并负责生成在IDA用于界面中显示的汇编语言。

Sig:sig目录包含IDA在各种模式匹配操作中利用的现有代码的签名。通过模式匹配,IDA能够将代码序列确定为已知的库代码,从而节省大量的分析时间。这些签名有IDA的“快速的库识别和鉴定技术”(FLIRT)生成。

til:til目录包含一些类型库信息,IDA通过这些信息记录特定与各种编译器库的数据结构的布局

二、*IDA扩展功能*

IDA Pro作为功能强大的静态反汇编器,具有良好的交互性、可编程性、可扩展性及对多处理器的支持。对于IDA Pro的可扩展性表现在两个方面,一是采用内置的脚本语言IDC写脚本;二是采用Hex-rays提供的SDK写插件Plug-in。简单的任务交由脚本完成,复杂的任务则需要定制满足需求的插件。

*2.1 IDC脚本*

IDA的功能虽然强大,但是显然不能满足每一位用户的一切需求,于是IDA集成了一个脚本引擎,让用户从编程的角度对IDA的操作进行全面控制。IDA的脚本可以看作一个宏,又或者一种查询语言,它能以编程的方式 访问IDA的数据库的内容。IDA的脚本语言叫做IDC,之所以取这个名称,可能是因为他的语法与C语言的语法非常相似。

常用IDC:https://www.cnblogs.com/LyShark/p/13100048.html

IDC脚本编写语法:https://my.oschina.net/u/4261514/blog/4197562

接下来介绍IDC脚本的使用方法和常用的IDC脚本,使用IDC脚本主要有两种方法:

\1. File->Script File 或使用热键Alt+F7打开以“.IDC”为后缀名的IDC文件执行。

\2. File->Script command… 或使用热键Shfit+F2,打开“Execute script”窗口编写并执行IDC文件。

IDC示例1:关键字段定位脚本

该脚本实现查找范围关键字段如“push ebp”和"mov ebp, esp",并返回其地位地址,脚本源码:

#include <idc.idc>

static main() {

auto currAddr,startSeg,endSeg;

auto array_ptr = CreateArray(“array”);

auto ptr = GetArrayId(“array”);

SetArrayString(ptr,0,“push ebp”);

SetArrayString(ptr,1,“mov ebp, esp”);

Jump(0x0401000); // 光标跳转到起始位置

currAddr = ScreenEA(); // 反回当前光标所在地址

startSeg = SegStart(currAddr);

endSeg = SegEnd(currAddr);

Message(“OEP = %x 起始地址: %x 结束地址: %x \n”,currAddr,startSeg,endSeg);

while(startSeg < endSeg)

{

auto x = 0;

auto count=0;

for(x=0;x<2;x++)

{

auto op = GetDisasm(startSeg);

auto st = GetArrayElement(AR_STR,ptr,x);

if(strstr(op,st) == 0) {

count = count +1;

if(count == 2)

{

msg(“匹配地址: %x \n”,startSeg–);

}

}

startSeg++;

}

}

DeleteArray(ptr);

}

Shift + F2调出IDC窗口,填写源码,点击“Run”执行

执行结果

*2.2 IDA软件开发工具包*

IDA Pro的功能由四大模块(modules)支持,分别是(基于Windows/IA-32平台):

Plug-in 插件:利用SDK提供的API,完善IDA Pro的功能,扩展名plw。

Loaders 加载器:将可执行文件载入内存,进行分段,扩展名ldw。

Processor 处理器:将可执行程序的机器码反汇编成汇编代码,扩展名w32。

Debuggers 调试器:IDA Pro自带的调试器。

上述四个模块均能通过Hex-rays公司提供的SDK得到扩展,因为 SDK提供了大量的API,这些API可以涉及到IDA Pro软件的系统层,用户通过编写调用这些API的C++程序达到扩展IDA Pro功能的目的。目前使用最为广泛的就是利用SDK开发IDA Pro插件。

*2.3 IDA 插件的安装和使用*

IDA的插件是IDA的可扩展性的重要体现,其安装目录下的plugin文件夹就是专门位插件扩展服务的,而且随着IDAPython的引入,IDA插件的扩展变得十分的便捷。接下来介绍几个常见的IDA插件

Github上有人整理了IDA的插件汇: https://github.com/onethawt/idaplugins-list

1. *Hex-Ray*

Hex-Ray可能是所有IDA插件得“始祖”,他是一个反编译插件,能够为已编译得32位X86二进制文件中得函数生成“类似C语言的伪代码”。要安装这个插件,只需将提供的插件文件复制到plugin目录即可。

安装完毕后,可以通过View->Open Subviews->Pseudocode(热键F5)激活这个反编译器,接着IDA会打开一个新的窗口,包含生成的伪代码,如下图:

2. *IDAPython*

IDA Pro内置的脚本语言IDC太过简陋,由Gergely Erdelyi完成的IDAPython插件将python语言集成到IDA Pro中,将python脚本语言的灵活性和IDA Pro反汇编器的强大功能完美结合起来。

对于DIA Pro 6.8之后的版本,IDAPython是自带的插件,IDAPython的安装非常简单,

项目地址:https://github.com/idapython
IDA Python手册:https://www.hex-rays.com/products/ida/support/idapython_docs/

1:将解压后plugins目录下文件拷贝到 IDA Pro安装目录下的plugins中。

2:将解压后的python python64两个目录下的文件拷贝到 IDA Pro安装目录下。

重启 IDA Pro,对某个文件分析时,发现FILE菜单里多出了python的相关条目,证明安装成功。

3. ****IDA7.0安装findcrypt插件****

参考链接:https://www.cnblogs.com/mke2fs/p/10938455.html

Findcrypt是IDA Pro一个插件,其功能是可查找加密常量

安装成功的话,快捷键Ctrl+Alt+F可以调出上图的窗口,识别一些常见的算法,插件链接放上:https://github.com/polymorf/findcrypt-yara

只装插件是会报错的,还需要一些必要的运行库,需要安装yara-python和Microsoft Visual C++ Compiler for Python 2.7

*首先********安装********yara-python*

https://www.cnblogs.com/Fightingbirds/p/13840265.html

*安装Microsoft Visual C++ Compiler for Python 2.7支持库*

下载链接:https://www.microsoft.com/en-us/download/details.aspx?id=44266

点击Download下载后安装

安装两个支持库都装好后,把插件解压后把下图中的两个文件添加到IDA7.0的plugins目录

接着重启IDA,使用快捷键Shift+Alt+F,打开Findcrypt result窗口。

三、IDA文件目录介绍及其扩展功能相关推荐

  1. Jmeter文件目录介绍及汉化

    一.Jmeter文件目录介绍 1.1 bin目录:存放可执行文件和配置文件 jmeter.bat:windows的启动文件 jmeter.log:日志文件 jmeter.sh:linux的启动文件 j ...

  2. etl常用的三种工具介绍_Adobe Photoshop常用修图插件+屏幕模式+内容感知移动工具介绍...

    PS教学第27期 第一篇 1.5 Photoshop的三种屏幕模式 [Ps教程] 1. 本节课将为您演示,系统的三种屏幕显示模式.首先依次点击[文件 > 打开]命令,打开一张示例图片. imag ...

  3. unity3d iPhone文件目录介绍

    原地址:http://cl314413.blog.163.com/blog/static/190507976201210259126559/ 如何查看iPhone文件存放目录?首先需要越狱,越狱后打开 ...

  4. [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. python的命名空间_python中命名空间的三种方式介绍(附示例)

    本篇文章给大家带来的内容是关于python中命名空间的三种方式介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python中的命名空间分三种: 内置的命名空间,在启动解 ...

  6. apache2.4.x三种MPM介绍

    三种MPM介绍                                                                               Apache 2.X  支持 ...

  7. java 获取键盘点击_Java中获取键盘输入值的三种方法介绍

    程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...

  8. cad画直角命令_在cad中怎么画角度?cad画角度三种方法介绍

    cad是应用最广泛的计算机辅助设计软件,学会使用cad怎么画角度是必不可少的,尤其是对于新手来说,更应该学习.那么在cad中怎么画角度?下面小编就为大家介绍三种cad画角度方法,希望对大家有所帮助! ...

  9. STM32芯片烧录的三种方式介绍,串口、STM32 ST-LINK Utility以及STM32CubeProgrammer

    STM32芯片烧录的三种方式介绍,串口.STM32 ST-LINK Utility以及STM32CubeProgrammer 1 概述 1.1资源概述 1.2 STM32串口烧录方式 2.KEIL软件 ...

最新文章

  1. ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略
  2. 13、MySQL比较运算符
  3. python pip gpl_一文了解Python的pip工具
  4. 微基准测试 r_在您的构建过程中添加微基准测试
  5. 循环自相关函数和谱相关密度(二)——实信号、复信号模型下的BPSK信号循环谱推导
  6. 动手学深度学习(PyTorch实现)(八)--AlexNet模型
  7. html边缘取消白边,Photoshop巧用边缘蒙版去除锐化后的白边
  8. 2k2实用球员_2KOL2王朝不知道用谁?五大位置低价实用球员大解析!
  9. rocketmq 两个线程同时消费一个消息
  10. 【matlab2014B安装教程及下载】
  11. 谁才是中国企业服务的教父?
  12. 如何批量将 webp 格式的图片转换为 jpg 格式
  13. Python编写微信打飞机小游戏(二)
  14. 灌区农业水价综合改革解决方案
  15. Intel 处理器发展年历
  16. Python爬虫实战案例:取喜马拉雅音频数据详解
  17. 服务器raid5阵列修复,RAID5磁盘阵列的安装与故障修复
  18. BurpSuite抓包出现建立安全连接失败(Software is Preventing Firefox From Safely Connecting to This Si)
  19. 一对一或一对多音视频通话会议系统可以通过哪些方式实现?
  20. 彩色图像处理(matlab)

热门文章

  1. 【英语天天读】Account of My Travels
  2. VMware NSX虚拟网络软件:为云计算做准备
  3. 华为2016校园招聘上机笔试题
  4. 微信小程序之swoole/WebSocket创建聊天室(php)
  5. 数据库存储图片路径并显示到前端
  6. 数仓中应该出现的所有表格
  7. [附源码]Java计算机毕业设计SSM广东理工学院大学生社团管理系统
  8. T-SQL 计算固定资产折旧(双倍余额法)
  9. 蓝桥杯-我们的征途是星辰大海
  10. 计算机绘图实训图片,计算机绘图实训总结