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
加壳工具的网站是 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 安全讲座第一层 Android APK 签名比对,防止软件被破解使用
- Android安全讲座第七层 [一] 破解加过壳的APK应用
- AndroidSlidingUpPanel 使用控制和简单的分析方法
- Android安全与逆向之简单破解APK方法
- Android平台APK分析工具包androguard的部署使用和原理分析
- 【Android安全】APK静态分析-DEX反编译为Smali逆向分析
- 如何使用androidpn实现android手机消息推送(简单的源码分析)
- Android APK应用安装原理解析之AndroidManifest使用PackageParser.parserPackage原理分析
- android apk使用framework中usb接口范例(应用RtkGps分析)
- 打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)具体解释
- Android端服务器推送技术原理分析及XMPP简单的使用(转)
- android安全学习01,apktool的使用,重新签名apk
- Android开发--APK反编译就这么简单 详解(附图)和使用AXMLPrinter2.jar批量反编译xml文件
- Android快速分析apk工具aapt的使用教程
- Android端服务器推送技术原理分析及XMPP简单的使用
- 如何使用androidpn实现android手机消息推送(简单的源码分析)
- android 性能分析工具、布局分析工具、monkey自动化测试的简单使用
- 打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)详解
- Android Scene transition简单使用和分析
- 【Android安全】【Android】使用dex2jar 与JD-Gui 反编译APK文件,查看源代码