Android由于安装包是放在网络上提供给大家下载安装的,就意味着我们的代码存在容易被破解的风险。而且Android代码主要是基于Java编写,被逆向的风险更大,虽然我们可以通过代码混淆提高破解的难度,但是也敌不过分析能力极强的人。所以很多开发者就会考虑使用C++编写核心的加密代码,生成so文件,提高被破解的难度,但是这就安全了吗?其实so文件也存在被逆向的风险。下面使用Mac系统安装工具,并对so进行逆向。
工具介绍
对C++进行逆向主要用到 IDA Pro、readelf,其中IDA Pro最重要。
安装readelf(binutils)
通过该命名查看是否已经安装readelf,如果有就不需要安装了。
readelf --version
下载安装包
在这个 http://ftp.gnu.org/gnu/binutils/ 下载最新的安装包,我下载的是 binutils-2.33.1.tar.gz 。
安装
执行以下命令完成安装
# 解压文件
tar -vxf binutils-2.33.1.tar.gz
cd binutils-2.33.1
./configure
# 安装
sudo make install
# 验证是否安装成功
readelf --version
安装 IDA Pro
如果从 官网 只能下载到免费版本idafree,无法分析Android 的ARM文件,所以需要安装 IDA Pro
,是需要付费的,这里就不介绍如何安装,请自行Google。
ida 在mac14.0系统崩溃:下载工程中的libqcocoa.dylib,将其copy到 /Applications/IDA Pro 7.0/ida.app/Contents/PlugIns/platforms/路径下替换即可。
https://github.com/fjh658/IDA7.0_SP
IDA Pro 支持静态分析和动态调试,静态分析也方便查看一些简单的代码逻辑,动态分析可以实现在运行过程中调试,获取到动态的数据。
https://www.jianshu.com/p/d2d28920940c
使用readelf对so文件分析
# 查看所有信息
readelf -a libsign.so
# 输出到文件中
readelf -a libsign.so >> fun.txt
通过readelf可以简单对elf信息进行分析,如果需要进一步分析就需要用到IDA Pro。
使用IDA Pro对so文件进行静态分析
IDA Pro是GUI工具,直接打开so文件即可。