TngRootBypassHook 增强 captcha 诊断、TigerTally/JNIC 分层与 HWUI 策略;新增逆向脚本、Frida 工具与 UI dump;同步 MariBank SG hook 与 tng_exit_guard 更新。
60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Compare CallingCode vs CountrySelect activities / intent extras."""
|
|
import re
|
|
import zipfile
|
|
|
|
APK = r"C:\Users\Administrator\Desktop\notiMessage\reverse\dumps\tng_base_scan.apk"
|
|
|
|
|
|
def near(data, needle, r=180, lim=12):
|
|
out = []
|
|
start = 0
|
|
while len(out) < lim:
|
|
i = data.find(needle, start)
|
|
if i < 0:
|
|
break
|
|
chunk = re.sub(rb"[^\x20-\x7e]+", b".", data[max(0, i - r): i + len(needle) + r])
|
|
out.append(chunk.decode("ascii", "ignore"))
|
|
start = i + 1
|
|
return out
|
|
|
|
|
|
def main():
|
|
z = zipfile.ZipFile(APK)
|
|
for dex in sorted(n for n in z.namelist() if n.endswith(".dex")):
|
|
data = z.read(dex)
|
|
if b"UserCountrySelectActivity" not in data and b"UserSearchCallingCodeActivity" not in data:
|
|
continue
|
|
print("\n====", dex, "====")
|
|
for n in (b"UserCountrySelectActivity", b"AbsCountrySelectActivity",
|
|
b"newIntent", b"CallingListScreen"):
|
|
if n in data:
|
|
print("HAS", n.decode())
|
|
for n in (b"UserSearchCallingCodeActivity", b"UserCountrySelectActivity"):
|
|
if n not in data:
|
|
continue
|
|
print("--", n.decode(), "--")
|
|
for c in near(data, n, 100, 6):
|
|
if "Hilt_" in c and ".java" in c:
|
|
continue
|
|
print(" ", c[:220])
|
|
|
|
print("\n=== calling/country intent-like strings ===")
|
|
seen = set()
|
|
for dex in sorted(n for n in z.namelist() if n.endswith(".dex")):
|
|
data = z.read(dex)
|
|
if b"CallingCode" not in data and b"CountrySelect" not in data:
|
|
continue
|
|
for m in re.findall(
|
|
rb"(?:EXTRA_|KEY_|arg_|ARG_)[A-Za-z0-9_]{2,40}|"
|
|
rb"[A-Za-z0-9_]{0,15}(?:calling_code|CallingCode|country_code|CountryCode|countryList)[A-Za-z0-9_]{0,20}",
|
|
data):
|
|
s = m.decode("ascii", "ignore")
|
|
if s not in seen and len(s) > 6:
|
|
seen.add(s)
|
|
print(" ", s)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|