美文网首页Android开发之KotlinAndroid进阶之路android技术专栏
Android apk反编译成java源码实战操作全指南

Android apk反编译成java源码实战操作全指南

作者: 进击的程序茗 | 来源:发表于2017-09-08 19:41 被阅读1110次

    写在前面

    本文参照教程:
    Android APK反编译就这么简单 详解(附图)]
    如何在大量jar包中搜索特定字符
    主要记录apk反编译成java源码过程及遇到的问题
    工具包百度网盘下载地址在后面
    本教程截止2017.09.08亲测可跑通

    环境说明

    • win7
    • java jdk1.8.0
    • apktool2.2.2 反编译工具 用于资源文件的获取,可以提取出图片文件和布局文件进行查看
    • dex2jar-0.0.9.15 将apk反编译成java源码(classes.dex转化成jar文件)
    • jad 1.4 反编译成java源码
    • FileLocatorPro_x64 快速搜索工具

    反编译步骤

    • 反编译得到程序的源代码、图片、XML配置、语言资源等文件
      • 使用apktool2.2.2 反编译得到资源文件的获取
    • 反编译得到Java源代码
      • 将apk解压得到classes_dex文件
      • 使用dex2jar-0.0.9.15操作 classes_dex 生成.jar文件
      • 将jar文件解压得到.class文件
      • 使用jad工具将.class文件转换为.java文件
      • 使用搜索工具全局搜索正则匹配关键字

    apktool2.2.2 反编译得到源代码、图片、XML配置等文件

    解压从网上下载的apktool2.2.2工具 ,将下载的apk放入同一文件夹下。

    在当前文件夹下调用cmd,执行命令

    //apktool d -f [apk名字] -o  [输出文件夹名字]
    apktool d -f xiaominew.apk -o  xiaominew
    

    则在当前文件夹中就会生成xiaominew文件夹,里面是反编译出来的一些文件。我这边主要是要编译到java源码,然后从源码中查找一些东西,所以我主要采用的是下面的方法。

    apk反编译成java源码

    解压缩apk

    网上说对于下载下来的xx.apk需要先把其后缀名改成.zip。然后对其解压缩,我是直接将xx.apk解压缩了。解压缩后的文件结构如下(以小米手机浏览器的apk为例):

    解压缩生成classes.dex

    生成.jar文件

    在上一步骤中我们解压缩可以拿到classes.dex文件,此时我们去dex2jar-0.0.9.15的文件夹下,调用命令行cmd,执行命令如下(路径请更改):

    dex2jar.bat  E:\1\tool\apktool2.2.2\xiaominew\classes.dex   
    

    此时再xiaominew的文件夹下生成了clasess_dex2jar.jar 文件

    生成clasess_dex2jar.jar

    解压缩.jar文件

    将上一步骤生成的.jar文件右键解压缩生成对应文件夹。该文件夹中即为对应的.class文件

    生成.jar文件夹 .clsss文件

    使用jad工具生成.java文件

    从网上下载jad工具jad download,解压后会有jad.exe;

    5.png
    这个jad.exe要使其全局生效,需要配环境变量,我这边是直接将其放到了jdk的bin文件夹下,因为该文件夹已被配置到了环境变量中,将jad.exe放入后即可全局使用。同样我们进入刚才的classes_dex2jar的文件夹里,调用当前命令行cmd,执行命令完成后,在classes_dex2jar的文件夹里会有新生成的文件夹
    //jad -o -r -s java -d [生成文件名] [class路径]
    jad -o -r -s java -d src ./**/*.class
    

    为了方便区本我执行的命令是jad -o -r -s java -d newnewnewcomes ./**/*.class(新新新新来的)
    从图中我们可以看出在classes_dex2jar的文件夹中生成了newnewnewcomes,进入newnewnewcomes里面的文件变成了.java形式,至此,反编译为java源码完毕。

    生成了新新新新新来的 新新新来的里面和外边的是一样的 但是新新新来的里面已经是java文件啦

    搜索字符串

    我这边反编译成java源码主要是为了去里面查找某些字符串,所以这就需要一个可以快速查找大量文件的工具,在windows平台使用了Filelocator简直好用到哭,该工具可以快速查找,支持字符串查找,正则匹配等多种方式。通过输入文件名称,匹配文本,查找位置,点击右边的开始即可快速查找。

    工具下载

    整理了本文中所用的工具,上传到了百度网盘上,apk反编译工具集合下载密码:9fn8。压缩包中文件内容如图所示:

    sdfsdfaaasdfsadfsdafas.png

    问题说明

    1. Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
      需要升级APK2,0.0以上版本
    1. Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
      apk 2.2.2命令结构更改了,下图的输入方式是错误的
      错误的输入方式
      正确的输入方式:
      apktool d -f xiaomi.apk -o foldername
      正确的输入方式

    个人博客:
    进击的程序茗

    相关文章

      网友评论

      本文标题:Android apk反编译成java源码实战操作全指南

      本文链接:https://www.haomeiwen.com/subject/uyuijxtx.html