用jadx和apktool反编译apk

由于之前开发的计费app做好后一时大意,没有做版本控制,刚好遇上固态硬盘悲剧了(买了才几个月,就挂掉了。SanDisk那边二话不说就帮我换个新的过来,估计是维修的成本太高,懒得修了)。还好,主管那有一份我发给他的试用版app,只能用这个app来反编译获取代码再做版本控制了。

前前后后一共用了三款反编译工具(dex2jar、enjarify、jadx)。其中dex2jar和enjarify(google出品),对我来说效果都一般,比较多错误,要么就是变量名搞得模棱两可,要么就是方法体添加了许多不必要的代码,资源引用也帮我全部转成了int了。jadx虽然也有部分资源引用变成了int,但其小巧,简单易用,代码完整性最好,最让我满意。

apk反编译一般分两部分:

  • .dex文件反编译成jar(用jadx)
  • xml文件反编译(用apktool)

jadx反编译dex文件

  1. 把需要反编译的apk更改后缀名为.zip,解压缩获取classes.dex
  2. clone https://github.com/skylot/jadx.git 或者下载https://github.com/skylot/jadx的zip文件到本机,解压缩
  3. 直接运行bin文件夹里面的jadx-gui.bat,打开加载第一步获取到的classes.dex,就完成了反编译
    (也可以把bin目录设置为系统环境变量Path,进入命令行运行 jadx -d out classes.dex,jadx会在当前目录生成一个out文件夹,里面就是反编译到的java文件)

apktool反编译获取xml资源文件

  1. 把以下代码保存成apktool.bat文件
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
  1. 到https://bitbucket.org/iBotPeaches/apktool/downloads下载apktool_x.x.x.jar文件
  2. 确保把上面两个文件放在同一目录下,并把该目录添加到系统环境变量Path中
  3. cmd中执行 apktool d -f “apk路径” -o “文件保存路径” 即可获得该apk下所有的xml资源文件

ok,搞掂!!!

你可能感兴趣的:(用jadx和apktool反编译apk)