Android逆向之旅---Android中锁屏密码算法解析以及破解方案

               

一、前言

最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机恶意样本。现在的锁机样本原理强制性太过于复杂,没意义。所以本文就先来介绍一下Android中的锁屏密码算法原理。


二、锁屏密码方式

我们知道Android中现结单支持的锁屏密码主要有两种:

一种是手势密码,也就是我们常见的九宫格密码图

一种是输入密码,这个也分为PIN密码和复杂字符密码,而PIN密码就是四位的数字密码比较简单。

当然现在也有一个高级的指纹密码,这个不是本文研究的范围了。我们只看手势密码和输入密码算法解析。


三、密码算法分析

我们如何找到突破口,其实很简单,在设置锁屏密码界面,用工具分析获取当前的View类,然后一步一步跟入,最终回到了一个锁屏密码工具类:LockPatternUtils.java,因为每个版本可能实现逻辑不一样,这里我用5.1的源码进行分析了,找到这个类之后,直接分析即可。

第一、输入密码算法分析

首先我们来分析一下输入密码算法分析:


这里看到有一个方法:passwordToHash方法,参数为用户输入的密码和当前用户对应的id,一般设备不会有多个用户,所以这里一般userId默认值就是0,下面就是最为核心的加密算法了:原文密码+设备的salt值,然后分别MD5和SHA-1操作,转化成hex值再次拼接就是最终保存到本地的加密密码了。而这里现在最重要的是如何获取设备对应的salt值了,这个可以一步一步跟踪代码:


查看getSalt方法,他首先会根据字段key为:lockscreen.password_salt,进行从一个地方获取salt值,如果发现这个值为0,就随机生成一个,然后将其保存到那个地方去,最后会将salt转化成hex值即可。现在需要找到这个地方,继续跟踪代码:


这里猜想应该是保存到一个数据库中了,继续跟踪代码:


这里是通过SM中获取一个服务来进行操作了,之前我们已经把SM都玩烂了,像这种获取服务,最终实现逻辑都是在XXXService类中,所以这里应该是LockSettingsService.java类中,找到这个类,查看他的getLong方法:

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值