欢迎光临散文网 会员登陆 & 注册

ANTI 和谐教程

2023-03-22 16:22 作者:neatvest  | 我要投稿

感谢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投一波票不过分吧





ANTI 和谐教程的评论 (共 条)

分享到微博请遵守国家法律