找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 113|回复: 0

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

[复制链接]

2万

主题

134

回帖

13万

积分

管理员

积分
134018
发表于 2024-7-22 17:48:41 | 显示全部楼层 |阅读模式 IP:山东省青岛市 联通

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

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

from: 【教程】使用 IDA Pro + 010 Editor 反编译和修改 so 文件,让你轻松玩转逆向工程!-阿里云开发者社区 (aliyun.com)

简介:
当我们在做逆向工作时,总会遇到需要查看某个 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.png

010 Editor 下载地址:


1 利用 IDA Pro 反编译 so 文件


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

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

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

2.png


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

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

[Bash shell] 纯文本查看 复制代码
file filename.so

输出信息:

3.png

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


1.3 启动 IDA Pro

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

4.png

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

5.png

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

6.png

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

7.png


这是打开之后的界面:

8.png

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

9.png

这里选择允许即可:

10.png

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

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

11.png

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

12.png

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

13.png

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

14.png

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

2. 利用 010 Editor 修改 so 文件

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

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

15.png

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

16.png

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

17.png

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

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

18.png

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

19.png


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

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

20.png

以上就是修改的流程。

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



from:
【教程】使用 IDA Pro + 010 Editor 反编译和修改 so 文件,让你轻松玩转逆向工程!-阿里云开发者社区 (aliyun.com)




1.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|时间戳|加密|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|IOTsec-Zone|在线工具|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-9-8 11:46

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表