三、IDA文件目录介绍及其扩展功能
一、*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文件目录介绍及其扩展功能相关推荐
- Jmeter文件目录介绍及汉化
一.Jmeter文件目录介绍 1.1 bin目录:存放可执行文件和配置文件 jmeter.bat:windows的启动文件 jmeter.log:日志文件 jmeter.sh:linux的启动文件 j ...
- etl常用的三种工具介绍_Adobe Photoshop常用修图插件+屏幕模式+内容感知移动工具介绍...
PS教学第27期 第一篇 1.5 Photoshop的三种屏幕模式 [Ps教程] 1. 本节课将为您演示,系统的三种屏幕显示模式.首先依次点击[文件 > 打开]命令,打开一张示例图片. imag ...
- unity3d iPhone文件目录介绍
原地址:http://cl314413.blog.163.com/blog/static/190507976201210259126559/ 如何查看iPhone文件存放目录?首先需要越狱,越狱后打开 ...
- [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- python的命名空间_python中命名空间的三种方式介绍(附示例)
本篇文章给大家带来的内容是关于python中命名空间的三种方式介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python中的命名空间分三种: 内置的命名空间,在启动解 ...
- apache2.4.x三种MPM介绍
三种MPM介绍 Apache 2.X 支持 ...
- java 获取键盘点击_Java中获取键盘输入值的三种方法介绍
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...
- cad画直角命令_在cad中怎么画角度?cad画角度三种方法介绍
cad是应用最广泛的计算机辅助设计软件,学会使用cad怎么画角度是必不可少的,尤其是对于新手来说,更应该学习.那么在cad中怎么画角度?下面小编就为大家介绍三种cad画角度方法,希望对大家有所帮助! ...
- STM32芯片烧录的三种方式介绍,串口、STM32 ST-LINK Utility以及STM32CubeProgrammer
STM32芯片烧录的三种方式介绍,串口.STM32 ST-LINK Utility以及STM32CubeProgrammer 1 概述 1.1资源概述 1.2 STM32串口烧录方式 2.KEIL软件 ...
最新文章
- ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略
- 13、MySQL比较运算符
- python pip gpl_一文了解Python的pip工具
- 微基准测试 r_在您的构建过程中添加微基准测试
- 循环自相关函数和谱相关密度(二)——实信号、复信号模型下的BPSK信号循环谱推导
- 动手学深度学习(PyTorch实现)(八)--AlexNet模型
- html边缘取消白边,Photoshop巧用边缘蒙版去除锐化后的白边
- 2k2实用球员_2KOL2王朝不知道用谁?五大位置低价实用球员大解析!
- rocketmq 两个线程同时消费一个消息
- 【matlab2014B安装教程及下载】
- 谁才是中国企业服务的教父?
- 如何批量将 webp 格式的图片转换为 jpg 格式
- Python编写微信打飞机小游戏(二)
- 灌区农业水价综合改革解决方案
- Intel 处理器发展年历
- Python爬虫实战案例:取喜马拉雅音频数据详解
- 服务器raid5阵列修复,RAID5磁盘阵列的安装与故障修复
- BurpSuite抓包出现建立安全连接失败(Software is Preventing Firefox From Safely Connecting to This Si)
- 一对一或一对多音视频通话会议系统可以通过哪些方式实现?
- 彩色图像处理(matlab)