您的位置:首页 > 移动开发 > Android开发

Android安全讲座第七层 [二] apkcrypt的使用和简单分析

2013-12-20 12:11 477 查看
目前android apk出了一款加壳工具,分为在线版,pc版本,企业版,应该是国外公司开发的,在线版和pc版可以免费使用,但是企业版需要999美金购买,当然功能也不相同。目前国内大多数知道这个工具的公司用的几乎都是pc版,这个版本使用起来十分简单,并且可以达到反编译不成功的效果。

加壳工具的网站是 apkprotect.com 但是国内一般都打不来,里面有产品介绍和下载什么的,我现在用的是pc版,现在进行一下简单的介绍

pc版本的工具使用相当简单

过程如下:
1. 下载APK_Protect.zip;
2. 解压缩下载的文件;
3. 运行apkcrypt.exe,选择你所需要加密的APK,然后点击“ADD APK PROTECT”。

一共只有三个步骤。他们还给出了一张指导图:



经过这么简单的几步,就可以生成防止反编译的apk了,当使用apktool反编译的时候,在进行baksmali的时候会报错。

使用实在没有什么好说的,而为什么加了壳在apktool反编译的时候会报错呢,这里我只是简单的对其进行了一下分析。

随便找一个简单的android应用,这里我自己找了一个简单的android例子,8.9.apk 这个里面其实很简单,然后使用apkcrypt 进行一下加壳。生成了 8.9_apkcrypt.apk 这个文件。

其实这个时候新生成的8.9_apkcrypt.apk 使用apktool 反编译的时候在baksmali的时候已经会报错了。
使用 Beyond Compare工具对比了 8.9.apk 和 8.9_apkcrypt.apk 这两个文件夹,发现差异如下图





发现除去签名文件和加壳工具添加的文件夹外,pc版的加壳工具,发现只修改了classes.dex 这个文件。

ok,第二步就可看classes.dex这个文件两者之间的差异了

这里直接使用 baksmali-2.0.2.jar 这个工具,

将加壳后的classes.dex 重命名为 classes_encryt.dex,反编译出来smali文件放在 classes_encrypt文件夹中 中间会出现错误,不要管它

使用下面的命令:
java -jar baksmali-2.0.2.jar -o classes_encrypt classes_encryt.dex

然后再使用
java -jar baksmali-2.0.2.jar -o classes classes.dex
将正常未加壳的dex文件的smali文件反编译到classes文件夹中,这个时候是不会出现反编译错误的。

这个时候就可以比较两个文件夹之间的差异了,同样是使用 Beyond Compare 进行文件夹的比较
比较的效果如下:




看见右边的蓝色多添加的垃圾类有木有,其实加壳工具就是在正常应用中间加了一些垃圾类,这些垃圾类导致了baksmali 反编译工具不能够正常的反编译了。

并且这些垃圾类肯定是不参与应用逻辑的,所以使用smali 工具根据baksmali 生成的smali文件夹,直接再生成回来可以使用的dex文件吧 吼吼

使用的工具在附件中。
其中测试apk 8.9.apk 我将扩展名修改成 8.9.zip了,apk为扩展名好像上传不上去。

附件:http://down.51cto.com/data/2363899
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android apkcrypt
相关文章推荐