IDA详细使用教程

news/2024/4/28 11:26:36/文章来源:https://blog.csdn.net/m0_55854679/article/details/127746844

文章目录

  • 软件介绍
  • 目录结构
  • 启动页面
  • IDA文件加载
  • 界面介绍
  • 常用快捷键
  • 操作概述
    • 函数操作
    • 数据类型操作
    • 导航操作
    • 类型操作
  • 关闭数据库

软件介绍

Ollydbg 仅仅是运行于 Windows 用户模式下的一种 32 位调试器,而 IDA 是运行于 32/64 位下,可用作反编译和调试的一个完整的逆向工具。使用 IDA 尽管是个更加复杂的学习过程,但它提供了 Ollydbg 无法实现的静态逆向分析 手段,并且使用户能够在 WindowsLinuxMacosx 本地环境以及以下环境中远程操作。

IDA全称是交互式反汇编器专业版,人们其简称为IDA,IDA pro 是业界最成熟、先进的反汇编工具之一,是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉WindowsLinux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。

IDA Pro 的主要优点是它允许以交互方式更改显示数据的任何元素:
给函数、变量、数据结构等命名。
更改数据表示(如数字、各种编码的字符串、数据结构)
搭建图表和代码流程图,简化对反汇编代码的理解
使用c++中有关函数参数和结构定义的类型信息,以便自动命名参数和变量
自动识别和命名汇编代码中的标准库函数
等等

目录结构

IDA的安装根目录下有许多文件夹,各个文件夹存储不同的内容

cfg:包含各种配置文件,基本IDA配置文件ida.cfg,GUI配置文件idagui.cfg,文本模式用户界面配置文件idatui.cfg,
idc:包含IDA内置脚本语言IDC所需要的核心文件
ids:包含一些符号文件
loaders:包含用于识别和解析PE或者ELF
plugins:附加的插件模块
procs:包含处理器模块

在这里插入图片描述

启动页面

在这里插入图片描述

  1. New(新建) :选择new将启动一个标准file open对话框来选择将要分析的文件。根据选择的文件,ida将显示外一个或多个对话框,再选择特定的文件分析选项。然后加载,分析并显示。

  2. Go(运行):go键终止加载程序,使IDA打开一个空白工作区域。可以将二进制文件直接拖入,或使用file菜单中的选项。IDA会利用已知扩展名的过滤器限制file对话框显示。请确保修改或清除该过滤器【如选择all files】,以便file对话框正确显示你想要打开的文件【在非windows系统中,可执行文件可能没有扩展名】。以这种方式打开文件时,IDA会尝试自动识别选定文件类型,需要注意loading对话框,看ida用哪个加载器处理。

  3. Pervious :使用previous可以打开“最近用过的文件”列表中的一个文件。“最近用过的文件”列表中包含IDA的windows注册表项的history子项中的值。默认长度为10,可以编辑idagui.cfgidatui.cfg修改其值。

IDA文件加载

new打开一个新文件后会看到如下对话框

在这里插入图片描述

  1. IDA会生成一个可能的文件类型列表,在顶部显示,它将显示最适合处理文件的加载器。

  2. Binary File(二进制文件) 是列表最后一个选项,会一直显示,是IDA加载无法识别文件的默认选项,提供最低级的加载方法。需要使用二进制加载器的情形包括:分析从网络数据包或日志文件中提取出来的rom镜像和破解程序负载。

  3. processor type【处理器类型】下拉菜单中,可以指定在反汇编过程中使用的处理器模块【在idaprocs目录中】。多数情况下,ida将根据可执行文件头中读取信息,选择合适的处理器。

界面介绍

  • 导航栏:显示程序的不同类型数据【普通函数、未定义函数的代码、数据、未定义等】。

  • 反汇编的主窗口:显示反汇编的结果、控制流图等,可以进行拖动、选择等操作

  • 函数窗口:显示所有的函数名称和地址【拖动下方滚动条即可查看】,通过Ctrl+F组合进行筛选。

  • 输出窗口:显示运行过程中 IDA 的日志,也可以在下方的输入框中输入命令并执行。

  • 状态指示器:显示为“AU:idle”即代表IDA已经完成了对程序的自动化分析。

在这里插入图片描述

  1. 选项卡顶部 IDA 用不同的颜色区分可执行程序组成部分。下方对不同颜色
    代表的部分进行说明。例如,灰色代表.data sectio【数据】,如果点击颜色
    条灰色部分,下方的图形视图也会跳转到该部分中点击地址的位置。粉色部分是
    External Symbol【外部符号】或者 idata section。蓝色部分表示 code section【代码】中识别出的函数。

  2. IDA 界面底部有一个交互栏可以执行 Python 命令,能够帮助我们快速进行进制转换。

    在这里插入图片描述
    在 Python 交互中输入 0x45,由于开头的 0x 将会被解释为十六进制数。直接按回车可将 0x45 转换为十进制数,输出结果为 69
    在这里插入图片描述

    将十进制转换为十六进制数,可以使用 hex()函数。
    Bin()函数将其他进制的数字转换为二进制数。输出结果是 1000101,开
    头的 0b 代表这是一个二进制数。
    在这里插入图片描述

常用快捷键

IDA中的快捷键都是和菜单栏的各个功能选项一一对应的,基本上你只要能在菜单栏上找到某个功能,也就能看到相应的快捷键,这里记录几个常用的:

a:将数据转换为字符串
f5:一键反汇编
esc:回退键,能够倒回上一部操作的视图(只有在反汇编窗口才是这个作用,如果是在其他窗口按下esc,会关闭该窗口)
shift+f12:可以打开string窗口,一键找出所有的字符串,右击setup,还能对窗口的属性进行设置
ctrl+w:保存ida数据库
ctrl+s:选择某个数据段,直接进行跳转 ctrl+鼠标滚轮:能够调节流程视图的大小
x:对着某个函数、变量按该快捷键,可以查看它的交叉引用
g:直接跳转到某个地址
n:更改变量的名称
y:更改变量的类型
/:在反编译后伪代码的界面中写下注释
\:在反编译后伪代码的界面中隐藏/显示变量和函数的类型描述,有时候变量特别多的时候隐藏掉类型描述看起来会轻松很多
:在反汇编后的界面中写下注释
ctrl+shift+w:拍摄IDA快照
u:undefine,取消定义函数、代码、数据的定义

操作概述

函数操作

  • 删除函数:函数窗口中选中函数后,按 Delete
  • 定义函数:在反汇编窗口选中对应行后,按P键
  • 修改函数参数:在函数窗口中选中并按 Ctrl+E 组合键,或在反汇编窗口的函数内部按 Alt+P 组合键

数据类型操作

  1. U 键:取消一个地方已有的数据
  2. D 键:让某一个位置变成数据
  3. C 键:让某一个位置变成指令
  4. A 键:会以该位置为起点定义一个以“\0”结尾的字符串类型
  5. * 键:此处定义为一个数组
  6. O 键:将此处定义为一个地址偏移

导航操作

  • 后退到上一位置:Esc
  • 前进到下一位置:Ctrl+Enter
  • 跳转到某一个特定位置:G,然后可以输入地址/已经定义的名称
  • 跳转到某一区段:Ctrl+S,然后选择区段即可

类型操作

IDA 开发了一套类型分析系统,用来处理 C/C++语言的各种数据类型【函数声明、变量声明、结构体声明等】,并且允许用户自由指定。选中变量、函数后按 Y 键,弹出 “Please enter the type declaration”对话框,从中输入正确的 C 语言类型,IDA 就可以解析并自动应用这个类型。

在这里插入图片描述

关闭数据库

在这里插入图片描述

  1. dont pack database【不打包数据库】:仅刷新4个数据库,不创建idb文件
  2. pack database【打包数据库】:将4个数据库组件文件存到idb文件中
  3. pack database 【打包数据库,压缩】:等同于上一个,压缩到idb归档
  4. collect garbage【收集垃圾】:在关闭数据库之前,删除没有的内存页面
  5. dont save the database【不保存数据库】:删除四个数据库组件文件,保留现有未经修改idb文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_223769.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现在Web前端工程师年薪区间是多少?

对于互联网公司来说用户就是上帝,做好客户体验一切才有可能。所以互联网公司都会把钱砸向前端,Web前端程序员也越来越受到企业争相聘用。但web前端工程师真的那么值钱吗? 1web前端不同阶段薪资待遇如何? 目前Web前端工程师可谓是佼…

浏览器无痕模式有什么作用,手机浏览器开启无痕模式的方法

在我们的手机基本上都安装了浏览器,当我们在上网过程中,不想浏览记录被留下,那么开启无痕模式是非常有必要的。那么,浏览器的无痕模式有什么作用,手机浏览器如何开启无痕模式呢?下面教大家如何在手机浏览器…

基于springboot的信息化药品管理系统

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

第九期|不是吧,我在社交媒体的照片也会被网络爬虫?

顶象防御云业务安全情报中心监测到,某社交媒体平台遭遇持续性的恶意爬虫盗取。被批量盗取用户信息和原创内容,经分类梳理和初步加工后,被黑灰产转售给竞争对手或直接用于恶意营销。由此不仅给社交媒体平台的数字资产带来直接损失,…

ActiveState Platform - November 2022

ActiveState Platform - November 2022 ActiveState平台定期更新新的、修补的和版本化的软件包和语言。 Python 3.10.7、3.9.14、3.8.14-解决了许多安全问题的点发布。 Python C库-ibxml 2.10.3、libxslt 1.1.37、libexpat 2.4.9、zlib 1.2.13、curl 7.85.0和sqlite3 3.39.4&am…

大数据必学Java基础(九十六):PreparedStatement完成CURD和批处理

文章目录 PreparedStatement完成CURD和批处理 一、完成CURD 二、批处理 1、什么是批处理

数字图像处理练习题整理 (二)

注: 内容仅供参考, 不保证正确性, 如有误欢迎交流指正.鸣谢: 感谢 🐰🐔🧄💯💯 小组的各位同学为内容整理提供的帮助 四.空域邻域滤波 1. 高斯模板生成 请写出生成大小为 (2N1)(2N1)、标准差为 sigma 的高斯模板 H 的…

Redis基础架构

可以存哪些数据? 对于键值数据库而言,基本的数据模型是key-value模型。 例如,“hello”: “world”就是一个基本的 KV 对,其中,“hello”是 key,“world”是 value。SimpleKV 也不例外。在 SimpleKV 中&am…

【Transformers】第 2 章:文本分类

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

PyCharm连接MySQL数据库竟然如此简单

在 PyCharm 中是可以通过内置的工具来连接、操作数据库的,并且对于市面上大多数主流数据库都是支持的。 本篇教程就教大家如何通过 Pycharm 内置的数据库工具连接 MySQL 数据库。 连接 MySQL 首先打开 PyCharm ,点击菜单栏的 View --> Tool Window…

PyCharm使用心得体会1

一、Pycharm使用的心得体会 1. 查找功能的使用 查找可以使用的小功能 match case区分大小写words 精确匹配?regex 正则表达式 这个是在选择到的内容中继续进行检索 类似二次检索 2. 软件左下角的structure可以看到文件的结构 show inherited表示展示继承的方法 在…

项目搭建(七)爱心代码❤网站部署(静态网站)

爱心代码❤网站部署(静态网站)一、环境基础二、修改Tomcat启动配置三、放置静态网站四、启动Tomcat一、环境基础 如果你已经部署了Apache-Tomcat,恭喜你,你已经完成90%的部署工作 如果没有tomcat,那你先部署tomcat吧 …

Restful风格的编程

Restful风格的编程1、 Restful简介2、查询用户以及用户详情2.1常用注解2.2查询用户详情3、处理创建请求3.1RequestBody注解3.1.1用途3.1.2语法规范3.2日期类型的处理3.3BindingResult4、用户信息修改与删除4.1用户信息修改4.2案例前端界面后端控制器1、 Restful简介 Restful比…

HTML爱心代码 | 一起体验理工男的极致浪漫(电视剧男主同款)

写在前面 大家好,我是陈橘又青,今天中午刷微博,看到最近《点燃我温暖你》中男主角——理工男李峋的爱心代码撩到了无数人,于是把代码开源分享给大家。 文章目录写在前面运行示例完整代码保姆级运行教学添加背景图片修改爱心颜色运…

工业物联网解决方案:PLC数据上云

智能制造已成为工业发展的趋势,以PLC为代表的工控系统时制造业转型的核心,通过对其进行数据采集,可以实现远程监控,及时管理和维护。随着通信技术的发展,PLC的数据上云逐渐成为企业的新需求,可以更好远程监…

国际物流详解:国际物流有哪些特点?国际物流有哪些优势?

随着互联网信息的快速发展,越来越多的人通过通关网络接触到了国外世界,随之而来的采购购物潮也使得国内国际物流业发展迅速。那么国际物流有哪些特点?又有哪些优势呢?下面我们一起来详细了解一下国际物流主要特点和优势吧!一、国际物流是什么 在了解国…

oracle实验七(安全管理)

(实验目的及要求) 实验目的 (1) 掌握 Oracle 数据库安全控制的实现。 (2) 掌握 Oracle 数据库用户管理。 (3) 掌握 Oracle 数据库权限管理。 (4) 掌握 Oracle…

计算两幅图像的相似度(PSNR、SSIM、MSE、余弦相似度、MD5、直方图、互信息、Hash) 代码实现 与举例

MSE(Mean Squared Error)均方误差 MSE公式 MSE 计算模型的预测 Ŷ 与真实标签 Y 的接近程度。公式表示为: 对于两个mn的单通道图像I和K,它们的均方误差可定义为: 优点:MSE的函数曲线光滑、连续&#xff…

什么是HTML?

关于每篇博文的浪漫主义 【4k】镰仓的灰色与青 | irkyar | sonya74【【4k】镰仓的灰色与青 | irkyar | sonya74】 https://www.bilibili.com/video/BV14G411A7eX/?share_sourcecopy_web&vd_source385ba0043075be7c24c4aeb4aaa73352 网页 1.1什么是网页 网站是指在因特网…

排列(全排,前一个,下一个)

目录 一, 前一个排列(字典序更大的最近的一个排列) 1.1 底层实现 1.2 prev_permulation() 二,下一个排列(字典序更小的最近的一个排列) 1.1 底层实现 1.2 next_permulation() 三,全排列 …