Android某钉数据库的解密分析


声明

|---|-------------------------------------------------------------------------|
| 1 | 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! |

目的

|---|---------------------------|
| 1 | 解密app数据库,用数据库软件打开查看信息内容 |

入手分析

|---|-------------------------------------------------------------------------------------|
| 1 | 通过对国内一些聊天记录信息存储的研究,现在基本都是SQLIte3或者带加密功能SQLCipher库,还是某信的wxdb库基于SQLCipher或者SQLIte3。 |

分析过程

|---|----------------------------------------------------------------|
| 1 | 1``:有了以上的基础,可以在jadx或者jeb工具搜索相关数据库,通过分析用"SQLiteDatabase"搜到相关的 |

在类"com.alibaba.sqlcrypto.sqlite.SQLiteDatabase"跟踪到需要的方法

"openOrCreateDatabase",通过分析openOrCreateDatabase方法最终会走到

类SQLiteConnection的open方法,在open方法中调用了native方法nativeOpen;通过用对注册方法进行hook RegisterNatives方法发现在database_sqlcrypto文件中注册对应的方法。

2:通过以上分析database_sqlcrypto就有可能对数据库加密解密的操作的文件,用ida打开搜到相关的sqlite或者sqlcipher相关的内容,在库里面能发现数据库的一些痕迹。具体可以在参考一些文档:
Android QQ NT 版数据库解密 | yllhwa's blog
[原创]某聊天工具消息记录数据库文件解密逆向分析-软件逆向-看雪-安全社区|安全招聘|kanxue.com

在这个so文件中,能发现

sqlite3_log(21LL, "%s at line %d of [%.10s]", "misuse", 84914LL, "bbd85d235f7037c6a033a9690534391ffeacecc8");这样的log,这个"bbd85d235f7037c6a033a9690534391ffeacecc8"标签是sqlcipher 4.5.1版本标签,推测某钉就是基于这版本修改。你可以下载对应版本源码参看来看这个so文件。

3:通过上面不断的分析,发现某钉的解密稍微跟某q,微稍微有点不一样,对数据的解密算法它单独拎出来了,在分析过程中发现有取现象,加解密函数名字没有抹掉,难道故意放水?发现aes_encrypt_key128,aes_decrypt_key128,aes_encrypt,aes_decrypt函数,对这些进行hook或下断点。在对aes_decrypt分析发现就是aes算法,算法分析对应aes 128,196,256加密的方式,就是128字节对应4*4矩阵加密,具体怎么操作自己baidu,发现加密方式采用了128,也就是10轮计算,

从图上可以看出就是v4是怎么生成的,不要弯子了密钥生成时用过aes_decrypt_key128函数生成,是根据传入的32字节的前面16字节生成轮密钥。至于加密过程应该应该差不多(有兴趣可以研究下)。dump出来轮密钥也能看出来十轮

4:现在就是算法还原了

贴了关键部分

5:现在还有一个问题就是java参数是怎么生成的,具体是过程就省了,自己往回跟踪就可以搞定,具体放在xml文件com.alibaba.android.rimet_preferences字段dt_bee_db_phone_*下面的值进行md5得到得到32位值

尾声

|-----|----------------------------------------------------------|
| 1 2 | 是看到Android版本解密没有对应分析,就弄下贴,方便大家交流!!!! ``不太喜欢写东西,凑合看吧 |

相关推荐
studyForMokey8 分钟前
【Android学习】Adapter中使用Context
android·学习·kotlin
我自是年少韶华倾负15 分钟前
Mysql数据实时同步到Es上
数据库·mysql·elasticsearch
长安不及十里32 分钟前
Spring Security 搭建一套基于 JWT 的 OAuth 2.0 架构
数据库·spring·架构
~小安同学44 分钟前
Redis下载与安装
数据库
diygwcom1 小时前
php有两个数组map比较 通过id关联,number可能数量变化 比较他们之间增加修改删除
android·开发语言·php
不惑_1 小时前
数字化转型 · OCR 技术如何打破效率瓶颈?
数据库·ocr
高铭杰1 小时前
Postgresql源码(139)vim直接修改postgresql表文件的简单实例
数据库·postgresql·vim
LabVIEW开发1 小时前
LabVIEW项目如何选择数据库
数据库·labview
Run Out Of Brain2 小时前
Windows平台下如何手动安装MYSQL
数据库·mysql
yuanbenshidiaos2 小时前
MYsql--------ubantu中安装mysql
android·mysql·adb