为什么反编译:
做为个人开发,有时候看到精美的UI效果,好玩的功能,是不是有想可以参考学习的冲动。反编译android的apk,就是从apk中把资源(如图片,音乐,布局文件等等),源代码。
推荐阅读:
对于反编译apk,请先阅读文章<<反编译Android应用>>,<<Android APK反编译就这么简单 详解(附图)>>,好好看,看完自己下载几个apk试试,应该就对反编译apk心里有个底了。
我的笔记:
(1).相关软件:
dex2jar------将apk反编译成java源码(qq.apk转化成qq_dex2jar.jar文件)
jd-gui--------是一个独立的图形工具,用于显示*.class文件的Java源代码
apktool------资源文件获取,可以提取出图片,音乐和布局文件进行使用查看,反编译后还可以重新编译回去
(2)软件使用简单说明:
以qq.apk为例,我们要查看apk源码:
先使用dex2jar将qq.apk转化成qq_dex2jar.jar文件,然后再用jd-gui查看源码。相关cmd命令:
1.dex2jar-------qq_dex2jar.jar文件
cd /d E:\BaiduYunDownload\0002_反编译Android应用\相关软件\dex2jar-0.0.9.15\dex2jar-0.0.9.15
dex2jar qq.apk
2.jd-gui-0.3.6.windows.zip-----从jar查看源码
把qq_dex2jar.jar文件拖入jd-gui中,查看源码
以qq.apk为例,我们要查看apk资源文件:
方法一:如果,我们仅仅要简单的查看一下图片,音乐,我们可以直接把qq.apk重新命名为qq.rar,然后解压就可以得到资源,但是这个方法得到的资源xml文件是乱码,并且点9图片会变形。所以,我们一般会用apktool工具反编译apk,得到完整的资源。
方法二:apktool直接提取apk资源,相关cmd命令:
cd /d E:\BaiduYunDownload\0002_反编译Android应用\相关软件
apktool d AndroidDemo.apk
apktool d -f AndroidDemo.apk
apktool d -m AndroidDemo.apk
apktool d -s AndroidDemo.apk
apktool d -f -m -s AndroidDemo.apk
如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool b AndroidDemo.apk
3. 还有度娘
前二个方法,可能要借助什么翻墙才能下载到的软件,还有一些命令,但是,我们不要忘了还有度娘噢,我们可以下载到别人整理后的软件,功能更强大,使用更方便。
实践结果:
最后,我用了3个apk(QQ_220.apk,Mms.apk,Contacts.apk)来测试此方法(dex2jar,jd-gui,apktool)的反编译情况,最后的结果是:3个apk都可以生成jar文件,并都能查看java源码,但是只有Mms.apk能反编译出资源文件,其它二个都不可以。
这个事实,也告诉我们,反编辑apk,也可能是一个相当考验人品的事情。所以,我们能做的就是多采用几种方法,多使用几种软件,多尝试,说不定,奇迹就在下一刻。
参考资料:
http://blog.csdn.net/android_cai_niao/article/details/43151831
http://blog.csdn.net/vipzjyno1/article/details/21039349