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

相关文章
|
安全 Python Windows
[笔记]逆向工具IDA Pro之简单使用
[笔记]逆向工具IDA Pro之简单使用
4971 0
|
4月前
|
安全 Linux iOS开发
IDA Pro 9.3 正式版发布 - 强大的反汇编程序、反编译器和多功能调试器
IDA Pro 9.3 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
5786 9
IDA Pro 9.3 正式版发布 - 强大的反汇编程序、反编译器和多功能调试器
|
9月前
|
Linux Go iOS开发
IDA 9.2 发布:Golang 改进、新 UI 组件、类型解析等
IDA Pro 9.2 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
1536 0
实验:逆向分析sample_mal.exe文件
实验:逆向分析sample_mal.exe文件
|
算法 安全 数据安全/隐私保护
BUUCTF-[2019红帽杯]easyRE(Reverse逆向)
本文详细介绍了对一个无壳的64位ELF文件进行逆向分析的过程。首先通过IDA查找关键字符串定位主函数,然后逐步分析函数逻辑,包括读取输入、异或操作等。接着通过多次Base64解码和异或操作,最终得到了关键的flag。整个过程涉及数组寻址、条件判断和函数调用等技术细节,展示了CTF竞赛中常见的逆向工程技巧。最后附上了完整的Python代码实现,帮助读者理解和复现。
1909 1
BUUCTF-[2019红帽杯]easyRE(Reverse逆向)
|
数据安全/隐私保护
BUUCTF [GXYCTF2019] CheckIn 1
BUUCTF [GXYCTF2019] CheckIn 1
819 0
|
存储 索引 Python
一文让你搞懂 Python 的 pyc 文件
一文让你搞懂 Python 的 pyc 文件
1043 10
|
存储 JSON 监控
JavaScript 逆向基础篇:浏览器调试与 Hook 技术
JavaScript 逆向基础篇:浏览器调试与 Hook 技术
1787 1
|
安全 Shell Linux
Webshell管理工具:AntSword(中国蚁剑)
中国蚁剑的下载、安装、详细使用步骤
15850 1