记有度app数据库解密过程
记有度app数据库解密过程
有度app的聊天记录存储在/data/im.xinda.youdu/files/youdu/db/buin_14104680_user_100022
位置
用jadx-gui打开apk文件,直接搜索数据库名message.Db
定位加密函数位置
往下翻可以看到加密逻辑
追踪一下各个函数的作用
1 | im.xinda.youdu.lib.a.b.a() |
这个函数就是对内部拼接的字符串计算sha-1
的hash值,说明数据库的解密密钥就是这串hash值
1 | BuildConfig.FLAVOR |
追踪其声明发现其值为空
1 | im.xinda.youdu.lib.utils.a.b(im.xinda.youdu.a.g.b.h()).hashCode() |
该函数就是得到设备的deviceId
并计算其hash值
用filelocater
找一下存储的devideId
的值
写个简单的java代码计算其哈希码
下面可以看到加密函数的用例,以得到传入的i
和j
的值
1 | a(int i, long j) |
可以看到i
传入的是”buin”的值和j
传入的是”gid”的值
用filelocator查找一下这两个值
得到
1 | "gid":100022,"buin":14104680 |
最后拼接得到字符串:
1 | 197299081914104680601216000547603300100022 |
最后计算其sha-1值就得到了数据库密钥
1 | 6d2ac6f687955b27373cdeb422b4737d1f7b7c92 |
解密数据库成功
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 饰光!