- 对本书的赞誉
- 前言
- 基础篇
- 第 1 章 Android 中锁屏密码加密算法分析
- 第 2 章 Android 中 NDK 开发
- 第 3 章 Android 中开发与逆向常用命令总结
- 第 4 章 so 文件格式解析
- 第 5 章 AndroidManifest.xml 文件格式解析
- 第 6 章 resource.arsc 文件格式解析
- 第 7 章 dex 文件格式解析
- 防护篇
- 第 8 章 Android 应用安全防护的基本策略
- 第 9 章 Android 中常用权限分析
- 第 10 章 Android 中的 run-as 命令
- 第 11 章 Android 中的 allowBackup 属性
- 第 12 章 Android 中的签名机制
- 第 13 章 Android 应用加固原理
- 第 14 章 Android 中的 so 加固原理
- 工具篇
- 第 15 章 Android 逆向分析基础
- 第 16 章 反编译神器 apktool 和 Jadx
- 第 17 章 Hook 神器 Xposed
- 第 18 章 脱壳神器 ZjDroid
- 第 19 章 Native 层 Hook 神器 Cydia Substrate
- 操作篇
- 第 20 章 静态方式逆向应用
- 第 21 章 动态调试 smali 源码
- 第 22 章 IDA 工具调试 so 源码
- 第 23 章 逆向加固应用
- 第 24 章 逆向应用经典案例分析
- 第 25 章 Android 中常见漏洞分析
- 第 26 章 文件加密病毒 Wannacry 样本分析
26.2 获取密码
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论