🕵️ 分析过程
第一步:反编译
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— 热更新 DLLunitybuiltinshaders_*.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