apk反编译教程(2022win11亲测)
捣鼓apk反编译,想做一些羞羞的事情,网上的教程大多都比较旧,这里更新一篇比较新且详细的反编译教程。
-
目录
-
软件准备
首先我们想要比较完整的解析一个apk需要三个工具:
- apktool (用于资源文件获取)
- dex2jar (用于获取源码)
- jd-gui (用于源码查看)
附上链接
apktool官网 https://ibotpeaches.github.io/Apktool/
dex2jar官方github仓库 https://github.com/pxb1988/dex2jar
jd-gui Google Code仓库(直接下载) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/innlab/jd-gui-0.3.3.windows.zip
这里jd-gui其实是比较次要的,因为大多数情况到不了看代码这一步,dex2jar就解析不了了
-
apktool安装和使用
apktool官网讲解安装方法非常详细---->>https://ibotpeaches.github.io/Apktool/install/
这里再翻译啰嗦一下
首先先检查java环境,然后把下面这一段放在文本文档里面改个后缀改成 apktool.bat
@echo off setlocal set BASENAME=apktool_ chcp 65001 2>nul >nul set java_exe=java.exe if defined JAVA_HOME ( set java_exe="%JAVA_HOME%injava.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
然后下载官网最新的 apktool.jar ,我这里目前是2.6.0之后改名成 apktool.jar
两个文件(apktool.bat和jar)放在同一个文件夹下面,然后把要反编译的apk也放进来,之后用cmd在该文件夹下面执行命令 apktool.bat d -f test.apk test 更改你自己的apk名称和输出文件夹打开“test”文件夹,就可以看到反编译后生成的文件,在这些生成的文件和文件夹当中,我们关心的是res文件夹中和AndroidManifest.xml文件,打开res文件夹,里面存放了我们所关心的xml文件,如下图所示:
-
dex2jar安装和使用
dex2jar官方github仓库里面进入下载最新版的SNAPSHOT如下图
解压之后,把apk文件的后缀改成zip再解压获取classes文件,类似下图
把要反编译的classes文件放在SNAPSHOT文件夹里面执行命令
d2j-dex2jar.bat classes.dex
这里测试了两个
错误示范:如果下载了错误的(低的)版本可能会报错
error warning
有些离谱的解决方案是修改dex文件里面的037为036或者035
离谱操作
但是我试了是不行
-
jd-gui使用
最后我们用jd-gui打开反编译出来的jar文件
END
相关文章
- LeetCode 剑指 Offer II 088. 爬楼梯的最少成本
- 如何从Docker镜像中提取Dockerfile?
- 对于F5G的发展,学院派怎么看?
- LeetCode 剑指 Offer II 089. 房屋偷盗
- 适合用于FPKM数据求差异基因的ballgown算法
- 元宇宙:双十一的解药
- 宝德马竹茂:和信服云展开更紧密合作,给用户提供更简单易用的产品
- 太强了,Istio竟然有这么多功能!
- LeetCode 171. Excel 表列序号(swift)
- 企业如何拥抱混合云?
- LeetCode 557. 反转字符串中的单词 III
- VMware董事会任命Raghu Raghuram为首席执行官
- LeetCode 5854. 学生分数的最小差值
- 30年过去了,为什么IPv6还不能完全取代IPv4?
- LeetCode 389. 找不同
- Kubernetes的来龙去脉与运行流程
- LeetCode 412. Fizz Buzz
- Wi-Fi 7:它是什么,你期待它什么时候出现?
- 刘慈欣与扎克伯格的元宇宙
- 2025年,5G核心市场规模将达94.97亿美元