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)`)。 尽管有持续的退出调用,进程仍然保持存活,应用程序也 继续运行。 image ## 功能特性 - **绕过 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文件枚举, 云资产清单, 数据可视化, 目录枚举, 移动安全, 自定义脚本, 逆向工程, 防退出绕过