返回介绍

26.2 获取密码

发布于 2024-10-10 22:32:24 字数 2912 浏览 0 评论 0 收藏 0

1.获取锁屏密码

因为我们知道现在大多数锁机软件都是利用设备管理器来修改设备密码的,所以想查看他的密码可直接用 Jadx 打开软件,然后全局搜索类 DeviceAdminReceiver,如图 26-4 所示。

图 26-4 用 Jadx 打开软件

看看这个类里面修改代码部分逻辑:

可以看到,这里直接将手机的锁机密码修改成 9815 了,这就是我们后面需要解锁的密码。

2.获取浮窗锁机密码

获取这个密码有点麻烦,因为是自定义的浮窗锁机,所以直接看到锁机界面文字,去 Jadx 全局搜索即可,这里全局搜索字符串“输入密码”,如图 26-5 所示。

图 26-5 全局搜索字符串“输入密码”

进入下面这个类即可:

这里定义了一个 Service,然后用 WindowManager 实现,再把权限设置为最高,用户就无法进行任何操作了。因为最终的密码输入都是在 EditText,取密码作比较也要用到这个文本框,看这里的 this.ed 在哪里取值:

这里直接比对密码,如果密码正确了,就直接去掉服务,浮窗锁机就没有了。所以这里最重要的是 decrypt 方法,它是从 SP 中拿到 key 为 passw 的密文进行解密比对。其实这里我们可以借助 Xposed 工具直接 hook 这个 decrypt 方法,就能很轻易获取密码了:

然后直接运行就可以获取对应的密码了:

不过这里还想继续分析这个 DES 的加密逻辑,因为目的就是要学习的,所以我们继续手动分析这个加密算法,我们看看 des 变量定义:

这里会看到有一个 du 和 du2 变量,不要在意,可能是代码混淆原因,其实就是一个值。看到初始化传入一个字符串值,可能是 DES 加密的 key 值,然后立即对一个密文进行解密,之后的内容再作为新的 DES 的密钥值,相当于这里二次获取密钥了。看一下 DU 代码实现:

传入的字符串就是作为 key 进行加解密操作的,那么下面我们就需要手动写一个简单的 DES 加解密算法:

第一次初始化密钥是字符串"flower",然后直接解密内容"c29fe56fa59ab0db":

获取第二次要用到的密钥"xxx",然后再初始化以下 key:

我们需要去程序的 XML 中找到加密内容,再拷贝出来进行解密:

把这个串拷贝出来进行解密:

这就是解锁密码了,我们回过头看看是怎么把这个加密串存到 XML 中的:

这里生成密码竟然采用的是随机值,然后再加上 123456,最后进行 DES 加密保存到 XML 中,同时也把随机数保存到 XML 中。从上面可以看到值是:

这个值加上 123456 就是密码了:92944926+123456=93068382,这也是上面我们解密之后的密码。如果“小白”用户加他 QQ 索要密码,其实他是需要让小白用户做点东西,因为这个密码是随机的,不是固定值,所以“小白”用户需要把程序的 XML 文件给他,不然他也不知道解锁密码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文