当前位置: 首页 > 科技观察

Google是否在7.1+中添加了一段让您感觉更安全的代码?

时间:2023-03-14 00:54:57 科技观察

1.前言虽然看了这篇文章,小伙伴们还是知道如何在Android下防范一些流氓软件的。然而,大多数安卓用户并没有这种防范意识。基本上每隔一段时间,Android就会出现一些恶意软件事件,给用户造成损失。据我所知,有一些恶意软件会尝试获取Root权限,然后劫持用户的屏幕,使用户无法离开它设置的界面。当用户不能自由操作自己的手机屏幕时,一些补救措施就无法进行。在最近的Android7.1Nougat中,悄悄加入了一个与安全相关的新功能,叫做“PanicDetection”,翻译过来就是“紧急检测”。它的主要功能是持续监听用户的多个后退按钮事件。当触发某个临界值时,用户直接返回主界面。这样的功能其实系统做的时候更容易理解。当你的屏幕被恶意软件劫持时,如果触发“紧急检测”功能让用户返回首页,就有机会卸载这些恶意软件。2.PanicDetectionPanicDetection应该还处于测试阶段。现在默认是关闭的,所以即使设备运行在Android7.1+环境下,也不会开启这个功能。一些关于PanicDetection的交换机配置可以在config.xml文件中找到。默认情况下,它的值为0,表示什么都不做。并且一旦设置为1,就会开启PanicDetection模式,当它被触发时,会回到主界面。首先,如果我们自己开发实现这样的功能,思路大致是一样的:我们需要一个开关配置来标记是否启用。需要设置点击多少次触发PanicDetection模式。需要设置每次点击之间的间隔。我们已经了解了交换机配置。其背后的思路其实有点像我们常见的需要点击两次才能退出app。事实上,谷歌也是这样做的。它在PhoneWindowManager.java中,它定义了单击返回键时触发“PanicDetection”的次数。PANIC_PRESS_BACK_COUNT设置点击后退按钮进入应急模式的次数。这里可以看到,配置是点击4次,就会触发。而PANIC_PRESS_BACK_NOTHING和PANIC_PRESS_BACK_HONE分别代表config.xml中配置的config_backPanicBehavior的值。不管config_backPanicBehavior是否启用,每次用户点击后退按钮,实际上都会被检查。开机时,首先系统会拦截KEYCODE_BACK事件的按下,判断是多次按下还是长按,然后判断是触发PanicDetection模式还是向上传递事件给应用程序。对此的处理是在PhoneWindowManager.interceptKeyBeforeQueueing()中完成的。可以看到,当按下KEYCODE_BACK时,会调用interceptBackKeyDown()来处理。在interceptBackKeyDown()方法中,会有一个点击次数的统计,用于比较当前点击Back键的次数和PANIC_PRESS_BACK_COUNT配置的次数。一旦未达到配置的PANIC_PRESS_BACK_COUNT数量,MSG_BACK_DELAYED_PRESS消息将被删除。而这个MSG_BACK_DELAYED_PRESS消息是在interceptBackKeyUp()中发送的,拦截了Back键的抬起。从这里可以看出,每次点击Back键,它都有一个超时时间(300ms)来检测是否是连续点击,也就是说两次点击的间隔在300ms之间,4次点击触发恐慌检测模式。300ms的值,保存在ViewConfiguration.java中。接下来我们看一下发送的MSG_BACK_DELAYED_PRESS消息的处理。最后,将调用backMultiPressAction()和finishBackKeyPress()方法。在finishBackKeyPress()中,返回按钮的计数器会被设置为0。而在BackMultiPressAction()中,它会做启动主页的操作。launchHomeFromHoyKey()其实执行的是去桌面的逻辑。无法在一张屏幕截图中捕获代码。有兴趣的可以上网查看源码。本文所有代码截图均带有行号,方便查找。在线源码地址:PhoneWindowManager:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/services/core/java/com/android/server/policy/PhoneWindowManager.javaViewConfiguration:https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewConfiguration.java3.总结虽然这是一个很小的未公开的功能,但是还是可以看出Google我们正在努力解决Android系统安全问题。不过,PanicDetection给人的感觉更像是Android系统中的镇定剂,让用户响应式操作设备并返回首页,但实际上,真正复杂的过程是如何卸载这些恶意程序。不过这个功能应该还处于测试阶段,预计它的完善会让Android更加安全。XDADevelopers开发人员@MishaalRahman于7月7日首先发现了PanicDetection的变化,现在已得到Google的确认。【本文为专栏作家“张扬”原创稿件,转载请微信♂联系作者获得授权】点此查看作者更多好文