【Android】使用Apktool反编译Apk文件
文章目录
- 1. 下载Apktool
- 1.1 Apktool下载
- 1.2 百度网盘下载
- 2. 安装Apktool
- . 使用Apktool
- .1 配置Java环境
- .2 准备Apk文件
- . 反编译Apk文件
- ..1 解包Apk文件
- ..2 修改Apk文件
- .. 打包Apk文件
- ..4 签名Apk文件
1. 下载Apktool
要使用Apktool,需要准备好 apktool.jar
和 apktool.bat
。
我准备了两种下载方式,可自行选择:
- apktool下载地址
- 百度网盘下载链接
apktool下载地址:https://apktool/docs/install
1.下载apktool.bat
:点击高亮字体 wrapper script
,进入apktool.bat
的下载地址,我这里显示无法访问链接,因此给出替代方案。
自己本地电脑新建一个apktool.bat
文件,然后使用vscode
或者notepad
等文本编辑器打开apktool.bat
文件,并复制以下代码到该文件中:
@echo off
setlocal
set BASEAME=apktool_
chcp 65001 2>nul >nul
set java_exe=
if defined JAVA_HOME (
set java_exe=%JAVA_HOME%\bin\
)
rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd %~dp0
if exist apktool.jar (
set BASEAME=apktool
goto skipversioned
)
set max=0
for /f tokens=1* delims=-_.0 %%A in ( dir /b /a-d %BASEAME%*.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 =UTF8 %~dp0%BASEAME%%max%.jar %fastCommand% %*
rem Pause when ran non interactively
for /f tokens=2 %%# in (%cmdcmdline%) do if /i %%# equ /c pause
2.下载apktool.jar
- 点击高亮字体
latest version
,进入apktool.jar
的下载地址,点击下载最新版的apktool_2.9..jar
- 下载完成后将
apktool_2.9..jar
重命名为apktool.jar
百度网盘链接:
链接:https://pan.baidu/s/1gmoIO2JABqotrLiaCMx6g?pwd=4m4x
提取码:4m4x
2. 安装Apktool
1.将apktool.bat
和 apktool.jar
放到任一同级目录下
如 E:\Applicati\Apktool
2.添加该目录路径到 Path
环境变量
- 右键此电脑->属性->系统->高级系统设置->高级->环境变量,打开环境变量
- 修改
Path
变量,添加E:\Applicati\Apktool
到变量中
.验证是否安装成功
打开cmd,输入apktool
命令,显示如下图,表示安装成功:
. 使用Apktool
要想使用Apktool工具,必须先配置Java环境,需要安装JDK 1.8以上的版本。
JDK的安装与配置:Java环境搭建,配置环境变量
准备一个apk文件用于反编译的练习,apk文件见 1.2
章节的百度网盘链接:
该apk文件打开后样式如下:
反编译apk文件分为四步:
- 解包apk文件
- 对解包后的apk文件进行修改
- 重新打包apk文件
- 对apk文件进行签名(签名以后才能够安装到手机)
..1 解包Apk文件
切换到apk所在的路径,并输入以下命令,解压apk文件到当前文件夹:
apktool d app-release.apk
显示如下图,表示解压成功:
解压后在app-release.apk
文件的同级目录下,得到同名文件夹 app-release
..2 修改Apk文件
反编译的目的就是为了修改原来的apk文件,修改成自己想要的样子。
原先的的apk样式为红的 Hello World!
,此处我想修改成蓝的 Hello Android!
,步骤如下:
1.使用 vscode
打开 app-release
文件夹,到路径 res/layout/activity_main.xml
,修改其中的颜和文本代码如下:
android:textColor=#0000FF
android:text=Hello Android!
2.修改后的 activity_main.xml
文件内容如下
.. 打包Apk文件
1.META-IF
文件夹,这里面包含旧的签名文件,用不到该文件夹,因此删除它
2.使用以下命令打包文件夹,生成新的apk文件
apktool b app-release
..4 签名Apk文件
1.生成密钥库文件,即keystore文件
使用以下命令生成keystore文件:
keytool -genkey -alias android_keystore -keyalg RSA -validity 20000 -keystore android.keystore
以上各个参数的含义如下:
-
-genkey
:这个参数表示keytool要生成一个新的密钥对和一个自签名的证书 -
-alias android_keystore
:这个参数指定了生成的密钥对和证书的别名(alias),此处别名为android_keystore,这个别名在密钥库中用于唯一标识这个特定的密钥对和证书 -
-keyalg RSA
:这个参数指定了用于生成密钥对的算法,即RSA算法。RSA是一种广泛使用的非对称加密算法,它使用一对密钥:一个公钥用于加密数据,另一个私钥用于解密数据 -
-validity 20000
:这个参数设置了证书的有效期,以天为单位,此处证书的有效期是20000天 -
-keystore android.keystore
:这个参数指定了密钥库(keystore)的文件名,即android.keystore。密钥库是一个用于存储密钥对和证书的数据库文件
当使用keytool生成密钥对和证书时,命令执行过程需要输入信息:
- 密钥库的密码:此处我填写为
12456
- 密钥对和证书的所有者姓名、组织单位、城市或地区、省/州/郡、国家代码等,这些信息将被包含在生成的证书中,用于标识证书的所有者。
此时就在当前目录下,生成了一个android.keystore
文件:
2.将刚刚生成的android.keystore
文件,拷贝到未签名的apk文件同级目录下,切换到该路径下,输入以下命令,进行签名:
jarsigner -verbose -keystore android.keystore -signedjar app-release-signed.apk app-release.apk android_keystore
以上各个参数的含义如下:
-
jarsigner
:这是 Java 开发工具包 (JDK) 中的一个工具,用于对 JAR 文件、APK 文件等进行签名 -
-verbose
:这个参数用于输出详细的签名过程,当使用这个参数时,jarsigner 会显示更多关于签名步骤的信息,这有助于调试和了解签名过程的具体情况 -
-keystore android.keystore
:这个参数指定了密钥库文件的路径和名称,即 android.keystore -
-signedjar app-release-signed.apk app-release.apk
:这个参数指定了签名后的 APK 文件的输出路径和名称,即 app-release-signed.apk,这个文件是原始 APK 文件 app-release.apk 经过签名后的结果 -
android_keystore
:这个参数指定了密钥库中用于签名的密钥对的别名,别名是在使用 keytool 生成密钥对时指定的,它用于在密钥库中唯一标识这个特定的密钥对
此时就在当前目录下,生成了一个app-release-signed.apk
文件:
.将新生成的app-release-signed.apk
文件,拖入到夜神模拟器中安装,然后点击打开即可
如果夜神模拟器中原先存在该同名应用,需要先卸载掉,然后再安装,否则可能出现一直在安装中,导致安装不成功的情况。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 18 条评论) |
本站网友 amble | 22分钟前 发表 |
自己本地电脑新建一个apktool.bat文件,然后使用vscode或者notepad等文本编辑器打开apktool.bat文件,并复制以下代码到该文件中: @echo off setlocal set BASEAME=apktool_ chcp 65001 2>nul >nul set java_exe= if defined JAVA_HOME ( set java_exe=%JAVA_HOME%\bin\ ) rem Find the highest version .jar available in the same directory as the script setlocal EnableDelayedExpansion pushd %~dp0 if exist apktool.jar ( set BASEAME=apktool goto skipversioned ) set max=0 for /f tokens=1* delims=-_.0 %%A in ( dir /b /a-d %BASEAME%*.jar ) do if %%~B gtr !max! set max=%%~nB | |
本站网友 建筑工程信息 | 25分钟前 发表 |
密钥库是一个用于存储密钥对和证书的数据库文件 当使用keytool生成密钥对和证书时,命令执行过程需要输入信息: 密钥库的密码:此处我填写为 12456密钥对和证书的所有者姓名 | |
本站网友 李思思的胸 | 24分钟前 发表 |
//pan.baidu/s/1gmoIO2JABqotrLiaCMx6g?pwd=4m4x 提取码:4m4x 2. 安装Apktool 1.将apktool.bat 和 apktool.jar 放到任一同级目录下 如 E | |
本站网友 大有恬园二手房 | 28分钟前 发表 |
组织单位 | |
本站网友 转塘二手房 | 18分钟前 发表 |
//pan.baidu/s/1gmoIO2JABqotrLiaCMx6g?pwd=4m4x 提取码:4m4x 2. 安装Apktool 1.将apktool.bat 和 apktool.jar 放到任一同级目录下 如 E | |
本站网友 洛阳亲友如想问 | 22分钟前 发表 |
原先的的apk样式为红的 Hello World!,此处我想修改成蓝的 Hello Android!,步骤如下: 1.使用 vscode 打开 app-release 文件夹,到路径 res/layout/activity_main.xml,修改其中的颜和文本代码如下: android | |
本站网友 新视野 | 4分钟前 发表 |
我准备了两种下载方式,可自行选择: apktool下载地址百度网盘下载链接 1.1 Apktool下载 apktool下载地址:https | |
本站网友 上海大众汽车俱乐部 | 7分钟前 发表 |
文章目录 1. 下载Apktool1.1 Apktool下载1.2 百度网盘下载 2. 安装Apktool. 使用Apktool.1 配置Java环境.2 准备Apk文件. 反编译Apk文件..1 解包Apk文件..2 修改Apk文件.. 打包Apk文件..4 签名Apk文件 1. 下载Apktool 要使用Apktool,需要准备好 apktool.jar 和 apktool.bat | |
本站网友 云帆搜索 | 28分钟前 发表 |
原先的的apk样式为红的 Hello World!,此处我想修改成蓝的 Hello Android!,步骤如下: 1.使用 vscode 打开 app-release 文件夹,到路径 res/layout/activity_main.xml,修改其中的颜和文本代码如下: android | |
本站网友 长使英雄泪满襟 | 27分钟前 发表 |
skipversioned popd setlocal DisableDelayedExpansion rem Find out if the commandline is a parameterless .jar or directory | |
本站网友 金辉融侨城 | 26分钟前 发表 |
load %java_exe% -jar -Duser.language=en =UTF8 %~dp0%BASEAME%%max%.jar %fastCommand% %* rem Pause when ran non interactively for /f tokens=2 %%# in (%cmdcmdline%) do if /i %%# equ /c pause 2.下载apktool.jar 点击高亮字体 latest version,进入apktool.jar的下载地址,点击下载最新版的apktool_2.9..jar下载完成后将apktool_2.9..jar重命名为apktool.jar 1.2 百度网盘下载 百度网盘链接: 链接:https | |
本站网友 臀部整形 | 24分钟前 发表 |
//apktool/docs/install 1.下载apktool.bat:点击高亮字体 wrapper script,进入apktool.bat的下载地址,我这里显示无法访问链接,因此给出替代方案 | |
本站网友 床上接吻 | 28分钟前 发表 |
我准备了两种下载方式,可自行选择: apktool下载地址百度网盘下载链接 1.1 Apktool下载 apktool下载地址:https | |
本站网友 sayno | 3分钟前 发表 |
load %java_exe% -jar -Duser.language=en =UTF8 %~dp0%BASEAME%%max%.jar %fastCommand% %* rem Pause when ran non interactively for /f tokens=2 %%# in (%cmdcmdline%) do if /i %%# equ /c pause 2.下载apktool.jar 点击高亮字体 latest version,进入apktool.jar的下载地址,点击下载最新版的apktool_2.9..jar下载完成后将apktool_2.9..jar重命名为apktool.jar 1.2 百度网盘下载 百度网盘链接: 链接:https | |
本站网友 美女自卫图片 | 26分钟前 发表 |
JDK的安装与配置:Java环境搭建,配置环境变量 .2 准备Apk文件 准备一个apk文件用于反编译的练习,apk文件见 1.2 章节的百度网盘链接: 该apk文件打开后样式如下: . 反编译Apk文件 反编译apk文件分为四步: 解包apk文件对解包后的apk文件进行修改重新打包apk文件对apk文件进行签名(签名以后才能够安装到手机) ..1 解包Apk文件 切换到apk所在的路径,并输入以下命令,解压apk文件到当前文件夹: apktool d app-release.apk 显示如下图,表示解压成功: 解压后在app-release.apk文件的同级目录下,得到同名文件夹 app-release ..2 修改Apk文件 反编译的目的就是为了修改原来的apk文件,修改成自己想要的样子 | |
本站网友 东城区 | 24分钟前 发表 |
APK 文件等进行签名 -verbose:这个参数用于输出详细的签名过程,当使用这个参数时,jarsigner 会显示更多关于签名步骤的信息,这有助于调试和了解签名过程的具体情况 -keystore android.keystore:这个参数指定了密钥库文件的路径和名称,即 android.keystore -signedjar app-release-signed.apk app-release.apk:这个参数指定了签名后的 APK 文件的输出路径和名称,即 app-release-signed.apk,这个文件是原始 APK 文件 app-release.apk 经过签名后的结果 android_keystore:这个参数指定了密钥库中用于签名的密钥对的别名,别名是在使用 keytool 生成密钥对时指定的,它用于在密钥库中唯一标识这个特定的密钥对 此时就在当前目录下,生成了一个app-release-signed.apk文件: .将新生成的app-release-signed.apk文件,拖入到夜神模拟器中安装,然后点击打开即可 如果夜神模拟器中原先存在该同名应用,需要先卸载掉,然后再安装,否则可能出现一直在安装中,导致安装不成功的情况 | |
本站网友 又绿江南岸 | 17分钟前 发表 |
skipversioned popd setlocal DisableDelayedExpansion rem Find out if the commandline is a parameterless .jar or directory |