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

反编译


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

apktool


这是一个可以对apk进行反编译和重打包的工具。
下载地址: http://code.google.com/p/android-apktool/

反编译apk

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


smali2java是一个可以将smali代码反编译成java代码的工具。
下载地址: http://www.hensence.com/cn/smali2java/

重打包

1.使用“apktool b 文件夹路径”命令重新打包apk。
【Android】apk反编译与防止反编译_第2张图片
apktool重打包命令辅助脚本代码(windows)
2.打包完成后,在目标文件夹下会多出两个文件夹build和dist,其中dist文件夹中的apk就是重打包后的apk。
【Android】apk反编译与防止反编译_第3张图片

dex2jar


这个工具用于反编译dex文件,并导出jar。
下载地址: http://code.google.com/p/dex2jar/downloads/list
1.使用解压缩工具打开apk,把classes.dex文件放到dex2jar的解压缩目录下
【Android】apk反编译与防止反编译_第4张图片
2.打开命令行,在dex2jar解压缩目录下执行“dex2jar classes.dex”命令,反编译dex文件并生成jar。


jd-gui


这个工具用于查看jar文件中的所有class的源码。
下载地址: http://jd.benow.ca/
打开jd-gui.exe,直接把jar文件拖到工具里就可以了。
【Android】apk反编译与防止反编译_第5张图片
点击在File—Save All Sources(Ctrl + Alt + S)可以保存java源码。

相关工具: http://www.kanxue.com/android/decompilers.htm

AXMLPrinter2


AXMLPrinter2可以反编译AndroidManifest.xml。

工具下载: http://pan.baidu.com/s/1pJHZk3x

使用说明(默认把内容直接输出控制台):
java -jar AXMLPrinter2.jar AndroidManifest.xml

执行命令把AndroidManifest.xml反编译并输出为AndroidManifest.txt。
java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

防止反编译


apk加壳工具下载: http://pan.baidu.com/s/1qW5G1Ta
该工具来自这里>> http://www.kanxue.com/bbs/showthread.php?t=177590

加壳说明

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

apk加壳

1.打开加壳工具(我这里使用的是windows版的),选择apk,点击加密。

2.等待下方提示“加密成功”,会在apk所在目录生成xx.apk.dexcrypt.apk(加密但未签名的apk)和xx.apk.dexcrypt.signed.apk(加密并使用默认签名的apk)。
3.一般情况下,我们还需要使用自定义的.keystore文件对apk进行重签名。
可以使用命令“jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore .keystore文件路径 -storepass 别名密码 -keypass keystore密码 -signedjar 签名apk生成路径 未签名apk路径 别名”对apk进行签名(需要java环境)

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

4.对签名后的dg-final.apk进行反编译。可以看到并没有反编译成功。
【Android】apk反编译与防止反编译_第6张图片

你可能感兴趣的:(【Android】apk反编译与防止反编译)