【教程】使用 IDA Pro + 010 Editor 反编译和修改 so 文件,让你轻松玩转逆向工程!

简介: 当我们在做逆向工作时,总会遇到需要查看某个 so 文件的情况,甚至可能需要对其进行一些微小的修改。这时候,我们就需要来点反编译的魔法了。

当我们在做逆向工作时,总会遇到需要查看某个 so 文件的情况,甚至可能需要对其进行一些微小的修改。这时候,我们就需要来点反编译的魔法了。

不过别担心,只要你掌握了 IDA Pro 和 010 Editor 这两个工具,就能轻松愉悦地完成反编译和修改工作啦。

IDA Pro 是一款由意大利公司 Hex-Rays 开发的反汇编工具,其功能十分强大。首先,它支持多种处理器架构,包括 x86、ARM、MIPS 等。其次,它可以对二进制文件进行静态分析,还可以通过调试器进行动态分析。此外,IDA Pro 还支持多种插件,可以帮助用户更加高效地进行反汇编和分析。

010 Editor 是一款十分强大的二进制文件编辑器,主要用于分析、编辑和处理任意格式的二进制文件。

当我们需要查看 so 源码时,可以使用 IDA Pro 工具对 so 文件进行反编译,然后就能阅读源码了。如果涉及到修改需求时,则可以先在 IDA Pro 工具里找到对应代码的汇编地址 ,然后使用 010 Editor 打开 so 文件,以汇编地址作为关键字进行查找,找多对应的代码,直接修改即可。

由于 010 Editor 工具里是以十六进制展示代码,所以修改时,需要特别注意,不要改错地方或者键入错误的内容,否则会导致 so 文件执行异常。

  • IDA Pro 下载地址:

Mac:https://www.macz.com/mac/734.html?id=NzY4OTYwJl8mMjcuMTg2LjEyNS40OQ==

Windows:https://soft.macxf.com/soft/2059.html?id=MjkzODQ%3D

Mac 的直接拖拽安装即可:

1. 利用 IDA Pro 反编译 so 文件

1.1 将输入法切换到系统默认的 ABC

在开始正式的反编译工作前,需要做一件重要的事情,就是把输入法切换到系统默认的 ABC。

三方的输入法和 IDA Pro 有兼容性问题,会导致崩溃,所以,使用 IDA Pro 期间,输入法只能是在 ABC 模式下,否则会出现如下崩溃提示:

1.2 确认 so 文件是 32 位还是 64 位

在使用 IDA 反编译 so 之前,需要确定下自己的 so 文件是 32 位的还是 64 位的,以便启用不同的 IDA 程序进行反编译。确认的方式可以使用如下命令:

file filename.so

输出信息:

可以看到,我这里的 so 文件是 32 位的。

1.3 启动 IDA Pro

我们在 mac 上安装好了 IDA Pro 后,是不能直接点击软件图标打开它的,,正确的启动方式如下:

右键 ida ,选择“显示包内容”

之后按如下提示进行选择:

首次进入时,选择 go 即可:

这是打开之后的界面:

直接把 so 文件拖拽进来,点击 ok,就可以开始反编译了:

这里选择允许即可:

大概等待一会,就反编译完成了!

此时我们看到界面左侧有一个 Function name 的窗口,这里面会列出所有的函数名字,我们可以根据需要查看,也可以直接检索,检索的方式是点击右键,选择“Quick filter”,然后输入函数名字即可。

我搜索了一个名叫 fprintf 的函数:

然后双击第一个搜索结果,再双击下图红框圈出来的地方,即 sub_1D508:

进入 sub_1D508 后,直接按 F5 键,即可将其转化为 C 语言实现的伪代码,然后就可以正常阅读了:

以上就是反编译的操作流程。

2. 利用 010 Editor 修改 so 文件

下面我们来实践下,修改代码中的某个值。比如我想修改刚刚代码中第 43 行的 return 返回值,将 2 改为 0。

修改方式是,先用鼠标选中需要修改的值 2 ,然后在页面底部查看它的地址: 1D592,我们需要记住这个地址。

此时,我们切换到 IDA View-A 界面,在里面查找到 1D592,右侧的 #2 就是我们需要修改的值。

我们同样用鼠标选中 #2,然后切换到 Hex View-1 窗口,查看其十六进制的表示:

我们看到对应的 02 20 也被选中了,02 就是我们要修改的值的十六进制表示。

我们把整个十六进制串拷贝一下,如红框圈起来所示:

然后用 010 Editor 打开 so 文件,用 ctrl+F 调出搜索框,粘贴刚刚拷贝的十六进制串,定位到对应的代码,然后将 02 改为 00

修改完后,修改后的值会显示为红色。此时记得点击 保存,然后可以关掉工具。

此时,我们使用 IDA Pro 再次打开 so 文件,找到刚刚的代码,发现 2 已经变成了 0。

以上就是修改的流程。

本文只是演示了修改静态资源值,如果你对汇编语言很熟悉,可以直接修改代码逻辑。

相关文章
|
7月前
|
安全 Python Windows
[笔记]逆向工具IDA Pro之简单使用
[笔记]逆向工具IDA Pro之简单使用
365 0
|
6天前
|
Ubuntu Java Shell
反编译apk文件,得到其源代码的方法!!
反编译apk文件,得到其源代码的方法!!
17 1
|
6天前
|
Java
Java【付诸实践 04】Jar包class文件反编译、修改、重新编译打包方法(含反编译工具jd-gui-windows-1.6.6.zip百度云资源)
Java【付诸实践 04】Jar包class文件反编译、修改、重新编译打包方法(含反编译工具jd-gui-windows-1.6.6.zip百度云资源)
210 0
|
6月前
|
C语言
3.1 IDA Pro编写IDC脚本入门
IDA Pro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其灵活性和可扩展性,许多逆向工程师都喜欢使用IDC脚本语言来自动化反汇编和静态分析过程,以提高效率和准确性。
57 0
|
8月前
|
IDE Java API
如何配置 jad,让 Eclipse 可以自动显示反编译之后的 .class 源代码
如何配置 jad,让 Eclipse 可以自动显示反编译之后的 .class 源代码
100 0
|
XML 数据格式
Mac环境IDEA编写XML行注释不显示在行首
Mac环境IDEA编写XML行注释不显示在行首
74 0
|
缓存 安全 程序员
IDA F5 增强插件,还我源代码(一)
IDA F5 增强插件,还我源代码(一)
IDA F5 增强插件,还我源代码(一)
|
Android开发
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(二)
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(二)
318 0
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(二)
|
安全 Android开发
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(一)
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(一)
177 0
【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )(一)
IDEA 如何查看 class 文件反编译后的内容
IDEA 如何查看 class 文件反编译后的内容
780 0
IDEA 如何查看 class 文件反编译后的内容