如何编译TrueCrypt 7.0a源码

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. gzip 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.exetruecrypt.systruecrypt-x64.sys这个三个文件了。

你可能感兴趣的:(c,windows,加密,Microsoft,Build,winddk)