🕵️ 分析过程

第一步:反编译

Copy

apktool d 少侠三国4.0.APK -o shaoxia-decompiled

第二步:Il2CppDumper 还原代码

Copy

dotnet Il2CppDumper.dll \
  shaoxia-decompiled/lib/armeabi-v7a/libil2cpp.so \
  shaoxia-decompiled/assets/bin/Data/Managed/Metadata/global-metadata.dat \
  shaoxia-output

输出 dump.cs(所有 C# 类/方法的完整签名)和 script.json(方法在 so 中的虚拟地址)。

第三步:定位联网逻辑

发现两个关键模块:

模块 作用
AADownloadManager Addressables 资源下载管理器
LoadDll HybridCLR 热更新 DLL 加载器

远程服务器:http://42.194.236.217:3277/Android/

需要下载的远程资源包:

  • peb_assets_all.bundle — 预制体
  • cj_scenes_all.bundle — 场景
  • tp_assets_all.bundle — 贴图
  • hotupdatedll_assets_all.bundle — 热更新 DLL
  • unitybuiltinshaders_*.bundle — 着色器

第四步:Patch so 文件

用 Python 直接修改 libil2cpp.so 的二进制,将联网方法的开头替换为 MOV R0, #0; BX LR(立即返回空值):

方法 地址 效果
FetchRemoteLabelDownloadsize 0xA5C748 跳过远程版本检查
DownloadDependencies 0xA5C7F0 跳过远程资源下载

第五步:重新打包签名

Copy

apktool b shaoxia-decompiled -o shaoxia-nonet.apk
java -jar uber-apk-signer.jar --apks shaoxia-nonet.apk