记有度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 许可协议。转载请注明来自 饰光!
