国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > 【Android】apk反编译与防止反编译

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

来源:程序员人生   发布时间:2015-03-18 09:43:59 阅读次数:4442次

反编译


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

apktool


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

反编译apk

1.把apk文件放到apktool解压目录下。
2.打开命令行,cd到工具解紧缩目录,使用“apktool d apk文件路径”命令反编译apk。

apktool反编译命令辅助脚本代码(windows)
3.反编译生成的文件就在工具解紧缩目录下,可以看到apk中所有的资源文件、库文件、smali文件(java字节码的反汇编代码文件)。


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

重打包

1.使用“apktool b 文件夹路径”命令重新打包apk。

apktool重打包命令辅助脚本代码(windows)
2.打包完成后,在目标文件夹下会多出两个文件夹build和dist,其中dist文件夹中的apk就是重打包后的apk。


dex2jar


这个工具用于反编译dex文件,并导出jar。
下载地址:http://code.google.com/p/dex2jar/downloads/list
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源码。

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

避免反编译


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

加壳说明

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

apk加壳

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

2.等待下方提示“加密成功”,会在apk所在目录生成xx.apk.dexcrypt.apk(加密但未签名的apk)和xx.apk.dexcrypt.signed.apk(加密并使用默许签名的apk)。
3.1般情况下,我们还需要使用自定义的.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进行反编译。可以看到并没有反编译成功。


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生