如何编译TrueCrypt 7.0a源码

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

我这边已经有配置好了的所需的lib和源代码,由于比较大,cppblog不能上传大附件,如有配置不成功的,可以Email我([email protected])。

你可能感兴趣的:(如何编译TrueCrypt 7.0a源码)