# -*- coding: utf-8 -*- import re import zipfile from pathlib import Path APK = Path(__file__).resolve().parent.parent / "apks" / "maribank_sg_base.apk" with zipfile.ZipFile(str(APK)) as zf: d = b"".join(zf.read(n) for n in zf.namelist() if n.endswith(".dex")) for kw in [ b"CharacterCrypto", b"IV_Monitor", b"getDfpByMMKV", b"NativeEncryptUtilsWrapper", b"dfp/v1/data/report", b"com/shopee/bke/lib/jni/utils/d", ]: print(kw.decode(), d.count(kw)) print("\ndfp-related classes:") for m in re.finditer(rb"Lcom/[^;]{0,120}[Dd][Ff][Pp][^;]{0,40};", d): print(m.group().decode()[1:-1].replace("/", ".")) print("\nMonitor classes:") for m in re.finditer(rb"Lcom/[^;]{0,120}Monitor[^;]{0,40};", d): s = m.group().decode()[1:-1].replace("/", ".") if "bke" in s or "shps" in s: print(s)