【问题标题】:android mobile control安卓手机控制
【发布时间】:2012-08-14 12:03:02
【问题描述】:

我不想做广告,但我的应用程序行为的示例应用程序是 ESET 防病毒软件。

我的应用程序的一个请求功能是卸载需要密码。我将我的应用程序添加到设备管理列表中,现在无法卸载它。但是您可以将应用程序停用为管理设备。当您转到“设置”>“位置和安全”>“选择设备管理员”并尝试停用 ESET Security 时,它会启动正在等待密码并且您的手机已锁定的活动(我猜来自 DeviceAdminReceiver.onDisableRequested())。 Home 键、返回键甚至 SwitchOff 键都没有反应=>

Home、Back、SwitchOff 和 Camera 按钮怎么可能没有反应?

编辑 - 删除第二个问题 (在我从手机中取出电池后 - ESET 也不是设备管理员)

感谢您的想法。

【问题讨论】:

  • 感谢您指出 Android 中的这些安全问题。通常,您会通过向 security@android.com 发送电子邮件而不是将其发布在 StackOverflow 之类的地方来做到这一点。普通的 SDK 应用程序应该无法执行您在此处引用的操作,我将花一些时间确定这是如何发生的,以确保它得到修复。

标签: android admin device


【解决方案1】:

好的,抱歉 ESET,但这个功能看起来很有趣,所以我查看了反编译的源代码:)

基本工作流程如下:

  • com.eset.ems.antitheft.receiver.AdminReceiver 的子类 DeviceAdminReceiver 已注册用于广播动作 DEVICE_ADMIN_ENABLEDDEVICE_ADMIN_DISABLED
  • 当设备管理员被禁用时com.eset.ems.antitheft.receiver.AdminReceiver.onDisabled()被调用
  • com.eset.ems.antitheft.LockActivityAdminReceiver.onDisabled() 开始
  • LockActivity 显示 com.eset.ems.antitheft.LockingDialog 最阻塞魔法发生的地方

对于 Home 和其他按钮块防病毒软件,请执行以下技巧 - 它使用来自 Android 内部的ActivityManagerNative。为了将LockActivity 保持在所有其他活动的顶部,它启动了一个线程,该线程不断调用ActivityManagerNative.moveTaskToFront()LockActivity 任务ID。在 API 级别 10 之前,反射用于从 ActivityManager 类访问隐藏的 moveTaskToFront(),在 API 10 之后,它只使用 Android 代码库中的 ActivityManagerNative 代码来访问它。 LockActivityLockingDialog 也多次调用 ActivityManagerNative.closeSystemDialogs() 方法。这样做可能是为了取消长按电源按钮后出现的系统对话框。

至于DeviceAdminReceiver.onDisableRequested 的停止执行,其实我并没有注意到代码中有什么特别之处。它仅在禁用设备管理员后才开始活动,仅此而已。在我取出电池后,我的手机设备管理员被禁用。

【讨论】:

  • 我很高兴给你我的积分。谢谢你。 7 个月后唯一有用的答案。现在我将尝试用你的发现来实现这一点。你是怎么知道它是如何工作的?我可以稍后再询问您一些其他信息吗?
  • 感谢您提出的好问题。我使用 dex2jar (code.google.com/p/dex2jar) 工具转换从 ESET 防病毒 apk 中提取的 classes.dex 文件。它生成可以使用任何反编译器查看的常规 jar 文件(特别是我使用来自 java.decompiler.free.fr 的 JD,可能是最好的免费 Java 反编译器)。实际上就是这样,之后我有了源代码文件并且可以看到它是如何工作的。我刚刚从 logcat 中注意到,当我为 ESET 防病毒禁用设备管理员并将其作为起点时,LockActivity 正在启动。
  • @AndreiMankevich 你能看看stackoverflow.com/questions/40282857/… 并告诉我你的想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多