【教程】使用 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。

以上就是修改的流程。

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

相关文章
|
数据采集 移动开发 前端开发
如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)
最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解决方案. 笔者将分成3篇文章来复盘, 主要解决场景如下
805 0
|
1月前
|
SQL 关系型数据库 MySQL
|
5月前
|
存储 缓存 开发工具
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
1461 0
|
6月前
|
Linux 开发工具
【专栏】Linux 必备技能:Vim文本编辑器中快速跳转到文件开头和结尾的方法
【4月更文挑战第28天】本文介绍了Vim文本编辑器中快速跳转到文件开头和结尾的方法。使用`gg`或`1G`可跳转到文件开头,`G`或`$`则用于跳转到结尾。此外,还提到了跳转到指定行(如`10G`)和查找特定字符(如`f`+字符)的技巧,以提升编辑效率。
1466 0
第4章 MATLAB编程基础——4.1 M文件编辑器
第4章 MATLAB编程基础——4.1 M文件编辑器
无法导入.reg:指定的文件不是注册脚本。你在注册表编辑器中只能导...解决办法(非常实用)
无法导入.reg:指定的文件不是注册脚本。你在注册表编辑器中只能导...解决办法(非常实用)
|
Unix Linux 开发工具
【Linux学习笔记】系列二:Linux文件与目录结构、VI/VIM编辑器
【Linux学习笔记】系列二:Linux文件与目录结构、VI/VIM编辑器
|
JavaScript 前端开发 程序员
前端开发:VS Code编辑器新建Vue文件自定义模板的方法
在前端开发过程中,尤其是对于经验不足的初级开发者来说,需要掌握一些必备的提升开发速度的技巧,比如使用各种插件来提升开发速度,这样才能事半功倍。
353 0
前端开发:VS Code编辑器新建Vue文件自定义模板的方法
|
Linux 开发工具 数据安全/隐私保护
【Linux】目录、文件、vim编辑器(下)
文章目录 前言 一、定义 二、目录 2.1 一级目录 2.2 二级目录(usr) 2.3 二级目录(var)
127 0
【Linux】目录、文件、vim编辑器(下)
|
JavaScript
vscode编辑器怎么用代码片段生成用户的文件模板?
vscode编辑器怎么用代码片段生成用户的文件模板?
vscode编辑器怎么用代码片段生成用户的文件模板?