TrueCrypt是一款开源的虚拟加密磁盘工具,目前最新版本是 7.0a ,本文以该版本源代码为基础,介绍了如何在VC2008下进行编译。
环境配置
1. Microsoft Visual Studio 2008 SP1 (VC++ 2008)
2. Microsoft Visual Studio VC++ 1.52
3. NASM version 2.07 compiled on Jul 19 2009
4. gzi p 1.2.4 Win32 (02 Dec 97)
5. PKCS11头文件
6. Windows Driver Develop Kit 7600.16385.1
7. TrueCrypt 7.0a Source.zip
准备步骤
1. Microsoft Visual Studio 2008 SP1 (VC++ 2008) ,这个是必需的了
2. 安装Microsoft Visual Studio VC++ 1.52,(这里为了方便管理编译TrueCrypt所需要的lib,我们可以在c盘建立一个目录,就命名为TrueCrypt)把MSVC++ 1.52安装在C:\TrueCrypt\MSVC\
3. 下载NASM,解压缩到C:\TrueCrypt\ NASM\
4. 下载gzip,解压缩到C:\TrueCrypt\ gzip\
5. 下载PKCS11头文件,解压缩到C:\TrueCrypt\PKCS11_INC\
6. 下载WDK7600.16385.1(这个是目前最新的,更新消息参考微软官网),安装到E:\WinDDK\7600.16385.1\(这个目录是我这边这么设置的,在下面环境变量设置需要注意)
7. 下载TrueCrypt 7.0a 源代码(http://www.truecrypt.org/downloads2)
环境变量设置
右键我的电脑——属性——高级——环境变量,添加下面几个系统变量:
1. 变量名MSVC16_ROOT,变量值C:\TrueCrypt\MSVC
2. 变量名PKCS11_INC,变量值C:\TrueCrypt\PKCS11_INC
3. 变量名WINDDK_ROOT,变量值E:\WinDDK\7600.16385.1
4. 修改系统Path,在末尾增加C:\TrueCrypt\NASM;C:\TrueCrypt\gzip
环境变量设置完毕后需要重启电脑
源代码修改
1. 修改C:\TrueCrypt\PKCS11_INC\ pkcs11.h,添加
#define CKR_NEW_PIN_MODE 0x000001B0
#define CKR_NEXT_OTP 0x000001B1
可以直接添加在#define __PASTE(x,y) x##y后面一行
2. 修改TrueCrypt 7.0a Source其中的Setup项目中的Setup.h文件,添加
/*---region add by gc---*/
#include "wtypes.h"
const PROPERTYKEY PKEY_AppUserModel_ID = {
{
(unsigned long)2009,/*unsigned long Data1;*/
(unsigned short)12,/*unsigned short Data2;*/
(unsigned short)23,/*unsigned short Data3;*/
0x44,0x55,0x55,0x55,0x55,0x55,0x55,0x55
},/*GUID fmtid;*/
(DWORD)PID_FIRST_USABLE /*DWORD pid;*/
};
/*---endregion---*/
添加在文件的开始处,即
#ifdef __cplusplus
extern "C" {
#endif
后面一行即可。
到此为止,所有配置均设置完毕,打开TrueCrypt.sln解决方案,Build Solution就可以在Debug目录生成Setup Files目录,其下至少可以看到TrueCrypt.exe,truecrypt.sys,truecrypt-x64.sys这个三个文件了。
我这边已经有配置好了的所需的lib和源代码,由于比较大,cppblog不能上传大附件,如有配置不成功的,可以Email我([email protected])。