Android基础新手教程——1.10 反编译APK获代替码&资源

千磨万击还坚劲,任尔东西南北风。这篇文章主要讲述Android基础新手教程——1.10 反编译APK获代替码& amp; 资源相关的知识,希望能为你提供帮助。
android基础新手教程——1.10 反编译APK获代替码& 资源标签(空格分隔): Android基础新手教程
本节引言:

”反编译Apk“。看上去好像好像非常高端的样子,事实上不然,就是通过某些反编译软件。对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件。不知道你有没有这样做过,看到一个别人的一个APP界面做得非常精美,或者你看上别人的图片素材,简单点的,我们能够下载别人的APK。然后改下后缀名,改成xxx.zip。然后解压:
笔者随便解压了一个APK:
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

我们能够打开res文件夹,获取里面的图片素材
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

可是。这个方案,获得的仅仅会是一些.png,或者.jpg这种位图文件资源,假设是xml类的资源,打开我们会发现是乱码。而且假如我们想看APK程序的java代码,也是行不通的,由于他们都打被打包到classes.dex文件里!
可是反编译能够解决你的须要~另外,切勿拿反编译来做违法的事。比方把人家的APK又一次打包后使用自己的签名然后公布到相关市场…另外,我们是參考别人的代码,而不是全然拷贝!
!!
切记!

1.要准备的三个工具
  1. apktool:获取资源文件。提取图片文件,布局文件,另一些XML的资源文件
  2. dex2jar:将APK反编译成Java源代码(将classes.dex转化为jar文件)
  3. jd-gui:查看2中转换后的jar文件,即查看Java文件
    为了方便各位读者,这里将三个打包到一起放到云盘中,又须要的能够进行下载:
    反编译相关的三个工具.zip
2.使用apktool反编译APK获得图片与XML资源:
把下载好的apktool解压后。我们能够看到下述文件(忽略那两个csdn。一个是反编译的apk。一个是反编译后文件):
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

接下来。双击cmd.exe,来到命令行,键入:
apktool.bat d csdn.apk 就可以。Enter回车:
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

【Android基础新手教程——1.10 反编译APK获代替码& amp; 资源】然后就能够看到生成的csdn文件夹,里面就有我们想要资源
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

好的,就是XML资源到手了是吧!图片素材也到手了!
3.使用dex2jar将classes.dex转换成jar文件:
把下载好的dex2jar文件夹解压,apk解压后中的classes.dex拷贝到dex2jar.bat所在的文件夹下:
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

打开cmd,来到这个文件夹下:键入:d2j-dex2jar.bat classes.dex
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

接着我们能够看到。生成了一个jar包:
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

好的,转换完毕!
4.使用jd-gui查看jar包中的Java代码:
好的,打开jd-gui的文件夹
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

打开后。打开我们3中转换后的jar包。我们能够看见里面的代码:
Android基础新手教程——1.10 反编译APK获代替码&资源

文章图片

csdn的client居然不混淆代码…可能是本着开源的精神吧,给我们学习代码吧!一般的话,apk公布都会
进行混淆,然后进行一些加密,或者使用第三方的加密平台。用的比較多的”爱加密“,有兴趣的也自行百度查看更加具体的介绍。
本节小结:
好的。关于APK的反编译就介绍到这里。相信你已经摩拳擦掌想要试试了,那就试试吧,最后提醒一句,别做坏事!尊重别人的劳动成果。另外。关于第一大章环境搭建相关以及一些经常使用开发技巧就到这里,下一节開始我们就来进行本系列教程的第二章——Android中的经常使用UI控件的学习了!
因相关的基本控件较多,预计有几十个,假设一直学控件可能没什么意思,可能并行写教程,每天学一个控件 + 一点其它的知识点这样,笔者要构思构思,敬请期待~谢谢~












    推荐阅读