Mac 编译安装 SQLcipher v3.4.1

编译安装

步骤 1:安装必要的依赖工具

首先确保系统已安装 Xcode 命令行工具:

1
xcode-select --install

步骤 2:配置编译环境变量

设置 OpenSSL 路径和其他编译参数:

1
2
3
4
5
6
7
# 进入SQLCipher源码目录
cd /Users/xld/Desktop/project/xld-sqlcipher/sqlcipher-3.4.1

# 设置环境变量指向你的OpenSSL安装目录
export LDFLAGS="-L/Users/xld/Desktop/openssl-1.1.1w-install/lib -lcrypto"
export CPPFLAGS="-I/Users/xld/Desktop/openssl-1.1.1w-install/include"
export CFLAGS="-DSQLITE_HAS_CODEC"

步骤 3:配置编译选项

运行配置脚本来生成 Makefile:

1
2
3
4
5
./configure \
--prefix=/usr/local/sqlcipher-3.4.1 \
--with-crypto-lib=openssl \
--enable-tempstore=yes \
--disable-tcl

步骤 4:编译和安装

1
2
3
4
5
# 编译源码
make

# 安装到指定目录(需要管理员权限)
sudo make install

步骤 5:验证安装

检查 SQLCipher 是否正确安装:

1
/usr/local/sqlcipher-3.4.1/bin/sqlcipher --version

使用编译好的 SQLCipher

1
2
3
4
5
6
# 直接运行
/usr/local/sqlcipher-3.4.1/bin/sqlcipher your_database.db

# 或者添加到PATH环境变量
export PATH="/usr/local/sqlcipher-3.4.1/bin:$PATH"
sqlcipher your_database.db

QA

OpenSSL 版本问题

本次是为了解密微信数据库服务的,所以用的是 openssl 1.1.1 版本

但目前支持直接下载的只有 openssl 3+ 的版本, openssl 1+ 的全部停掉了,需要自己编译

编译错误提示找不到 OpenSSL 库

确保 LDFLAGS 和 CPPFLAGS 路径正确,并尝试添加

1
export LD_LIBRARY_PATH="/Users/xld/Desktop/openssl-1.1.1w-install/lib"

关于 arm64 架构的兼容性

如果遇到架构不兼容问题,添加以下 CFLAGS

1
export CFLAGS="-DSQLITE_HAS_CODEC -arch arm64"

SQLCipher 版本显示不一致

尽管编译的是 SQLCipher 3.4.1 源码,但 --version 命令显示的是 SQLite 内核版本(3.15.2),而不是 SQLCipher 的包装版本。


微信数据库解密

1
2
3
4
5
sqlcipher 29028e5.db
PRAGMA cipher_default_kdf_iter = 4000;
PRAGMA key = '29028e5';
PRAGMA cipher_use_hmac = OFF;
PRAGMA cipher_page_size = 1024;