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之简单使用
2661 0
|
安全 API Python
IDA Python的介绍
IDA Python的介绍
399 0
|
11月前
|
安全
IDA动态调试
IDA动态调试
|
3月前
|
人工智能 自然语言处理 安全
国内版“Manus”Aipy,轻松get IDA PRO平替神器,简单又高效!
IDA Pro是一款专业逆向分析工具,支持多架构反汇编/反编译(含Hex-Rays伪代码转换)、静态分析(调用图/控制流图)、动态调试和插件扩展,尤其擅长恶意代码分析。针对新手用户,可使用AI辅助工具(如Aipy)实现轻量化自动分析,替代IDA完成基础反编译任务。示例任务成功反编译a.exe并生成分析报告,验证了简化流程的可行性。
|
Android开发 C++
【Android 逆向】IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )
【Android 逆向】IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )
1288 0
【Android 逆向】IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )
|
数据安全/隐私保护
BUUCTF [GXYCTF2019] CheckIn 1
BUUCTF [GXYCTF2019] CheckIn 1
491 0
|
Java Unix Go
ida入门教程
ida入门教程
333 0
ida入门教程
|
网络协议 Shell Linux
安卓逆向 -- IDA动态调试
安卓逆向 -- IDA动态调试
353 0
|
数据安全/隐私保护
BUUCTF [ACTF新生赛2020]outguess 1
BUUCTF [ACTF新生赛2020]outguess 1
342 0
BUUCTF [ACTF新生赛2020]outguess 1
|
前端开发 Docker 容器
基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)
基于xinetd部署pwn题(百分百搭成并且可以nc靶场地址)
482 1