码迷,mamicode.com
首页 > 移动开发 > 详细

【Android】apk反编译与防止反编译

时间:2015-03-05 13:02:06      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:

反编译


相关工具下载:http://pan.baidu.com/s/1bnAkIb9

apktool


这是一个可以对apk进行反编译和重打包的工具。

反编译apk

1.把apk文件放到apktool解压目录下。
2.打开命令行,cd到工具解压缩目录,使用“apktool d apk文件路径”命令反编译apk。
技术分享
apktool反编译命令辅助脚本代码(windows)
3.反编译生成的文件就在工具解压缩目录下,可以看到apk中所有的资源文件、库文件、smali文件(java字节码的反汇编代码文件)。
技术分享

smali2java是一个可以将smali代码反编译成java代码的工具。

重打包

1.使用“apktool b 文件夹路径”命令重新打包apk。
技术分享
apktool重打包命令辅助脚本代码(windows)
2.打包完成后,在目标文件夹下会多出两个文件夹build和dist,其中dist文件夹中的apk就是重打包后的apk。
技术分享

dex2jar


这个工具用于反编译dex文件,并导出jar。
1.使用解压缩工具打开apk,把classes.dex文件放到dex2jar的解压缩目录下
技术分享
2.打开命令行,在dex2jar解压缩目录下执行“dex2jar classes.dex”命令,反编译dex文件并生成jar。
技术分享

jd-gui


这个工具用于查看jar文件中的所有class的源码。
下载地址:http://jd.benow.ca/
打开jd-gui.exe,直接把jar文件拖到工具里就可以了。
技术分享
点击在File—Save All Sources(Ctrl + Alt + S)可以保存java源码。


防止反编译


apk加壳工具下载:http://pan.baidu.com/s/1qW5G1Ta

加壳说明

加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段。 加壳过的程序可以直接运行,但是不能查看源代码.要经过脱壳才可以查看源代码。
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。

apk加壳

1.打开加壳工具(我这里使用的是windows版的),选择apk,点击加密。
技术分享
2.等待下方提示“加密成功”,会在apk所在目录生成xx.apk.dexcrypt.apk(加密但未签名的apk)和dg.apk.dexcrypt.signed.apk(加密并使用默认签名的apk)。
3.一般情况下,我们还需要使用自定义的.keystore文件对apk进行重签名。
可以使用命令“jarsigner -keystore .keystore文件路径 -storepass 别名 -keypass 密码 -signedjar 签名apk生成路径 未签名apk路径 别名”对apk进行签名(需要java环境)

示例:
jarsigner -keystore release.keystore -storepass linchaolong -keypass xxx -signedjar dg-final.apk dg.apk.dexcrypt.apk linchaolong

4.对签名后的dg-final.apk进行反编译。可以看到并没有反编译成功。
技术分享

【Android】apk反编译与防止反编译

标签:

原文地址:http://blog.csdn.net/linchaolong/article/details/44080051

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!