3.6 KiB
3.6 KiB
TNG eWallet 逆向笔记 — 自杀链(2026-07-31)
运行时铁证
| 现象 | 含义 |
|---|---|
Fatal signal 6 (SIGABRT), code 0 (SI_USER) |
用户态 kill(pid, SIGABRT),不是 exit_group,也不是 abort() 的 SI_TKILL |
PLT hook kill/raise 从不打日志 |
Promon 走 内联 SVC,不经 PLT |
E Report : Exiting: + xwwqazamx.W: 16 + bl.a |
Java 层检测入口仍是 xwwqazamx.bl#a/#b |
Displayed ...UserLoginActivity |
UI 能到登录页;随后数秒内被杀 |
Lcom/aliyun/TigerTally/t/B 反射 Thread.dispatchUncaughtException |
另有一套阿里 TigerTally SDK |
自杀阶梯(当前理解)
Promon native 检测 (Thread-N 扫 /proc、selinux、wifi prop…)
→ xwwqazamx.bl#a / #b
→ 抛 W:16(Report 打 Exiting)
→ 同时/随后 inline kill(SIGABRT, SI_USER)
→ KillApplicationHandler(Xposed 可拦)
→ 若 ABRT 被 ignore:可能改 SIGKILL / BRK(待证)
并行:
AppSecurityManager.handle*Callback(Xposed 已拦)openSecurityUrlRoot FAQ(已拦)UnhandledEvent→finishAllActivityAndKillApp(已 hook)- ForceExitCountdown(已 hook)
- TigerTally / SecurityGuard
JNICLibrary.doCommand(当前 stub,可能过度)
静态 SO
libtngdigital_ewallet.so(~7.7MB,打包态):
brk假阳性/加密指令很多(imm 离散)- 真实
svc #0极少;运行时解密后才出现 exit 序列 - 禁止在
JNI_OnLoad前/中 patch SO(会 Bad JNI / SIGILL)
已验证无效/有害手段
- seccomp 拦
exit_group→ Promon 改 UDF/SIGILL - 改 libc exit SVC→RET → 同上
- 改 Promon SO 字节 → Bad JNI / SIGILL
- 高频
sigaction重装 → 易被当成 hook 指纹
较有效手段
- Xposed:拦 FAQ / KillApplicationHandler / handle*Callback / ForceExit / UnhandledEvent
- Xposed:
bl#a/#bbeforeHook short-circuit(避免跑进 native 杀进程) - Zygisk:PLT 观察 +
SIGABRTignore(对 SI_USER 理论有效;Promon 可能复位 handler)
新发现(2026-07-31 续)
libtiger_tally.so(~4.6MB)
- 与 Promon
libtngdigital_ewallet.so并行加载 - 动态依赖:
abort@LIBC、signal@LIBC(走 PLT,可被 Zygisk PLT hook) - 内嵌少量 syscall stub(openat/read/faccessat…),无 kill/exit stub
BIND_NOW
打包态 SO
libtngdigital_ewallet.so/libtiger_tally.so静态 0 处movz x8,#129 + svc- 自杀用的 inline
kill仍可能在 运行时解密 后出现 → Zygisk 延迟 2s 扫描 patch
日志结论(2026-07-31 11:37–11:47)
| 现象 | 含义 |
|---|---|
exited cleanly (1) |
inline exit_group(1)(PLT 拦不住) |
kill SVC→RET 后 signal 9 |
SO 完整性/备用路径 → SIGKILL |
| 过早 patch exit_group | 启动即崩(CEM) |
seccomp 拦 exit+exit_group |
~1s 死(误伤线程 exit) |
| seccomp 只拦 exit_group | 存活 ~16s,随后 SIGILL 风暴(count 7000+) |
caught sig=4 si_code=1 |
Promon UDF 兜底;+4 skip 无效 |
Rest 配置(2026-07-31 12:55,已装机)
| 层 | 策略 |
|---|---|
| Zygisk | PLT 拦 exit/abort/kill;exit_group-only seccomp @2s;禁止改 SO(会 SIGKILL) |
| 信号 | ABRT ignore;SEGV/ILL +4 skip;不 freeze 线程(freeze 会 ANR) |
| Xposed | Splash reportFullyDrawn + 2.5s 强拉 UserLogin + finish Splash;bl SC / 自杀 Java / JNIC stub |
实测:进程 ≥40s 存活,焦点 UserLoginActivity;phase done seccomp=1 caught=0。
注意:点亮屏幕后再开 App(svc power stayon true);勿把 TNG 放进 Magisk DenyList。