IO项目实战-apk加固

本文主要目的:将apk进行反编译,对.dex加密再生成新的加密后的apk,运行时,再对该apk进行解密。
一、apk反编译
1、apk反编译,是通过使用apk编译工具将apk文件中源文件和资源反编译出来,得到源文件和资源文件可以进行处理后再进行编译,以达到个性化定制,汉化apk等目的。

二、apk反编译方法
以自己写的一个apk为例。apkaes-debug.apk
1、将apkaes-debug.apk后缀改为apkaes-debug.zip,并解压
在这里插入图片描述
其中:META-INF为该apk的签名文件(每个apk能装到手机上运行,都有签名文件)。
classes.dex:在Android系统中,一个App的所有代码都在一个Dex文件里面。Dex是一个类似Jar的包,存储了很多Java编译字节码的归档文件,是由dx.bat工具生成的。因为Android系统使用Dalvik虚拟机,所以需要把使用Java Compiler编译之后的class文件转换成Dalvik能够执行的class文件。
dx.bat工具所在路径:
C:\Users\61472\AppData\Local\Android\Sdk\build-tools\29.0.3
该路径包含很多工具,都是用来编译apk需要的工具。
在这里插入图片描述
2、下载dex2jar工具。dex2jar-2.0.zip
下载地址:https://sourceforge.net/projects/dex2jar/
解压dex2jar-2.0.zip,将classes.dex文件放到该文件夹下,命令行定位到该文件夹,使用命令d2j-dex2jar classes.dex -o classes.jar生成classes.jar文件。
在这里插入图片描述
在这里插入图片描述
3、下载jd-gui.exe工具。
File->Open File打开刚刚生成的classes.jar文件,可以看到源代码。
在这里插入图片描述
可以看到 ,未经加固的apk非常不安全,所以apk在发布之前,需要对代码进行加密之后再发布。这个过程叫做apk的加固。

三、加固的方案
在这里插入图片描述
基本思想:对apk的源文件源dex进行加密,外加一个壳dex对源dex进行解密。最后将源dex与壳dex都压缩到apk中。整体架构方案:
在这里插入图片描述
1、什么时dex文件。
加固的目的时保护dex文件。了解dex文件。
在这里插入图片描述
2、apk的打包过程
在这里插入图片描述
三、代码流程
步骤1:新建一个java工程addshell,生成加固apk。
步骤1:准备源dex 壳dex,将源dex与壳dex组装为一个新dex
1、源dex。以上文用到的apk为例。在addshel工程下新建文件夹/source/apk,将上文的apkaes-debug.apk放到该文件夹下。用代码将该apk文件解压到temp文件夹,得到classes.dex文件。并对classes.dex文件加密。加密后将classes.dex 改名为classes_.dex,方便区分。
2、获取壳dex。壳dex需要对加密的dex进行解密。加密后的apk已经运行在设备中.(省略)
3、处理aar。获取壳dex。
4、壳dex与源dex合并,生成apk;
5、对apk签名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值