利用ADB Root权限破解锁屏密码(原)手机密码破解「利用ADB Root权限破解锁屏密码(原)」
本文主要介绍Android ENG版本以及Root授权过ADB进程的手机解锁方法。
1、手机是ENG版本。
2、手机被ROOT,并且ADB可以直接升级为ROOT用户。
第一种情况一般出现在某些工程机中,而第二种情况往往是手机被Root后再连接电脑并使用ADB后会出现。
下面我们先说破解方法,然后再分析具体原理。具体步骤:1、手机连接电脑,使用adb shell命令进入ADB环境:
如果成功,将会出现以下提示:
3、进入data/system目录:
上锁的手机可以看到该目录下有password.key(锁屏是密码解锁)或者gesture.key(锁屏是图案解锁)文件。
5、用rm命令删除密码文件:
6、随便输入密码即可完成解锁:
而我们要做的破解动作,就是找到这些密码文件,然后强制删除,这样一来,系统就会误认为当前不需要密码,从而绕过解锁的步骤。
因此找到这些包含密码的文件将是本文的重心。
我们从一次正常的解锁步骤来查找密码管理者究竟是谁。我们假如用户使用的是图案锁,那么解锁的动作一般是通过锁屏界面完成的。锁屏界面显示解锁图案的布局是KeyguardPatternView,在该Layout上的 图案解锁控件是LockPatternView,他在onFinishInflate中被初始化:
在上面的控件初始化过程中,注册了监听器,当用户在图案上滑动时,就会触发该监听器: 我们可以看到,通过 mLockPatternUtils的checkPattern方法进行密码匹配,我们继续往下分析:
这里通过getLockSettings获取mLockSettingsService服务,然后向该服务查询密码真伪。这个mLockSettingsService服务就是lock_settings:
通过上面看到,LockPatternUtils是密码管理的接口,其他应用可以通过该对象实现密码的设置、解锁操作,而该类将会把这些操作申请传递给真正的密码管理者,也就是Name为"lock_settings"的Service,那么这个Service的实体是什么呢?
上面分析到,密码的校对是通过一个Name为"lock_settings"的Service来实现的,那么该Service是什么呢?这个Service其实就是LockSettingsService对象,他在SystemServer.java中当系统启动时被创建和初始化,他负责密码的最终保管与核实。
我们先来看一下这个Service的初始化流程:
我们来看一下该Service的创建过程,也就是构造方法:
在这个构造方法中,完成了一些简单的初始化流程,主要是初始化Database和LockPatternUtils,并注册了用户账户的监听器。那么当用户设置密码时是怎样的处理呢?
上锁过程将会调用到LockSettingsService的setLockPattern(图案锁)或者setLockPassword(密码锁)接口,我们分别来看:
2.3.1、图案锁的上锁过程
上面主要做了三个操作:1、权限检查,必须具备"android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"权限。
2、将密码转换为hash。
3、将密码写入密码文件。
我们先来看转换密码过程。 在这个过程中可以看到,对图案锁的密码进行SHA-1进行加密。然后来看写入操作:
这里写入的文件路径为getLockPatternFilename():
从这里可以看到图案锁的密码文件就保存在data/system/gesture.key中。
2.3.2、密码锁的上锁过程
密码锁的上锁过程与图案锁几乎完全一样,不同之处在于密码的hash转换和密码锁文件的名字。我们先来看一下密码锁的hash转换过程:
这里我们发现,密码锁的加密强度更大, 对密码进行SHA-1、MD5同时加密,并添加了UID的随机因素。
然后看密码锁文件的保存位置:
从这里看出,密码锁文件保存在data/system/password.key里面,他与图案锁的区别在于,一个是gesture.key文件,另一个是password.key文件。
前面介绍了密码的上锁过程,其实就是进行加密后保存在system下的不同文件里面,而解锁过程就是根据用户输入进行相同加密运算,然后与加密文件中的内容进行匹配,如果匹配成功就认为解锁成功,否则就是解锁失败。
2.4.1、图案锁解锁过程
图案解锁过程是在checkPattern中完成的:从这里看到,如果文件不存在,或者文件读取出现异常,系统就会返回true,也就是解锁成功,这也是我们本文使用的破解思路。
2.4.2、密码锁解锁过程
密码解锁过程是在checkPassword中完成的:从上面过程来看,其与图案解锁的流程是相同的,也会在密码文件出现异常时直接解锁。
本文仅仅分析了Root后使用ADB的SU权限破解锁屏密码的使用,其实手机被Root后可以做许多类似的事情,比如后台读取联系人记录、发送短信等,并且所有这些操作都可能在用户不知道的情况下,甚至当某个进程伪装成Radio发短信后,用户在短信应用中连发送的记录都看不到!因此对于普通用户,一定要慎重Root,更要慎重的对应用进行Root授权操作。
浙江版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com