godlikewangjun / dexknife-wj

apk加固插件 带签名校验、dex加密、资源混淆
403 stars 111 forks source link

加固后,apk大小比原来的大了几M,这个有办法减少吗 #2

Closed smalljames closed 7 years ago

smalljames commented 7 years ago

原来apk的大小为1M,加固后就变为2M。 原来apk的大小为7M,加固后大小就变为12M。 加固后的大小多这么多,这是什么原理?

godlikewangjun commented 7 years ago

有多这么多吗?加壳的包只有1m多,现在加了资源混淆应该还会小点。能发下前后的包分析截图吗 image

smalljames commented 7 years ago

qq 20170622101419 qq 20170622101507 这个大小不知道怎么差这么多,我是从UpdateJiaGu.java里编译出来的

godlikewangjun commented 7 years ago

是so库大了吗 我看着加密后的dex和没加密的差别不大

smalljames commented 7 years ago

好奇怪的,我用了几个apk来加固,大小都接近大1倍,包分析各大小相加相差不大,但在电脑显示的大小就相差1倍,这个搞不懂

godlikewangjun commented 7 years ago

。。。你安装到手机看看大小 可能是信息有误

smalljames commented 7 years ago

一样的,电脑上和手机上看这个大小都达到了9.03M(原来是4.85M),你没有遇到这个问题吗? 还是我操作的流程有问题,在是在这里启动加密的入口: encryptApk(new File("D:\AndroidStudioProjects\dexknife-wj-master\app\build\outputs\apk\guide.apk"),keystoreConfig);//地址

godlikewangjun commented 7 years ago

没有 我这里看着是dex过大 你那里看着是没有什么区别。。。,后面会优化下加密算法,照理来说不会这么夸张。。。你是用的什么版本的?

smalljames commented 7 years ago

1.1.0版本,优化加密算法什么时候启动

godlikewangjun commented 7 years ago

下个版本吧 最近有点忙。。。

smalljames commented 7 years ago

通过分析,包的大小增加的原因: 1)加固后,classes.dex被移到assert里面,也加了密,此时被打包成apk,此classes.dex不被压缩大小的。 2)而原来没加固之前,classes.dex放在根目录下,这个classes.dex在打包成apk,是可以被压缩大小的。 差异在classes.dex,被加固加密后,不会被压缩了,包大小就变大了

godlikewangjun commented 7 years ago

加密算法会增加文件大小,放到assert里面会增大 ,但是不会很夸张最多也就是没有被压缩,后面找到替换的加密方式应该就不会增加这么多大小

smalljames commented 7 years ago

加固后的包是没有被压缩的,apk包的大小是9M,解包后的大小也是9M。 末加固前的包,apk包的大小是5M,解包后的大小也是9M。

godlikewangjun commented 7 years ago

我试过zip压缩但是也没有小多少

smalljames commented 7 years ago

会不会是我们apk中classes.dex特性导致的

godlikewangjun commented 7 years ago

不是,用的加密算法增加的体积加大,下个版本会改成压缩加密的方式可能是个折中的方案

smalljames commented 7 years ago

期待你的方案

smalljames commented 7 years ago

验证1.1.1版本解决