首先准备好这几样工具:
apktool:https://ibotpeaches.github.io/Apktool/
dex2jar:https://github.com/pxb1988/dex2jar
jd-gui: https://github.com/java-decompiler/jd-gui
注意:jd-gui 下载下来是jar包,需要使用 java -jar jd-gui-xxx.jar 命令来启动
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%\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
其中res文件夹用来存放素材文件,同时配置好 JAVA环境变量
这里面的签名文件 test.keystore 生成:https://www.cnblogs.com/laremehpe/p/16163711.html
然后开始反编译:
进入命令行输入:
apktool d ./res/app.apk
此时多出一个文件夹:
同时使用下面这个命令可以查看源代码:
cd dex-tools-2.1 d2j-dex2jar.bat -f ../res/app.apk cd ../ java -jar jd-gui-1.6.6.jar
回编译:
apktool b app -o ./res/ready.apk
这里面app是文件夹的名字,-o 后面的参数是目标文件的位置和名字
此时尝试安装会提示安装失败,缺少证书啥的:
这时候需要找到android studio所携带的 apksigner.bat、zipalign.exe
文件(这两个文件在同一个目录下面):
cd C:\Users\djatm\AppData\Local\Android\Sdk\build-tools\30.0.3
zipalign.exe -p -v 4 (未对齐的安装包地址) (对齐后的安装包地址)
rem 完整命令:
zipalign.exe -p -v 4 C:\Users\djatm\Desktop\develop\dissemble\res\ready.apk C:\Users\djatm\Desktop\develop\dissemble\res\aligned.apk
rem 签名对齐后的apk
apksigner sign --ks (签名文件的地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)
rem 完整命令
apksigner sign --ks C:\Users\djatm\Desktop\develop\dissemble\res\test.keystore --ks-key-alias testalias -out C:\Users\djatm\Desktop\develop\dissemble\res\signed.apk C:\Users\djatm\Desktop\develop\dissemble\res\aligned.apk
再次尝试安装:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!