ida使用基础

简介: ida使用基础

一、软件介绍

image.png

IDA(Interactive DisAssembler)是一款功能强大的逆向工程软件,广泛应用于软件逆向、漏洞分析、恶意代码分析等领域。它具有以下特点和功能:

反汇编功能:IDA可以将二进制文件转换为可读的汇编代码,帮助分析人员理解程序的结构和逻辑。

交互式界面:IDA提供了友好的图形用户界面,支持多种操作方式,如图形视图、文本视图和交互式调试等,方便用户进行逆向分析。

多平台支持:IDA支持多种操作系统和处理器架构,包括Windows、Linux、macOS等,以及x86、ARM、MIPS等多种指令集。

插件扩展:IDA提供了强大的插件系统,用户可以根据自己的需求编写插件来扩展软件的功能,例如自动化分析、漏洞检测等。

动态调试:IDA可以与调试器集成,支持动态调试功能,帮助分析人员在运行时观察程序的行为和状态。

可视化分析:IDA提供了多种图形化分析工具,如函数图、调用图、数据流图等,帮助用户更直观地理解程序的结构和关系。

导入导出功能:IDA支持导入和导出多种文件格式,如ELF、PE、Mach-O等,方便与其他工具进行数据交换和协作分析。

强大的静态分析能力:IDA内置了多种静态分析算法和技术,如符号执行、数据流分析、模式匹配等,帮助用户深入理解程序的行为和漏洞。

image.png

IDA 有一个强大的插件系统,该插件系统支持使用 Python 编写插件,丰富的插件可以增强 IDA!

jiuzixue.com

IDA Python 插件环境:

1.Python 3.8(Python 插件支持环境)

2.如果系统中有多个版本的 Python,可以使用 IDA 根目录下的 idapyswitch.exe 切换 IDA 使用的Python 解释器

插件安装方法: 将 xxx.py 放到 IDA 的 plugins 目录

插件推荐:

1.KeyPatch(https://github.com/keystone-engine/keypatch)用于修改汇编指令
  依赖安装: pip install keystone-engine
 
2. LazyIDA(https://github.com/P4nda0s/LazyIA)用于提取数据、批量修改数据

image.png

IDA字符串定位是指在使用IDA Pro进行逆向分析时,通过查找和定位程序中的字符串,来理解程序的功能和逻辑。IDA Pro是一款强大的反汇编工具,它可以将二进制文件转换为可读的汇编代码,并提供了丰富的功能来帮助分析人员进行逆向工程。

在IDA Pro中,可以使用以下几种方法来进行字符串定位:

字符串窗口:IDA Pro提供了一个字符串窗口,可以显示程序中的所有字符串。可以通过菜单栏的"View" -> “Open Subviews” -> "Strings"来打开字符串窗口。在字符串窗口中,可以搜索和过滤字符串,以便快速定位感兴趣的字符串。

文本搜索:在IDA Pro的主界面中,可以使用快捷键"Shift+F12"或者通过菜单栏的"Search" -> "Text"来打开文本搜索对话框。在文本搜索对话框中,可以输入关键字进行搜索,并选择搜索范围(当前函数、整个程序等),IDA Pro会列出所有匹配的字符串,并高亮显示。

反汇编代码中搜索:在IDA Pro的反汇编视图中,可以使用快捷键"Ctrl+F"或者通过菜单栏的"Search" -> "Find…"来打开搜索对话框。在搜索对话框中,可以输入关键字进行搜索,并选择搜索范围(当前函数、整个程序等),IDA Pro会列出所有匹配的代码行,并高亮显示。

脚本扩展:IDA Pro支持使用Python脚本进行扩展和自定义。可以编写脚本来搜索和定位特定的字符串,以满足个性化的需求。

通过运行程序,我知道有以下几个重点的字符串

image.png

程序入口

a: 转成ASCII

d: 转成数据, 按一次是db,两次dw,三次dd

c: 转成代码

u: 编程未定义

G: 跳转指令, 跳转到指定地址

ALT+T: 搜索指令,搜索关键字

F5: 把汇编编程C语言, 想回到汇编直接选IDA View即可

N: 按下某个名字并且修改名字,全局有效

ESC: 返回上一个页面

F12: 显示代码的流程图

Shift+F2: IDC脚本窗口

Shift+F3: 弹出Functions窗口

Shift+F9: 弹出Struct窗口

Shift+- 是把IDA代码中的十六进制与十进制互换

Q: 显示操作步长, 比如movsx edx, [esp + 18h]就会变成movsx edx, dword ptr [esp + 18h]

K: 隐藏操作步长

Ctrl+K: 查看当前函数的栈

image.png

进入在Structures栏里, 点击Edit选择添加结构体即可添加结构体

选择结构体名后按d后即可添加成员,再次按d几次与上面d操作一样

选择某一成员,按alt+q可以把该成员变成IDA内所有可识别的其他类型结构体, 这种方法在IDA View窗口内也可以使用

双击结构体名称即可 将其收缩成一行,点击改行选择Ctrl和+(小键盘)即可拓展开

按;可以写入注释, 但是这样会让其他地方跳转到此位置也会显式该注释

Shift+; 则没有上面那种困扰,仅仅是单纯的本行注释

选择函数名按;可以添加函数注释

交叉引用(即所有引用该函数的列表)

如果目标函数不在当前模块,如何找到该函数在哪里调用?

image.png

这道题演示了如何使用 IDA 载入并分析一个可执行的二进制文件,并通过字符串定位的方式在茫茫的代码海洋中找到 main 函数,我们又使用 IDA 的伪代码功能生成 main 函数的伪代码,并修复没有名字的函数使得程序可读性得到极大提升。

思路: 运行程序 ->收集字符串寻找字符串引用代码 ->生成伪代码 ->修复匿名函数 ->分析程序逻辑 ->得到 Flag

相关文章
|
1月前
|
安全
IDA动态调试
IDA动态调试
|
6月前
|
网络协议 Shell Linux
安卓逆向 -- IDA动态调试
安卓逆向 -- IDA动态调试
92 0
|
6月前
|
Java Unix Go
ida入门教程
ida入门教程
148 0
ida入门教程
|
存储 算法 C++
IDA*
复习acwing算法提高课的内容,本篇为讲解算法:IDA*,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
111 0
IDA*
|
开发工具 Android开发
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
225 0
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
|
开发工具 Android开发
【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 使用 IDA 打开 arm 动态库文件 | 切换 IDA 中汇编代码显示样式 )
【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 使用 IDA 打开 arm 动态库文件 | 切换 IDA 中汇编代码显示样式 )
441 0
【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 使用 IDA 打开 arm 动态库文件 | 切换 IDA 中汇编代码显示样式 )
|
Android开发
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)
162 0
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)
|
开发工具 Android开发
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(一)
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(一)
152 0
【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(一)
|
安全 编译器 数据库
IDA静态逆向分析工具使用详解
IDA静态逆向分析工具
459 0