写点什么

反编译 APK 获取代码 & 资源

作者:向阳逐梦
  • 2022-12-31
    四川
  • 本文字数:951 字

    阅读完需:约 3 分钟

"反编译 Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的 APK 进行反编译,从而获取程序的源代码,图片,XML 资源等文件;不知道你有没有这样做过,看到一个别人的一个 APP 界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的 APK,然后改下后缀名,改成 xxx.zip,然后解压。

我们随便找了一个 apk 进行解压:

我们可以打开 res 目录,获取里面的图片素材

但是,这种方法,获得的只会是一些.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 文件为了方便各位读者,这里将三个打包到一起放到云盘中,又需要的可以进行下载。

  4. 反编译相关的三个工具.zip

2.使用 apktool 反编译 APK 获得图片与 XML 资源

把下载好的 apktool 解压后,我们可以看到下述文件(忽略那两个 csdn,一个是反编译的 apk,一个是反编译后文件):

接下来,双击 cmd.exe,来到命令行,键入:apktool.bat d csdn.apk 即可,Enter 回车:

然后就可以看到生成的 csdn 文件夹,里面就有我们想要资源



好的,就是 XML 资源到手了是吧!图片素材也到手了!

3.使用 dex2jar 将 classes.dex 转换成 jar 文件

把下载好的 dex2jar 文件夹解压,apk 解压后中的 classes.dex 复制到 dex2jar.bat 所在的目录下:

打开 cmd,来到这个目录下:键入:d2j-dex2jar.bat classes.dex

接着我们可以看到,生成了一个 jar 包:


然后就会发现转换完成了

4.使用 jd-gui 查看 jar 包中的 Java 代码

好的,打开 jd-gui 的文件夹

打开后,打开我们 3 中转换后的 jar 包,我们可以看见里面的代码:

csdn 的客户端竟然不混淆代码...可能是本着开源的精神吧,给我们学习代码吧!一般的话,apk 发布都会进行混淆,然后进行一些加密,或者使用第三方的加密平台,用的比较多的"爱加密",有兴趣的也自行百度查看更加详细的介绍!

发布于: 2022-12-31阅读数: 31
用户头像

向阳逐梦

关注

人生享受编程,编程造就人生! 2022-06-01 加入

某公司芯片测试工程师,嵌入式开发工程师,InfoQ签约作者,阿里云星级博主,华为云·云享专家。座右铭:向着太阳,追逐梦想!

评论

发布
暂无评论
反编译APK获取代码&资源_Android Studio_向阳逐梦_InfoQ写作社区