# -*- coding: utf-8 -*- import subprocess import zipfile from pathlib import Path APK = Path(__file__).resolve().parent.parent / "apks" / "seabank_ph_base.apk" DEXDUMP = Path(r"C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\37.0.0\dexdump.exe") targets = [ "Lcom/shopee/bke/biz/user/errorcodehandler/b;", "Lcom/shopee/bke/biz/user/errorcodehandler/b$a;", "Lcom/shopee/bke/biz/user/errorcodehandler/a;", ] tmp = Path(__file__).resolve().parent.parent / "tmp" / "tmp6.dex" with zipfile.ZipFile(str(APK)) as zf: tmp.write_bytes(zf.read("classes6.dex")) out = subprocess.check_output([str(DEXDUMP), "-d", str(tmp)], universal_newlines=True, errors="replace") for target in targets: print("=" * 60, target) capture = False lines = 0 for line in out.splitlines(): if f"Class descriptor : '{target}'" in line: capture = True elif capture and line.startswith(" Class descriptor") and target not in line: break if capture: if "name :" in line or "type :" in line or "Class descriptor" in line: print(line.strip()) lines += 1 if lines > 200: break