逆向工具——IDA Pro的使用,从零基础到精通,收藏这篇就够了!

声明:纯技术分享,不搞恶意引导!

最近有小伙伴疯狂暗示,想让我出一篇关于逆向神器 IDA Pro 的教程。安排!这篇就来扒一扒 IDA Pro 的那些事儿。内容主要是我个人的理解,再结合网上冲浪搜集来的资料,把 IDA 的各种骚操作、使用技巧啥的都记录下来,方便以后自己复习,也希望能帮到各位。

IDA Pro:安全圈的“显微镜”
简介

交互式反汇编器专业版 (Interactive Disassembler Professional),江湖人称 IDA Pro。这货是个递归下降反汇编器,在逆向分析界那是响当当的存在。它能分析 x86、x64、ARM、MIPS、Java、.NET 等等各种平台的代码,简直是安全分析师的秘密武器!IDA 是 Hex-Rays 公司的王牌产品,这家公司在比利时,能写出这种神器的绝对是大佬中的大佬。

快速上手

为了让大家更容易理解,咱们直接拿 BUUCTF 里面一道叫 easyre 的题来演示 IDA 的用法。

新建工程:像搭积木一样简单
  1. 面对不同架构的可执行文件,得选对对应位数的 IDA 版本。

选择 IDA 版本

2. 打开 IDA,你会看到 “New” 和 “Go” 两个选项。“New” 是直接打开程序,“Go” 是先启动 IDA 界面。

IDA 启动界面

3. 选 “Go”,启动后,在菜单栏里点 “File” -> “Open”,找到你要分析的程序。然后会跳出个窗口,别慌,默认设置就好。

选择文件类型

这里 IDA 会列出一堆它觉得可能的文件类型,最上面那个一般是最靠谱的。IDA 会把 loaders 目录里的每个加载器都跑一遍,看看哪个能识别这个文件。

如果 IDA 给了你好几个加载器,选默认的通常没啥问题,除非你心里有数。
4. 继续默认,一路 “OK” 就完事儿了。

默认选项

5. Duang~ 主窗口就出来了!

窗口介绍:工欲善其事,必先利其器

IDA 的主窗口长这样:

IDA 主窗口

  • 函数窗口 (Functions window):

    左边这块就是函数窗口,所有函数都在这儿列着。拿到一个题目,一般从 main 函数开始,但 main 函数通常不会直接显示,所以用 Ctrl+F 搜一下。

    搜索函数

    * 汇编窗口 (IDA views):

    这块是汇编代码的地盘,有两种显示方式:

    1. 图形模式

      图形模式

      2. 文本模式

      展示汇编代码和地址。

      文本模式

      在图形模式下,右键选 “Text view” 或者按空格键就能切换到文本模式。
      * 伪代码窗口:

    在汇编窗口文本模式中,对着函数按 F5,就能看到伪代码。这玩意儿把汇编语言变成了更易读的伪代码,简直是救星!

    伪代码窗口

    * 十六进制窗口:

    虽然叫“十六进制窗口”,但它其实能显示各种格式,还能当十六进制编辑器用。默认情况下,它会显示程序的十六进制代码和对应的 ASCII 字符,每行 16 个字节。你可以同时打开好几个十六进制窗口。

    十六进制窗口

    * 消息窗口:

    这儿会显示 IDA 输出的信息,比如文件分析状态、操作错误等等,就像 Pycharm 的 Console 控制台。

    消息窗口

    * 导航栏:

    导航栏就是那条彩色的水平带,它能线性地展示被加载文件的地址空间。默认情况下,它会显示整个二进制文件的地址范围。右击导航栏,会显示一个提示,告诉你光标所在位置对应二进制文件中的哪个位置。

    简单来说,点哪儿跳哪儿,不同的颜色代表不同的数据段,比如 data 段、text 段等等。

    导航栏

修正:哪里不对点哪里

IDA 有时候会犯迷糊,需要我们手动纠正。

  1. 函数修正:

    通常以 push ebp/rbp 指令开头的地址是函数的起始地址,但 IDA 有时会认错。这时候,在起始地址的汇编代码处,按快捷键 P (或者右键选 “Create Function”),就能把它变成函数。
    2. 指令修正:

    如果 IDA 把某些指令识别错了,选中后按快捷键 D 就能手动修正。
    3. 数据修正:

    在数据段,一个数据的长度可能是 1/2/4/8 字节,用快捷键 D 可以修改类型。如果某部分数据是字符串但没被正确识别,按快捷键 A 就能把它变成 ASCII 字符串。

注释和重命名:见名知意很重要
  • 重命名:

    在 IDA 里,你可以修改变量名、函数名等等,方便理解代码。在需要重命名的地方右键,选 “Rename” 就行。

    重命名

    * 注释:

    快捷键 ; 可以在反汇编窗口加注释,快捷键 / 可以在反编译窗口加注释。IDA 还能自动给不常用架构的代码加注释,在 “Auto comments” 那里勾选就行。

    添加注释

交叉引用:顺藤摸瓜找关系

IDA 的交叉引用分两种:

  • 代码交叉引用:

    表示一个指令把控制权交给另一个指令,能帮你了解指令和指令、指令和函数之间的调用关系。
    * 数据交叉引用:

    用于追踪二进制文件访问数据的情况,能让你知道指令和数据之间有啥关系。

    这部分需要比较扎实的汇编知识。

常用快捷键:效率提升 N 倍
  • F5:

    在汇编窗口里按 F5,能生成对应函数的伪代码。
    * Ctrl+F5:

    可以把伪代码导出保存下来。
    * Shift+F12:

    在汇编窗口里按 Shift+F12,能打开字符串窗口。所有字符串都在这儿展示,你可以搜一些关键字符串。双击某个字符串,就能跳到汇编窗口中该字符串对应的位置。用 Ctrl+F 可以查找字符串。

    字符串窗口

    * Ctrl+X (交叉引用):

    在汇编窗口中,用 Ctrl+X 可以查看哪些函数引用了这个字符串或数据。点 “OK” 会跳到相应位置。

    交叉引用

    * Alt+T (文本搜索):

    IDA 文本搜索相当于在反汇编列表窗口文本模式下搜索子字符串。搜到字符串后,会自动跳到汇编窗口中对应的位置。

    文本搜索

    它只会查找完整的词,包括操作码助记符或常量。

    选 “Find all occurences”,IDA 会在一个新窗口里显示所有搜索结果,方便你快速定位。
    * G (跳转地址):

    汇编窗口左边是地址,右边是汇编代码。

    在浏览代码的时候,可能会迷路。或者你知道想去的目标地址,但反汇编窗口里没有可供双击导航的名称。这时候,用 G 就能跳到指定位置。

    跳转地址

    * N (重命名):

    可以把一些函数名或者变量名改成方便理解的名字。
    * Ctrl+Z (撤回操作):

    不小心改错了? Ctrl+Z 帮你回到上一步。

数据类型转换快捷键:关键时刻显身手

之前做过一道逆向题,flag 是 16 进制 ASCII 值,当时就靠这些快捷键搞定的。

  • D (转换成数据形式):

    分析数据时,有时候需要把字符串转换成数据。
    * A (转换成字符形式):

    转换成字符串。
    * C (转换成汇编代码):

    转换成汇编代码。
    * U (转成原始字符):

    转换成最原始的状态。
    * Shift+E (导出数据):

    想导出数据?选中后按 Shift+E,选你想导出的方式。

    导出数据

    * 数据转化形式:

    分析伪代码时,有时候要对数据进行类型转化。右键数据,会出现这些选项:

    数据转化

    • Hexadecimal: 十六进制
    • Octal: 八进制
    • Char: 字符
    • Enum: 枚举
easyre 怎么破?

其实前面已经剧透了。在 Function window 中找到 main 函数,在汇编窗口中对着函数按 F5 得到伪代码界面,分析伪代码,发现只要输入两个一样的数据就能打印 flag。

总结

这篇就介绍了 IDA 的一些常用窗口和功能。当然,IDA 还有很多隐藏技能等着你去挖掘。平时多做题,熟练掌握这些技巧,你也能成为逆向大神!

想更深入了解 IDA?可以找本书啃啃。有需要的可以私聊我。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包,需要点击下方链接即可前往获取

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

### 逆向工程与反编译概述 逆向工程是一种通过对软件的目标代码进行分析,将其转化为更高级别的表示形式的过程。这一过程通常用于研究现有系统的内部结构、功能以及实现细节。在Java和Android领域,反编译工具被广泛应用于逆向工程中。 #### Java逆向工程中的Jad反编译工具 Jad是一款经典的Java反编译工具,能将`.class`字节码文件转换为可读的`.java`源代码[^1]。虽然它可能无法完全恢复原始源代码,但它提供了足的信息来帮助开发者理解已编译的Java程序逻辑。Jad支持多种反编译模式,并允许用户自定义规则以适应不同的需求。此外,其命令行接口和图形界面使得复杂代码的分析变得更加便捷。 #### Android逆向工程中的JEB反编译工具 针对Android应用的逆向工程,JEB是由PNF Software开发的一款专业级工具[^2]。相较于其他同类产品,JEB不仅具备强大的APK文件反编译能力,还能对Dalvik字节码执行高效而精准的操作。它的核心优势在于以下几个方面: - **广泛的平台兼容性**:除Android外,还支持ARM、MIPS等多种架构的二进制文件反汇编。 - **混淆代码解析**:内置模块能有效应对高度混淆的代码,提供分层重构机制以便于深入分析。 - **API集成支持**:允许通过编写Python或Java脚本来扩展功能并完成特定任务。 #### APK反编译流程及其意义 当涉及到具体的APK包时,可以通过一系列步骤提取其中的信息来进行全面的安全评估或者学习目的的研究工作[^3]。这些步骤一般包括但不限于获取资产目录(`assets`)内的资源数据;解密XML配置文档如`AndroidManifest.xml`定位应用程序启动点;最后利用上述提到的各种专用软件重现整个项目框架供进一步探讨。 ```bash # 使用apktool反编译APK示例 apktool d your_app.apk -o output_directory/ ``` 以上命令展示了如何借助开源工具ApkTool轻松拆卸目标安卓档案至易于探索的状态下。 ### 结论 无论是传统的桌面端还是现代移动端环境里头,恰当运用合适的反编译解决方案都是达成逆向工程项目成功不可或缺的一环。每种工具有各自专精之处,在实际应用场景当中应当依据具体需求做出明智的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值