本帖最后由 i85201314 于 2022-11-22 21:20 编辑
配合 Docker 镜像服务端使用效果更好
下载这个压缩包
https://cloud.189.cn/t/EZr6ZnFvARF3 (访问码:fo6m)
下载附件
MYapkTool.sh.zip (2.32 KB, 下载次数: 15) 2022-11-22 20:56 上传 点击文件名下载附件
#——————————————————————————————————————-
在线一键使用
如果 apktool.jar Replacement.sh APK 都是在线下载
把附件解压出来 修改 MYapkTool.sh
找到 apk_name=”xxx.apk” xxx.apk换成你apk的名字 比如 123.apk
这个脚本 就可以这样用
yum install -y wget && wget
http://xxx.xxx.xxx.xxx/MYapkTool.sh && bash MYapkTool.sh
#——————————————————————————————————————-
本地使用
mkdir -p $HOME/apktool
解压MYapkTool2.2.2.zip把 apktool.jar Replacement.sh APK 放到 $HOME/apktool
修改 MYapkTool.sh 找到 xiazai 注释掉 #xiazai
#——————————————————————————————————————-
- #!/bin/bash
- # 闪烁之光 客户端 一键编译脚本
- # 尤其证书文件 自动化脚本写不来 所以建议手动创建
- # 123456是密码 创建证书密码 keytool -genkey -alias duke -keypass 123456
- # 创建证书文件 KeyFileName.keystore
- # 10000是证书文件过期时间 10000天
- # keytool -genkey -v -alias KeyName -keyalg RSA -keysize 2048 -validity 10000 -keystore KeyFileName.keystore
- #↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
- mkdir -p $HOME/apktool
- apktool_dir=”$HOME/apktool”
- #安卓包的名称
- apk_name=”xxx.apk”
- #——————-
- # 判断Linux发行版
- #——————-
- #cat /etc/os-release 第一显示的就是系统名称
- abcde_a=”NAME=”Linux Mint””
- abcde_b=”NAME=”CentOS Linux””
- #显示第一行
- osMY=`cat /etc/os-release | sed -n 1p`
- if [[ ! X${abcde_a} = X${osMY} ]];then
- if [[ ! X${abcde_b} = X${osMY} ]];then
- echo “ERR当前系统${osMY}不适合运行该脚本已经停止运行”
- exit
- else
- echo “安装 openjdk8 expect”
- yum -y install expect java-1.8.0-openjdk*
- #————————————————
- JVM_Folde_NAME_CentOS(){
- #找出JVM的文件夹名称
- rm -rf /tmp/JVM_Folder_1688_1688.txt
- ls /usr/lib/jvm | sed ‘s/^ *//’ | sed ‘/^[0-9]/d’ | sed ‘/jre/d’ > /tmp/JVM_Folder_1688_1688.txt
- cat /tmp/JVM_Folder_1688_1688.txt | grep “openjdk-1.8”
- }
- #————————————————
- export JAVA_HOME=/usr/lib/jvm/`JVM_Folde_NAME_CentOS`
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- export JRE_HOME=$JAVA_HOME/jre
- fi
- else
- echo “安装 openjdk8 apktool expect”
- sudo apt-get install apktool expect openjdk-8-* -y
- #————————————————
- JVM_Folde_NAME_Mint(){
- #找出JVM的文件夹名称
- rm -rf /tmp/JVM_Folder_1688_1688.txt
- ls /usr/lib/jvm | sed ‘s/^ *//’ | sed ‘/^[0-9]/d’ | sed ‘/jre/d’ > /tmp/JVM_Folder_1688_1688.txt
- cat /tmp/JVM_Folder_1688_1688.txt | grep “java-8-openjdk-amd64”
- }
- #————————————————
- export JAVA_HOME=/usr/lib/jvm/`JVM_Folde_NAME_Mint`
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- export JRE_HOME=$JAVA_HOME/jre
- fi
- #——————-
- # 远程下载
- #——————-
- xiazai(){
- echo “正在下载 反编译软件 安卓签名密钥 安卓客户端,请稍后……”
- #把 apktool.jar xxx.apk Replacement.sh KeyFileName.keystore 放到这个路径 $HOME/apktool
- cd ${apktool_dir}
- wget http://192.168.1.10/apktool.jar
- wget http://192.168.1.10/${apk_name}
- wget http://192.168.1.10/KeyFileName.keystore
- wget http://192.168.1.10/Replacement.sh
- echo “已经结束下载!”
- chmod -R 755 ${apktool_dir}/Replacement.sh ${apktool_dir}/apktool.jar
- }
- xiazai
- sleep 1
- #——————-
- # 编译安卓客户端
- #——————-
- echo “正在编译安卓客户端请稍后……”
- mkdir -p ${apktool_dir}/tmp
- java -jar ${apktool_dir}/apktool.jar d -f “${apktool_dir}/${apk_name}” -o ${apktool_dir}/tmp
- echo “编译结束”
- sleep 1
- #——————-
- # 修改反编译目录文件
- #——————-
- xiugai_tmp(){
- echo “正在修改安卓文件……”
- #获取本机IP地址
- Host_IP=$(ip addr|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}’)
- echo “${Host_IP}” > ${apktool_dir}/Host_IP.TXT
- IPIPIPIP=$(cat ${apktool_dir}/Host_IP.TXT | sed -n 1p)
- #你先看一下$HOME/apktool/tmp/assets/src/config.lua里的IP我这是 192.168.1.4
- config_DIR_1=”${apktool_dir}/tmp/assets/src”
- cd ${apktool_dir} && ./Replacement.sh ${config_DIR_1} 192.168.1.4 ${IPIPIPIP%%/*}
- #由于 ${apktool_dir}/tmp/AndroidManifest.xml 这个配置文件参数有问题
- #在第二行的 <manifest>内的参数问题不能回编译成功 所以这个文件也要修改
- ReplacedCharacter='<manifest xmlns:android=”http://schemas.android.com/apk/res/android” android:installLocation=”auto” package=”com.sszg.bsxg” platformBuildVersionCode=”23″ platformBuildVersionName=”6.0-2438415″>’
- #需要替换字符的目标文件
- file_name=”${apktool_dir}/tmp/AndroidManifest.xml”
- #需要查找的字符
- key_value=”package=”com.sszg.bsxg””
- changeFile()
- {
- declare -i nline
- getline()
- {
- #查找到特定字符的行
- cat -n $file_name|grep “${key_value}”|awk ‘{print $1}’
- }
- getlinenum()
- {
- awk “BEGIN{a=`getline`;b=”0″;c=(a+b);print c}”;
- }
- nline=`getlinenum`
- sed -i “${nline}c $ReplacedCharacter$1” $file_name
- }
- changeFile
- }
- xiugai_tmp
- sleep 1
- #——————-
- # 打包反编译后的目录
- #——————-
- echo “正在打包反编译目录为APK请稍后……”
- java -jar ${apktool_dir}/apktool.jar b “${apktool_dir}/tmp” -o ${apktool_dir}/NEW_${apk_name}
- echo -e “APK打包完成!\n${apktool_dir}/NEW_${apk_name}”
- sleep 1
- #——————-
- # 签名 NEW_xxx.apk
- #——————-
- #输出自动签名脚本
- expect_1=’#!/usr/bin/expect’
- expect_3=”set apktool_dir “${apktool_dir}/KeyFileName.keystore””
- expect_4=”set passwd “123456””
- expect_5=”#set timeout 20″
- expect_6=”spawn jarsigner -verbose -keystore $apktool_dir/KeyFileName.keystore ${apktool_dir}/NEW_${apk_name} KeyName”
- expect_7=”expect “输入密钥库的密码短语:””
- expect_8=”send “\$passwd\\r””
- expect_9=”interact”
- echo “${expect_1}” >> ${apktool_dir}/expect_B.sh
- echo “${expect_3}” >> ${apktool_dir}/expect_B.sh
- echo “${expect_4}” >> ${apktool_dir}/expect_B.sh
- echo “${expect_5}” >> ${apktool_dir}/expect_B.sh
- echo “${expect_6}” >> ${apktool_dir}/expect_B.sh
- echo “${expect_7}” >> ${apktool_dir}/expect_B.sh
- echo “${expect_8}” >> ${apktool_dir}/expect_B.sh
- echo “${expect_9}” >> ${apktool_dir}/expect_B.sh
- sleep 1
- chmod -R 755 ${apktool_dir}/expect_B.sh
- echo “正在签名APK……”
- cd ${apktool_dir} && ./expect_B.sh
- echo “签名结束”
- #——————-
- echo -e “编译签名后的APK\n${apktool_dir}/NEW_${apk_name}”
- sleep 5
- exit 0
复制代码
没有回复内容