ANTI 和谐教程
感谢BING Ai 的友情演出
第一步执行这串代码,意味着什么
echo "Decompile Azur Lane apk" java -jar "C:\apktool\apktool.jar" -f d com.bilibili.azurlane.gp.apk
BING Ai
第一步执行这串代码的意思是在终端中显示“Decompile Azur Lane apk”这句话,然后使用apktool.jar这个工具来反编译com.bilibili.azurlane.gp.apk这个文件。
Azur Lane是一款二次元海战游戏,apktool.jar是一款可以对Android应用程序进行反编译和重打包的工具。
第二步执行这串代码,意味着什么
oncreate=$(grep -n -m 1 'onCreate' com.bilibili.azurlane.gp/smali_classes3/com/unity3d/player/UnityPlayerActivity.smali | sed 's/[0-9]*\:\(.*\)/\1/') sed -ir "s#\($oncreate\)#.method private static native init(Landroid/content/Context;)V\n.end method\n\n\1#" com.bilibili.azurlane.gp/smali_classes3/com/unity3d/player/UnityPlayerActivity.smali sed -ir "s#\($oncreate\)#\1\n const-string v0, \"Dev_Liu\"\n\n\ invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V\n\n invoke-static {p0}, Lcom/unity3d/player/UnityPlayerActivity;->init(Landroid/content/Context;)V\n#" com.bilibili.azurlane.gp/smali_classes3/com/unity3d/player/UnityPlayerActivity.smali
BING Ai
第二步执行这串代码的意思是在smali代码中添加一些自定义的方法和指令,用于修改Azur Lane apk的行为。
smali代码是Android应用程序的低级代码,可以通过反编译apk文件得到。smali代码使用一种类似于汇编语言的语法,可以对Android应用程序进行深入的分析和修改。
oncreate这个变量存储了UnityPlayerActivity.smali文件中onCreate方法的第一行代码。
sed -ir这个命令是用来替换文本文件中的内容的。
第一个sed -ir命令是在onCreate方法之前添加一个私有静态本地方法init,它接受一个Android上下文对象作为参数。
第二个sed -ir命令是在onCreate方法内部添加三条指令,分别是:
将字符串"Dev_Liu"赋值给寄存器v0
调用System.loadLibrary方法,加载名为"Dev_Liu"的库文件
调用刚刚定义的init方法,传入当前对象p0作为参数
这些修改可能是为了实现某种功能或者绕过某种检测。
第三步,把*.so库文件复制进反编译出来的lib中,再执行这串代码,意味着什么
java -jar "C:\apktool\apktool.jar" -f b com.bilibili.azurlane.gp -o build/com.bilibili.azurlane.gp.patched.apk
BING Ai
第三步执行这串代码的意思是使用apktool.jar这个工具来重打包com.bilibili.azurlane.gp这个文件夹,生成一个修改后的apk文件,命名为com.bilibili.azurlane.gp.patched.apk。
.so库文件是一种共享库文件,用于在Android和Linux操作系统上提供一些公共的功能和逻辑。把.so库文件复制进反编译出来的lib中,可能是为了让修改后的apk文件能够调用这些库文件中的方法。
最后一步,执行这些代码意味着什么
# 遍历build目录下的所有apk文件
for f in build/*.apk; do
# 将apk文件重命名为.apk.unsigned
mv $f ${f%.apk}.apk.unsigned
# 打印"Zipaligning $f"
echo "Zipaligning $f"
# 使用zipalign工具对未签名的apk文件进行优化,并输出到原来的文件名
zipalign -pvf 4 ${f%.apk}.apk.unsigned $f
# 删除未签名的apk文件
rm ${f%.apk}.apk.unsigned
# 打印"Signing $f"
echo "Signing $f"
# 打印apksigner工具的版本信息
echo $(apksigner --version)
# 使用apksigner工具对zipaligned后的apk文件进行签名,使用testkey.pk8和testkey.x509.pem作为密钥和证书
java -jar "C:\apktool\lib\apksigner.jar" sign --key testkey.pk8 --cert testkey.x509.pem $f
# 结束循环
done
BING Ai
最后一步执行这些代码的意思是对build文件夹中的所有apk文件进行优化和签名,以便能够在Android设备上安装和运行。
for f in build/*.apk; do 这个命令是开始一个循环,对build文件夹中的每个apk文件执行以下操作。
mv $f ${f%.apk}.apk.unsigned 这个命令是将apk文件重命名为.apk.unsigned,表示这个文件还没有签名。
echo “Zipaligning $f” 这个命令是打印"Zipaligning $f"这句话,其中$f是当前循环的apk文件的名称。
zipalign -pvf 4 ${f%.apk}.apk.unsigned $f 这个命令是使用zipalign工具对未签名的apk文件进行优化,使得其中的资源能够快速地从APK中加载,并输出到原来的文件名。-p选项表示对未压缩的.so文件进行页面对齐,-v选项表示输出详细信息,-f选项表示覆盖已有的输出文件,4表示按照4字节边界进行对齐。
rm ${f%.apk}.apk.unsigned 这个命令是删除未签名的apk文件,因为已经不需要了。
echo “Signing $f” 这个命令是打印"Signing $f"这句话,其中$f是当前循环的apk文件的名称。
echo $(apksigner --version) 这个命令是打印apksigner工具的版本信息。apksigner是一种用于为APK签名并确认APK在所有支持版本上都能通过验证的工具。
java -jar “C:\apktool\lib\apksigner.jar” sign --key testkey.pk8 --cert testkey.x509.pem $f 这个命令是使用apksigner.jar这个工具对zipaligned后的apk文件进行签名,使用testkey.pk8和testkey.x509.pem作为密钥和证书。sign选项表示要执行签名操作,–key和–cert选项分别指定密钥和证书的路径,$f表示要签名的APK文件。
done 这个命令是结束循环。
所以完成上面的步骤我只需要java运行环境,以及一个git bash 客户端,zipalign,apksigner,apktool这些工具,对吗
BING Ai
是的,您需要这些工具和环境来完成上面的步骤。另外,您还需要testkey.pk8和testkey.x509.pem这两个文件作为密钥和证书来签名APK。如果您没有这些文件,您可以使用apksigner工具生成它们,或者使用其他的密钥和证书。
怎么获取和安装这些工具就别问我了,网上一大堆.
最重要的一点是要动脑子,具体操作看视频
https://www.bilibili.com/video/BV19k4y1t7k6
还说啥呢,给我斗鱼9999投一波票不过分吧