1、获取java源代码
1.1 dex2jar&jd-gui
dex2jar:将apk反编译成class文件(classes.dex转化成jar文件)
jd-gui:查看APK中classes.dex转化成出的jar文件(save既得java源码文件压缩包rar)
1.2 smali2java(适用于只是选择性查看个别文件的情况)
smali2java:这个软件比较好的地方是可以直接解析apk查看java源码http://www.hensence.com/cn/smali2java/
2、获取图片和布局文件
2.1 apktool
apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看
cmd命令:apktool d xxx.apk yyy(反编译)
apktool b yyy(回编译)
http://ibotpeaches.github.io/Apktool/install/能下载最新的apktool.jar文件,要实现apktool的反编功能还需aapt.exe、apktool.bat两个文件配套使用,这两个文件随便在网上下载一个apktool版本就有,这里不再提供网址下载
2.2 AXMLPrinter2.jar(适用于单纯查看AndroidManifest.xml的情况)
AXMLPrinter2.jar:apk里的AndroidManifest.xml 为二进制文件,可通过AXMLPrinter2.jar包反编译出来
cmd命令行运行一下命令:java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest2.xml
apktool如果反编成功,就会有AndroidManifest.xml文件存在,AXMLPrinter2.jar只是针对apktool反编不成功,需要单独反编AndroidManifest.xml的情况
3、小结:
3.1 较出名的apk项目一般都有自己的加密策略(比较大众的加密工具有梆梆加固、爱加密等),直接反编出来的东西一般都不能直接看,这时就需要有针对性的解密反编策略
3.2 反编工具尽量用最新,技术在不断进步,Google对android的升级也是出于保护包括我们在内的程序员的知识产权,交流和保护从来都是个博弈的局面,希望我们都能成长起来,保护自己的产出,尊重他人的劳作
4、特别说明
反编的目的在于提高程序员个人代码技术,强烈鄙视并反对诸如打包党利用反编技术恶意套用他人劳动成果为己牟利等有损行业整体健康发展的行为