【发布时间】:2018-02-28 10:49:35
【问题描述】:
我有一个应用程序,我通过故意抛出 RuntimeException 在某个时间点崩溃。结果是应用程序崩溃,所有可见的活动痕迹都消失了,并且向用户显示了一个弹出对话框:
应用已停止
[X] 关闭应用
到目前为止一切顺利,这一切都在意料之中。
但是,我能够通过在崩溃之前和之后调用adb shell ps | grep <packageName> 观察到我的进程实际上幸免于这次崩溃。 (只有在用户点击“关闭应用程序”时,该进程才会被终止。)
- 这个过程保持活力的含义是什么?这个过程处于什么状态?它需要哪些资源,哪些信息仍保留在内存中?
PS。我知道在进程不存活的情况下强制应用终止的不同可能性(例如System.exit() 或 android.os.Process.killProcess())但这不是问题 - 我真的更感兴趣的是为什么进程在应用崩溃中幸存下来。
背景我的问题是 应用程序强化 和 root/tamper/debugger 检测。在其中一些情况下,从安全/强化的角度来看(即使潜在攻击者更难进行逆向工程),可能需要尽可能快且干净地杀死应用程序。我完全清楚 Android 并非旨在为应用程序提供这种控制,您通常不应该尝试终止应用程序。
【问题讨论】:
标签: android security process hardening