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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/650599.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教育装备展火热开幕,锐捷网络用科技力量点亮教育未来之光

了解教育装备行业发展新趋势、感受教育装备领域创新脉动。4月19日,一场汇聚智慧与创新的教育行业盛会——第 83 届中国教育装备展示会在山城重庆隆重启幕。位于N4013号的锐捷网络展位不仅汇聚了极简以太全光3.X、三擎云桌面2.X、极简教育城域网等前沿科技方案,更通过样机展示、…

Python | Leetcode Python题解之第49题字母异位词分组

题目: 题解: class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:mp collections.defaultdict(list)for st in strs:counts [0] * 26for ch in st:counts[ord(ch) - ord("a")] 1# 需要将 list 转换成 tuple …

Springboot多数据源及事务实现方案

Springboot多数据源及事务实现方案 文章目录 Springboot多数据源及事务实现方案背景问题分析实现原理1. 数据源抽象与动态路由2. 线程本地存储(ThreadLocal)3. 面向切面编程(AOP)4. 自定义注解 实现流程1. 设置数据源标识2. 开始数…

Django框架之python后端框架介绍

一、网络框架及MVC、MTV模型 1、网络框架 网络框架(Web framework)是一种软件框架,用于帮助开发人员构建Web应用程序和Web服务。它提供了一系列预先编写好的代码和工具,以简化开发过程并提高开发效率。网络框架通常包括以下功能…

关于java对接微信公众号(对接百度AI实现图片文字识别,对接聚合数据实现笑话、谜语大全,成语接龙等功能)

前言: 只是自己学习使用,所以有点不规范,请见谅 本文直接附上源码与效果图,具体操作步骤请参考另一篇文章:http://t.csdnimg.cn/PQu25 1.运行效果图 1.1 关注事件 1.2 笑话大全 1.3 谜语大全 1.3 多级菜单 1.4 按钮…

C++ 提高编程

1. 模板 1.1 模板的概念 1.2 函数模板 1.C另一种编程思想称为 泛型编程,主要利用的技术就是模板 2.C提供两种模板机制: 函数模板 和 类模板 1.2.1 函数模板语法 函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不…

【牛客网】:链表的回文结构(提升)

🎁个人主页:我们的五年 🔍系列专栏:每日一练 🌷追光的人,终会万丈光芒 目录 🏝问题描述: 🏝问题分析: 步骤一:查找链表的中间节点 步骤二&am…

微信小程序 讯飞录音 点击按钮录音内容转文字

<page-meta page-style"{{ showPolish ? overflow: hidden; : }}" /> <view class"wrap"> <view class"header-tab" style"justify-content: {{typeList.length > 2 ? start : center}}"><view class&quo…

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音&#xff0c;英语简写是 tts) 包括接收 app 中需要语音合成的文本&#xff0c;再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis&#xff0c;外加一些处理如何表示要被合成的文本 (也被称为 utte…

MySql 主从同步-在原来同步基础上增加历史数据库

在MySql已经主从同步的后&#xff0c;由于有新的需求再增加1个历史数据库&#xff0c;要改原来的1个变成现在的2个数据库。在官网并没有找到类似的场景&#xff08;官方同步多个数据是从一开始就设置&#xff0c;不是后续增加的&#xff09;&#xff0c;只能结合以往的经验自己…

Weblogic一个domain建多个server(端口)

一、基本环境 名称IP端口说明AdminServer192.168.20.207001管理服务WRServer192.168.20.207001提供应用服务 1、启动weblogic服务 二、操作步骤 在weblogic控制台。环境-服务器-新建 填写服务器名称-监听地址-监听端口-点击完成 2、按照web应用 3、启动服务 /home/weblogic/…

(二十九)加油站:面向对象重难点深入讲解【重点是元类】

目录&#xff1a; 每篇前言&#xff1a;0. Python中的元类&#xff1a;1. 本文引子&#xff1a;2. Python中的mro机制&#xff1a;3. Python中类的魔法属性dict&#xff1a;注意事项&#xff1a; 拓展——内建函数dir() 4. 正式谈一谈元类&#xff08;metaclass&#xff09;:&a…