Android APK 加固技术探究(一)

本文探讨了Android APK的加固技术,介绍了反编译的基本流程,包括使用dex2jar和jd-gui工具的方法,以及通过apktool实现反编译的过程。讨论了如何隐藏或加密dex文件以增强应用的安全性。

Android APK 加固技术探究(一)

Android APK 加固技术探究(二)

Android APK 加固技术探究(三)

为了保证 Android 应用的源码安全性,我们一般会对上线的应用进行代码混淆,然而仅仅做代码混淆还不够,我们还要对我们的应用加固,防止别人通过反编译获取到我们的源码。目前 apk 加固技术比较成熟完善,市面上比较流行的有“360加固”。本文就 apk 加固技术做一个技术探究,希望读者看过后能明白加固的其中原理,并也能自己实现加固方案。

Android apk 的反编译

作为一名 Android 开发者,你可能曾经有过这样的经历,这个 app 怎么这么炫酷,它是怎么实现这种效果的。然后你可能打起了歪主意(我要是获取到源码就好了)。结果你百度了一下赫然出现“反编译”三个大字,然后一个神奇的大门就对你打开了。可是好景不长“加固”就把这扇门关上了。。。。

如果你没接触过反编译那不要紧,下面我就简单的回顾下反编译的基本流程。

方法一

1、一个 apk 正常解压会获得到以下的目录文件

image.png

2、其中后缀名称为 “.dex” 的文件就是包含我们所有 class 文件的包。我们将 .dex 文件放到 dex2jar 的工具包中

image.png

3、然后执行 d2j-jar2dex.sh classes.dex 命令,随后在目录中生成一个新的文件 classes-dex2jar.jar
image.png

4、最后我们便通过 jd-gui-1.6.6.jar 工具来打开 classes-dex2jar.jar 文件

image.png

5、文件打开如下,这就是我们反编译一个没有加固的 apk 的源码,但是这个代码是经过混淆的,所以我们不是很好的捋清他的逻辑,可见混淆也是很重要的。

image.png

上面这种反编译是通过 dex2jar 和 jd-gui 这两个工具来实现的。

方法二

下面介绍另一种反编译,通过 apktool 来实现,关于这个工具的介绍可以通过点击 传送门 去了解。

$ apktool d bar.apk

通过执行上面的命令,对 apk 进行反编译,便能得到一下目录文件

image.png

这里我们发现已经没有了 dex 文件,而是变成了 smali 文件夹,这里就是我们所有 class 文件的 smali 语法变现。这里我们可以根据 smali 语法来对 smali 文件进行修改,然后再通过

$ apktool b bar -o new_bar.apk

来对修改后的 apk 文件进行重新打包从而实现修改 apk 代码的目的。

总结

通过以上介绍的两种反编译 apk 的方式,我们发现如果我们能将 apk 中的 dex 文件隐藏起来或者以某种方式将其加密,从而不能直接看到 dex 文件里的内容,便可达到一定的保护作用。

下一节将讲解如何加固

Android APK 加固技术探究(二)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值