Manual/Client Internals/Android platform layer
v1.0.364 notes · build 2026-11-07 12:10 UTC

Android platform layer

permissions · SDK inventory · dead endpoints · remote kill switch
#android #platform

The layer is a platform shell only; nothing duplicates or gates the SFS2X/HTTP game protocol — cleanly separable.

Permissions

CAMERA = avatar/chat photo upload + Zendesk support attachments; RECORD_AUDIO = Tencent GME/TRTC voice rooms + voice messages; READ/WRITE_CALENDAR = genuine event reminders via CalendarContract.

SDK inventory

CategorySDK
Analytics/attributionAppsFlyer, Firebase (Analytics/Crashlytics/FCM), ThinkingData (China)
Anti-fraudShuMei (数美), device fingerprint, Obfuscator-LLVM hardened
Anti-cheatTencent ACE ("anogs"), root/inline-hook detection
Voice chatTencent GME/TRTC, own BoringSSL stack
IAPGoogle Play Billing v8.3.0 (alt-billing programs)
SupportTwo full SDKs bundled: Zendesk and AIHelp, switched server-side by remote-config flag
AdsNone (no AppLovin/ironSource/Unity Ads/AdMob); IAP-only monetization

Cleartext & dead endpoints

usesCleartextTraffic="true" at manifest level; network security config permits cleartext with system CAs only. Two FunPlus plain-HTTP endpoints present but dead in 1.0.364 static: analyse-aps.readygo.tech/{postback,clientevent}.php (in RecordHttpUtil, no callers; PushRecordManager.RecordToHttp* bodies empty) and upload-img-aps.readygo.tech/get_apk_ver.php (side-load self-update, only for package com.readygo.aps.gp, not com.fun.lastwar.gp). Neither gates gameplay.

Remote kill switch static

libil2cpp.so calls Java class ConfigFetch → raw SSLSocket GET https://storage.googleapis.com/remote-config-analytics/?t= with a spoofed okhttp/3.12.1 User-Agent; integer body → native Java_com_common_ConfigFetch_setConfig, which calls exit(0) when the value is 1 on release builds (2 on debug) — confirmed by arm64 disassembly. Whether the request resolves is open (Base64.DEFAULT appends a newline to the encoded package name).

Anti-cheat JNI split

libanogs.so (Tencent ACE) has a dead Java wrapper com.gamesafe.ano.AnoSdk; C# calls native directly via [DllImport("anogs")] P/Invoke, bypassing Java. Detection/report data travels over a local Unix pipe to Tencent's own backend, not the FunPlus game-server wire.

notes build 2026-11-07 12:10 UTC · lw-notes@9c47e1b · sources: own capture/analysis cross-checked against the public dossier