惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
G
Google Developers Blog
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
爱范儿
爱范儿
B
Blog
云风的 BLOG
云风的 BLOG
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
博客园 - 叶小钗
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
博客园_首页
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence

峰峰的小窝

正射影像拼接和AI实例分割系统设计实现 照片高斯建模实现 从零开始的自动驾驶(六)无刷电调硬件改了又改 从零开始的自动驾驶(五)整体设计|峰峰的小窝 从零开始的自动驾驶(四)无刷电调硬件修改|峰峰的小窝 从零开始的自动驾驶(三)ROS2与雷达|峰峰的小窝 从零开始的自动驾驶(二)编译开发板Linux|峰峰的小窝 从零开始的自动驾驶(一)无刷电调硬件|峰峰的小窝 搭建代理服务器跳板|峰峰的小窝 迎接新的时代|峰峰的小窝 一段故事的结束|峰峰的小窝 AI全自动写小说|峰峰的小窝 桌面直播通话APP设计实现|峰峰的小窝 2025 年总结|峰峰的小窝 SPI串并转换模块|峰峰的小窝 一种另类的数据标注方法|峰峰的小窝 GPS定位模块设计|峰峰的小窝 STM32硬件和软件设计指南|峰峰的小窝 基于Docker的多实例管理系统|峰峰的小窝 Hello PCB|峰峰的小窝 Hello ESP8266|峰峰的小窝 实时语音智能体快速搭建|峰峰的小窝 Git自动化测试部署|峰峰的小窝 Docker镜像构建和部署|峰峰的小窝 Web应用私有化|峰峰的小窝 虚幻FFMPEG解码视频|峰峰的小窝 Fish-Speech的编译优化|峰峰的小窝 阶段总结|峰峰的小窝
逆向提取软件数据库
FFeng 我能想到的,最大的成功就是无愧于自己的心。 · 2026-09-11 · via 峰峰的小窝

书接上回,我写了正射影像拼接和AI实例分割系统,但缺少数据集。

公司有人已经使用 D疆智图 做了面积测量的标注,我希望这个数据能够直接导出到我的系统。但据说这软件不支持导出。

于是我装了破解版实际测试,发现确实导不出呢

那怎么办呢?

从它的文件下手,直接自己提取出来。

确定数据库位置

简单通过在 Everything 中搜索软件名称,找到了数据存储在 C:\Users\FFeng\Documents\DJX\DXTX\default

这里为每个项目保存了一个文件夹。

通过手动标注一个多边形然后保存发现,多边形并不保存在对应文件夹中,而是应该在目录中的 mission.db 文件中。

这种文件不容置疑,是 Sqlite 数据库文件,但打不开,加密了。

以下操作全部都是聪明的 AI 所为

初步逆向

通过静态分析,发现了 SQLCipher确定了它的加密规格如下:

  • AES-256-CBC + PBKDF2-HMAC-SHA1

  • page_size = 1024

  • HMAC 关闭

至于密钥嘛,似乎是动态生成的,在负责加密的DLL中有使用 GetHardwareKeySerialNumber

WebSocket 连接尝试

尝试连接后端的 19870 端口,能够正常连接并升级 Websocket。

  • 发 null → 收到 128 字节 base64 → 96 字节 AES-GCM 加密响应

  • 发 {} / [] / JSON 命令 → server 立刻断开连接

猜测是有加密层,不可行。

Frida hook

通过运行时往软件上加钩子,试图这样获取到密钥。

此处费了很大的力气,内部生成Key很复杂。

但最终分析过后,hook OpenSSL 的 PKCS5_PBKDF2_HMAC_SHA1,拿到 Key : 7nbzvVEqDJIMGnSC@!UkS 注:后续测试发现虚拟机上也是这个Key,不清楚是不是固定的。

这大概是根据机器动态生成的 Key,不是通用的。

解密数据库

拿到 Key 了,但是在 Python 中使用 SQLCipher 无论如何也解不开。

灵机一动,直接调了原程序的 sqlite3.dll ,成功执行SQL语句读取到了数据。

我想要的面积测量标注就明文躺在 mapping_info.area_2d_measure_list

逆向小结

导出数据分两步:

  1. 动态 Hook 原程序,获得 Key。

  2. 加载sqlite3.dll ,执行SQL语句。

需要注意的是,对于其他一台机器,需要事先确定已经安装了 D疆智图 ,需要 Hook 它。

写自动导出程序

做这种事情的程序当然是 C++ 啦,但是不想用 C++,那就GO啦。

获取 Key,我采用的方法是,启动 D疆智图,然后注入一个线程加载我的一个DLL(C写的)。

DLL内部通过共享内存与我的程序通信。

DLL给 PKCS5_PBKDF2_HMAC_SHA1 开头加了断点,能将传入的参数读出来。

完事后 DLL 连同D疆智图进程一起杀掉,然后我的程序去调 sqlite3.dll 解密数据库读取信息···