新增 MariBank/SeaBank PH Root 与 SHPSSDK bypass、riskToken 净化及 Up/Suncorp/ubank 消息 Hook;整理 reverse/ 脚本与 Frida 工具链,并补充当日工作说明文档。
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
import subprocess
|
|
import sys
|
|
import zipfile
|
|
import tempfile
|
|
import os
|
|
|
|
TARGET = "com/shopee/bke/lib/safemode/b;"
|
|
APK = sys.argv[1] if len(sys.argv) > 1 else "reverse/apks/seabank_ph_base.apk"
|
|
BT = None
|
|
|
|
|
|
def find_build_tools():
|
|
base = os.environ.get("ANDROID_HOME") or os.path.expanduser(
|
|
r"~\AppData\Local\Android\Sdk"
|
|
)
|
|
tools = os.path.join(base, "build-tools")
|
|
versions = sorted(os.listdir(tools), reverse=True)
|
|
return os.path.join(tools, versions[0], "dexdump.exe")
|
|
|
|
|
|
def main():
|
|
dexdump = find_build_tools()
|
|
with zipfile.ZipFile(APK) as zf:
|
|
for name in zf.namelist():
|
|
if not name.endswith(".dex"):
|
|
continue
|
|
data = zf.read(name)
|
|
if TARGET.encode() not in data and b"Lcom/shopee/bke/lib/safemode/b;" not in data:
|
|
continue
|
|
print("FOUND in", name)
|
|
tmp = tempfile.NamedTemporaryFile(suffix=".dex", delete=False)
|
|
tmp.write(data)
|
|
tmp.close()
|
|
try:
|
|
out = subprocess.check_output(
|
|
[dexdump, "-f", tmp.name], stderr=subprocess.STDOUT, text=True,
|
|
errors="ignore"
|
|
)
|
|
capture = False
|
|
for line in out.splitlines():
|
|
if "Class descriptor : 'Lcom/shopee/bke/lib/safemode/b;'" in line:
|
|
capture = True
|
|
elif capture and line.startswith(" Class descriptor"):
|
|
break
|
|
if capture:
|
|
if "name :" in line or "type :" in line or "Class descriptor" in line:
|
|
print(line)
|
|
finally:
|
|
os.unlink(tmp.name)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|