Android 反编译 apk

反编译需要使用到三个工具,获取apk里面的资源使用apktool,反编译Java代码使用dex2jar,查看反编译之后的jar文件使用jd-gui。

1、apktool工具可以反编译apk文件,然后拿到apk里面的AndroidManifest.xml等资源文件文件

Apktool - How to InstallApktool - How to Installhttps://ibotpeaches.github.io/Apktool/install/

apktool.jar下载地址:

iBotPeaches / Apktool / Downloads — Bitbuckethttps://bitbucket.org/iBotPeaches/apktool/downloads/

在windows中的使用说明:

(1)下载apktool.jar文件(我下载的是最新的 apktool_2.6.1.jar)

(2)下载apktool.bat文件 (下载地址:https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat

如果你下载不了,可以自己新建一个apktool.bat文件,然后复制如下代码到apktool.bat文件中并保存:

@echo off
setlocal
set BASENAME=apktool_
chcp 65001 2>nul >nul

set java_exe=C:\Program Files\Java\jdk-11.0.15.1\bin\java.exe

rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd "%~dp0"
if exist apktool.jar (
    set BASENAME=apktool
    goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
popd
setlocal DisableDelayedExpansion

rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
if "%~1"=="" goto load
if not "%~2"=="" goto load
set ATTR=%~a1
if "%ATTR:~0,1%"=="d" (
    rem Directory, rebuild
    set fastCommand=b
)
if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
    rem APK file, unpack
    set fastCommand=d
)

:load
"%java_exe%" -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0%BASENAME%%max%.jar" %fastCommand% %*

rem Pause when ran non interactively
for /f "tokens=2" %%# in ("%cmdcmdline%") do if /i "%%#" equ "/c" pause

注意:修改 set java_exe=C:\Program Files\Java\jdk-11.0.15.1\bin\java.exe 路径为你的jdk路径。

(3)把 apktool.jar 和 apktool.bat 放到同一个目录中,例如我放在F:\Android\apktool目录里面。然后把这个目录添加到系统环境变量中,即在系统变量path中新增一条F:\Android\apktool

(4)双击运行apktool.bat,正常情况下你会看见: 

如果报错:C:\Program' is not recognized as an internal or external command

你可以修改下载的apktool.bat文件:

把文件中的多行代码
set java_exe=java.exe

if defined JAVA_HOME (
set java_exe="%JAVA_HOME%\bin\java.exe"
)
修改为下面一行:(注意:C:\Program Files\Java\jdk-11.0.15.1\bin\java.exe 改为你自己安装的jdk目录)
set java_exe=C:\Program Files\Java\jdk-11.0.15.1\bin\java.exe

(5)将你要反编译的apk文件放到F:\Android\apktool目录,然后运行cmd,并切换到F:\Android\apktool目录,再运行编译命令:

apktool d app.apk -o test

命令说明:反编译app.apk文件,反编译后的文件存储到F:\Android\apktool\test目录中,命令执行成功后,你会看到test目录中有反编译后的资源文件。

2、dex2jar工具可以把apk里面的classes.dex转化成jar文件

下载地址:dex2jar - Browse Files at SourceForge.netTools to work with android .dex and java .class fileshttps://sourceforge.net/projects/dex2jar/files/

github上有更新的版本:

GitHub - pxb1988/dex2jar: Tools to work with android .dex and java .class filesTools to work with android .dex and java .class files - GitHub - pxb1988/dex2jar: Tools to work with android .dex and java .class fileshttps://github.com/pxb1988/dex2jar

在windows中的使用说明:

(1)下载dex2jar(我这里下载的是 dex2jar-2.0.zip,建议下载github上的新版dex2jar-2.1.zip),解压 dex2jar-2.0.zip,我解压后的目录为:F:\Android\dex2jar-2.0

(2)将你要反编译的apk文件后缀名改为.rar或.zip,并解压得到其中的classes.dex文件(可能有多个*.dex文件,它就是java文件编译后的class文件再通过dx工具打包而成的);

(3)将获取到的classes.dex文件放到之前解压出来的工具dex2jar-2.0 文件夹内,即我这里是F:\Android\dex2jar-2.0目录中,在命令行下定位到dex2jar.bat所在目录,输入命令:

d2j-dex2jar.bat classes.dex

会生成反编译后的文件:

classes-dex2jar.jar

现在就可以使用jd-gui工具打开它,查看其中的代码了。

3、jd-gui工具用于查看jar文件

Java DecompilerJD Java Decompilerhttp://java-decompiler.github.io/

window版下载地址:

https://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-windows-1.6.6.ziphttps://github.com/java-decompiler/jd-gui/releases/download/v1.6.6/jd-gui-windows-1.6.6.zip在windows中的使用说明:

(1)下载 jd-gui-windows-1.6.6.zip,并解压

(2)进入解压后的文件目录中,双击jd-gui.exe文件运行:

在打开的程序窗口,点击File -> Open File -> 选中上一步用dex2jar反编译的 classes-dex2jar.jar 文件即可查看代码了,如:

 这里给一份我下载的包,包括apktool_2.6.1、dex-tools-2.1和jd-gui-windows-1.6.6,百度网盘地址:

链接:https://pan.baidu.com/s/1l6tOpsxs8LLJfbNeAuc7Qg 
提取码:ytza

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值