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:
59
reverse/scripts/_scan_country_select.py
Normal file
59
reverse/scripts/_scan_country_select.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# -*- 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()
|
||||
Reference in New Issue
Block a user