Android某钉数据库的解密分析

server/2024/10/20 8:48:50/

声明

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版本解密没有对应分析,就弄下贴,方便大家交流!!!!

                    不太喜欢写东西,凑合看吧


http://www.ppmy.cn/server/18181.html

相关文章

Three.js——基础材质、深度材质、法向材质、面材质、朗伯材质、Phong材质、着色器材质、直线和虚线、联合材质

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

基于Kubernetes集群1.27.3构建ElasticSearch-7集群

基于Kubernetes集群构建ES集群 作者:行癫(盗版必究) 一:环境准备 1.Kubernetes集群环境 节点地址Kubernetes-Master10.9.12.206Kubernetes-Node-110.9.12.205Kubernetes-Node-210.9.12.204Kubernetes-Node-310.9.12.203DNS服务器10.9.12.210代理服务器10.9.12.209NFS存储1…

数仓建模—维度建模之维度表

数仓建模—维度建模之维度表 维度表(Dimension Table)是数据仓库中描述业务过程中各种维度信息的表,用于提供上下文和描述性信息,以丰富事实数据的分析 维度表是维度建模的灵魂所在,在维度表设计中碰到的问题(比如维度变化、维度层次、维度一致性、维度整合和拆分等)都…

AD--SSL卸载--单向认证和双向认证

一.SSL卸载单向认证 1.添加SSL证书 2.添加SSL卸载策略 由于是测试模拟环境,有些效果表现不出来,配置不了卸载策略 3.起虚拟服务,服务类型选择https或者ssl ,选择SSL卸载策略 实验效果:打开网页进入AD抓包发现,客户端和…

zabbix图形乱码解决方案

zabbix使用中文后,图形那里乱码,因为没有中文包,需要安装中文包并且应用 1.安装中文包 yum install -y wqy-microhei-fonts 2.修改配置 /usr/share/zabbix/include/defines.inc.php 修改为 define(ZBX_GRAPH_FONT_NAME, wqy-microhei); 3…

python使用selenium如何获取一个div下所有的文本

在Python中使用Selenium获取一个<div>元素下所有的文本可以通过多种方式实现。一种简单的方法是首先获取<div>元素&#xff0c;然后使用text属性来获取其内部的文本内容。但这种方法可能不会获取到<div>元素内嵌套的其他标签&#xff08;如<span>、<…

无人机干扰技术及干扰设备突破性发展

无人机干扰技术主要指的是通过各种手段干扰无人机的正常运行&#xff0c;从而达到使其失去控制、降低其性能或获取其信息的目的。这些干扰手段可以包括无线电干扰、GPS干扰、信号屏蔽、光学干扰等。 1.无线电干扰&#xff1a;由于无人机在遥控、定位、数据传输等方面都依赖于无…

可能内存溢出的高级排序算法-归并排序

归并排序 归并排序在经典递归实现中需要的额外空间相对较多。这是因为在归并排序的过程中&#xff0c;需要与原始数组大小相同的额外空间来存储临时合并的数组。所以&#xff0c;其空间复杂度为O(n)&#xff0c;其中n表示待排序数组的长度。在递归过程中&#xff0c;需要创建临…