Files
notiMessage/docs/TNG_自杀链逆向笔记.md
mars 13e407623b feat(tng): TNG eWallet Promon bypass、Zygisk 信号守卫与注册链保护
新增 TngRootBypassHook 与 tng_exit_guard 模块,修复 BAL 强拉、SIGABRT/pc==lr SEGV 崩溃,验证可进入注册页。
2026-07-31 17:55:13 +08:00

86 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:16Report 打 Exiting
→ 同时/随后 inline kill(SIGABRT, SI_USER)
→ KillApplicationHandlerXposed 可拦)
→ 若 ABRT 被 ignore可能改 SIGKILL / BRK待证
```
并行:
- `AppSecurityManager.handle*Callback`Xposed 已拦)
- `openSecurityUrl` Root 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/#b` **beforeHook short-circuit**(避免跑进 native 杀进程)
- ZygiskPLT 观察 + `SIGABRT` ignore对 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 stubopenat/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:3711: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 ignoreSEGV/ILL **+4 skip****不** freeze 线程freeze 会 ANR |
| Xposed | Splash `reportFullyDrawn` + **2.5s 强拉 UserLogin** + finish Splashbl SC / 自杀 Java / JNIC stub |
实测:进程 **≥40s** 存活,焦点 `UserLoginActivity``phase done seccomp=1 caught=0`
注意:点亮屏幕后再开 App`svc power stayon true`);勿把 TNG 放进 Magisk DenyList。