dodal-omkar/no-exit-please_Frida_Script_Android
GitHub: dodal-omkar/no-exit-please_Frida_Script_Android
一个通用的 Android Frida 脚本,通过在 Java 和 native 层拦截所有进程退出路径来阻止应用自我终止,从而绕过依赖退出机制的安全防护。
Stars: 10 | Forks: 4
# no-exit-please (Android) 🛑
一个通用的 Frida 脚本,用于**绕过应用程序的自我终止**
涵盖 Android 上的 Java 和 native 层面。
这可以有效绕过**基于终止的安全机制**,
这些机制通常用于 root 检测、模拟器检测、篡改检测
和插桩检测。
专为 Android 应用程序的**渗透测试、道德黑客攻击、逆向工程
和安全研究**而设计,这些应用程序在触发防御检测时
会故意自行关闭。
## 问题所在
在测试 Android 应用程序时,同样的模式反复出现:
Root / 篡改检测 → 警告屏幕 → 应用程序退出。
从开发者的角度来看,这是一种防御性控制。
从渗透测试人员的角度来看,这是一个**脆弱的强制执行机制**。
在许多实际应用中,检测逻辑很浅显——但其响应
却很激进:*终止进程*。
每一个新的测试目标都意味着要重写相同的 Frida hook,
仅仅是为了让进程保持存活足够长的时间,
以便分析实际发生了什么。
这引发了一个简单的想法:
**如果应用程序无法退出,保护就会失败。**
## 此脚本的功能
`no-exit-please` **绕过依赖强制应用程序终止的**
安全机制作为其最终执行步骤。
它**不会**隐藏 root、修补检查或中和检测逻辑。
相反,它通过阻止
应用程序自行终止来**绕过这些检查的影响**。
检测可能仍会触发——但它不再能达到其目的。
**应用程序继续运行。**
## 为什么这有效
许多 Android 安全实现假设:
该假设是错误的。
通过拦截退出路径:
- root 和模拟器检测失去了强制执行能力
- 插桩保持活动状态
- 应用程序即使在恶劣环境中也能保持可用
这将攻击面从绕过数十个单独的
检查转移到了一个单一、可靠的结果上:
**受保护应用程序上的正常应用程序行为。**
这不是理论上的——它之所以有效,是因为开发者依赖终止
作为安全保障。
## 实际运行
下面的截图显示了 `no-exit-please` 阻止了来自在
root 环境中运行的应用程序的重复 native
终止尝试(`_exit(-1)`)。
尽管有持续的退出调用,进程仍然保持存活,应用程序也
继续运行。
## 功能特性
- **绕过 Java 层面的终止路径**
- `System.exit()`
- `Runtime.exit()`
- `android.os.Process.killProcess()`
- `android.os.Process.sendSignal()`
- `Activity.finish()` / `finishAffinity()`
- **绕过通过 `libc` 进行的 native 终止**
- `exit`
- `_exit`
- `abort`
- `kill`
- **执行跟踪**
- 在尝试退出时记录 Java 堆栈跟踪,以识别
确切的检测逻辑和调用点
## 用法
### 启动并 hook(推荐)
```
frida -U -f com.target.app -l no_exit_please.js
```
### 或者附加到正在运行的进程:
```
frida -U -N com.target.app -l no_exit_please.js
```
标签:Android, Docker支持, DSL, Frida, JS文件枚举, 云资产清单, 数据可视化, 目录枚举, 移动安全, 自定义脚本, 逆向工程, 防退出绕过