记一次android app sqlite 数据库密码获取及导出sqlcipher加密的数据

查看 135|回复 10
作者:wintop   
软件就不提了,涉及商业信息。本人初级菜鸟,教程可能有些地方说的不对,大佬手下留情!
突破很坎坷,省去了一些因为设备问题的步骤(建议直接上模拟器,不要真机调试)。
环境:
雷电模拟器3.122  root+xposed+buildprop Enhancer(用于全局 debuggable 修改,否则软件无法调试)
MT管理器
jeb3 beta
DBBrowserForSQLite_V3.12.2
某APP,下面称MAPP
软件基本情况
用MT管理器查看无加固,签名V1+V2。
AndroidManifest.xml 中的 android:debuggable="false" ,改成true 签名后软件无法正常运行,点关键服务会直接闪退。
说明有反调试。查阅资料,在 .so文件鼓捣了几个小时,未发现有用的地方(IDA 太太菜)。
突破过程
XPOSED 装 buildprop Enhancer 全局修改 debuggable =1
验证方式:进终端,输入su 回车,然后 输入 getprop ,如果 ro.debuggable=1 则开启成功。
然后就是MT分析代码,发现[Asm] 纯文本查看 复制代码.method public static isDebug(Context)Z
修改函数结果返回值 为 false,然后,调试正常。
接下来就是找sqlite 数据库相关信息,查找到 [Asm] 纯文本查看 复制代码SQLiteDatabase.openDatabase(v0_2, v1, v3, v2);
下断点,jeb的变量监控比较菜,监控的变量默认都是int数据类型,需要手工修改为string 类型,分析出 v1为数据库密码,但是遗憾的是,用navicte for sqlite 无法打开。
百度了一些sqlite 管理工具也是无果,浪费了整整半天时间,以为断点位置错了。
后来发现资料提示:sqlcipher 版本必须一致才能解密。于是mt中找到 public static final String SQLCIPHER_ANDROID_VERSION = "4.2.0";
皇天不负有心人,终于找到可以打开数据库的软件,DBBrowserForSQLite_V3.12.2(DB Browser for SQLCipher)。
暂时记录这些,因为数据库密码是通过RSA加密回传,且又跟ID一些参数有关,现在处理数据库只能调试获取,希望下一步能分析出算法来,直接打开数据库。
今天更新,回来花了6个小时搞定了加密方式(用了3中加密方式,包含RSA),已经可以通过自动化程序代替手工点击生成数据。

数据库, 软件

hackerbob   

楼主,我建议配上图片,以及分析思路和流程,不然都看不懂你在说什么。。。。。。。。
tencentma   


hackerbob 发表于 2022-7-16 18:40
楼主,我建议配上图片,以及分析思路和流程,不然都看不懂你在说什么。。。。。。。。

赞同,步骤在清晰点会更好,看起来也逻辑清晰
as4201   

给新人赞一个
测试学学   

虽然看不懂  但是还是要给你赞一下
CCQc   

感谢分享
EchoChao   

建议贴图片
江南云   

非常期待大神继续分析出算法来,直接打开数据库,功能更完善。感谢辛苦分享!
fscc无误   

感谢分享
感谢分享
lws0318   

新人来学习,谢分享
您需要登录后才可以回帖 登录 | 立即注册

返回顶部