chore: 备份 TNG 注册/captcha 逆向与 MariBank SG bypass 进展
TngRootBypassHook 增强 captcha 诊断、TigerTally/JNIC 分层与 HWUI 策略;新增逆向脚本、Frida 工具与 UI dump;同步 MariBank SG hook 与 tng_exit_guard 更新。
This commit is contained in:
68
reverse/scripts/_scan_calling_code_deep.py
Normal file
68
reverse/scripts/_scan_calling_code_deep.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Deeper scan: UserSearchCallingCodeActivity methods / Compose / launch."""
|
||||
import re
|
||||
import zipfile
|
||||
|
||||
APK = r"C:\Users\Administrator\Desktop\notiMessage\reverse\dumps\tng_base_scan.apk"
|
||||
|
||||
def strings_near(data, needle, radius=200, limit=15):
|
||||
out = []
|
||||
start = 0
|
||||
while len(out) < limit:
|
||||
idx = data.find(needle, start)
|
||||
if idx < 0:
|
||||
break
|
||||
s = max(0, idx - radius)
|
||||
e = min(len(data), idx + len(needle) + radius)
|
||||
chunk = re.sub(rb"[^\x20-\x7e]+", b".", data[s:e])
|
||||
out.append(chunk.decode("ascii", "ignore"))
|
||||
start = idx + 1
|
||||
return out
|
||||
|
||||
def main():
|
||||
z = zipfile.ZipFile(APK)
|
||||
# Collect interesting strings from classes that have CallingCode
|
||||
keys = [
|
||||
b"CallingListScreen",
|
||||
b"setContent",
|
||||
b"ComposeView",
|
||||
b"AbstractComposeView",
|
||||
b"ComponentActivity",
|
||||
b"getCallingCodeList",
|
||||
b"CountryListRepository",
|
||||
b"startActivity",
|
||||
b"UserSearchCallingCodeActivity",
|
||||
b"ll_country",
|
||||
b"hardwareAccelerated",
|
||||
b"RecyclerView",
|
||||
b"LazyColumn",
|
||||
b"androidx/compose",
|
||||
]
|
||||
for dex in sorted(n for n in z.namelist() if n.endswith(".dex")):
|
||||
data = z.read(dex)
|
||||
if b"UserSearchCallingCodeActivity" not in data and b"CallingListScreen" not in data and b"ll_country" not in data:
|
||||
continue
|
||||
print("\n========", dex, "========")
|
||||
for k in keys:
|
||||
if k in data:
|
||||
print("HAS", k.decode())
|
||||
if b"CallingListScreen" in data:
|
||||
print("--- CallingListScreen ctx ---")
|
||||
for c in strings_near(data, b"CallingListScreen", 120, 6):
|
||||
print(" ", c[:240])
|
||||
if b"ll_country" in data:
|
||||
print("--- ll_country ctx ---")
|
||||
for c in strings_near(data, b"ll_country", 100, 8):
|
||||
print(" ", c[:240])
|
||||
|
||||
# Who references UserSearchCallingCodeActivity (launchers)
|
||||
print("\n=== who references UserSearchCallingCodeActivity class desc ===")
|
||||
desc = b"Lmy/com/tngdigital/user/view/UserSearchCallingCodeActivity;"
|
||||
for dex in sorted(n for n in z.namelist() if n.endswith(".dex")):
|
||||
data = z.read(dex)
|
||||
count = data.count(desc)
|
||||
if count:
|
||||
print(dex, "count=", count)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user