1 本文对象

     如果您对TrueCrypt充满兴趣并想在此基础上进行个性化开发;

     如果您对TrueCrypt的编译过程还不太了解;

     如果您当前还在使用VS2005集成开发环境,并期望在其中对TrueCrypt进行编译。

2 TrueCrypt介绍

     TrueCrypt是一款开源的磁盘加密软件,支持从文件虚拟磁盘,对整个分区进行加密,以及对整个硬盘(包括系统盘)进行加密。

     TrueCrypt中包含了16位的boot程序,32位和64位的磁盘(/过滤)驱动程序,以及UI界面程序。TrueCrypt在Visual Studio 2008 IDE中进行开发,因此必须经过的转换才能在Visual Studio 2005中进行编译。

编译平台

     操作系统:Windows XP Professional SP3 32bit Platform

     硬件平台:Intel Core 2 Duo CPU

4 准备工作

  4.1 Microsoft Visual Studio 2005 IDE

     下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bb4a75ab-e 2d4-4c96-b39d-37baf6b5b1dc (收费)

  4.2 Microsoft Windows Driver Kit 6001.18002

     下载地址:http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx  (免费)

     注:这个地址保存的是最新的WDK版本,因此可能和本文所述版本不吻合

  4.3 Microsoft Visual C++ 1.5/1.52

     下载地址:(当前无)

  4.4   gzip 1.2.4 win32以上版本

     下载地址:http://www.gzip.org (免费)

  4.5   nasm version 2.07 win32 以上版本

     下载地址:http://www.nasm.us/pub/nasm/releasebuilds/2.07/win32/nasm-2.07-win32.zip (免费)

  4.6   yasm 0.8.0 win32 version以上版本

     下载地址:http://www.tortall.net/projects/yasm/wiki/Download (免费)

  4.7   TrueCrypt 6.0a Source Code Package

     下载地址:http://www.truecrypt.org/downloads2 (免费)

     注:这个地址保存当前最新的TrueCrypt源码版本,因此可能和文本所述版本不吻合

  4.8   PKCS11_INC header Package

     下载地址:http://svn.openvpn.net/projects/openvpn/test/time/openvpn/pkcs11-headers/ (免费)

  4.9   Winheader.h文件(由于Visual Studio 2005中不包含该文件)

     下载地址:该文件位于Visual Studio 2008中,其中代码如下:

     #ifndef TC_WIN_HEADER_H

     #define TC_WIN_HEADER_H

    

     //structure and definition need by VS2005 on WINXP.

     // New WINERROR.H and winioctl.h files contain the below structs and definitions

     //#include <WINERROR.H>

     //#include <winioctl.h>

 

     #define ERROR_BAD_CLUSTERS               6849L

     #define FSCTL_SHRINK_VOLUME                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108,   METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // SHRINK_VOLUME_INFORMATION

 

     typedef enum _SHRINK_VOLUME_REQUEST_TYPES

     {

         ShrinkPrepare = 1,

         ShrinkCommit,

         ShrinkAbort

     } SHRINK_VOLUME_REQUEST_TYPES, *PSHRINK_VOLUME_REQUEST_TYPES;

 

     typedef struct _SHRINK_VOLUME_INFORMATION {

         SHRINK_VOLUME_REQUEST_TYPES ShrinkRequestType;

         DWORDLONG                   Flags;

         LONGLONG                    NewNumberOfSectors;

     }SHRINK_VOLUME_INFORMATION, *PSHRINK_VOLUME_INFORMATION;

 

     typedef struct tagBIND_OPTS3 {

         DWORD        cbStruct;

         DWORD        grfFlags;

         DWORD        grfMode;

         DWORD        dwTickCountDeadline;

         DWORD        dwTrackFlags;

         DWORD        dwClassContext;

         LCID         locale;

         COSERVERINFO *pServerInfo;

         HWND         hwnd;

     }BIND_OPTS3, *LPBIND_OPTS3;

     //END

    

     #endif // TC_WIN_OTHER_H

编译环境配置

  5.1   安装4.1,假设到C:/Program Files/Microsoft Visual Studio 8

  5.2   安装4.2,假设到C盘根目录,C:/WinDDK

  5.3   设置环境变量WINDDK_ROOT = C:/WinDDK

  5.4   安装4.3,假设到C盘根目录,C:/MSVC

  5.5   设置环境变量MSVC16_ROOT = C:/MSVC

  5.6   重新启动计算机,使环境变量生效

  5.7   将4.4得到的gzip.exe拷贝至系统目录下,假设到C:/Windows/System32

  5.8   将4.5得到的nasm.exe拷贝至系统目录下,假设到C:/Windows/System32

  5.9   将4.6得到的yasm.exe拷贝至系统目录下,假设到C:/Windows/System32

  5.10  解压4.7得到的TrueCrypt源代码包,假设解压到TrueCrypt6.0aSource文件夹

  5.11  确保得到的PKCS11_INC文件夹中有三个文件

  5.12  将得到的WinHeader.H文件拷贝至PKCS11_INC文件夹中

  5.13  将得到的PKCS11_INC文件夹拷贝至./TrueCrypt6.0aSource/目录下

  5.14  将./TrueCrypt6.0aSource/目录下的Truecrypt.sln用文本编辑器打开,修改其中的     Format Version 10.00为Format Version 9.00

  5.15 将./TrueCrypt 6.0aSource/Boot/Windows/目录下的Boot.vcproj用文本编辑器打开,修改其中的Version="9.00"为Version="8.00",类似的,按此规则分别修改Crypto, Driver, Mount, Format, Setup目录下的.vcproj文件

  5.16 双击TrueCrypt.sln启动TrueCrypt工作区,在Format工程和Mount工程中包含PKCS11_INC所在路径,具体设置方法为,鼠标右键Format/Mount工程->属性->配置属性->C/C++->General,在Additional Include Directories中输入../PKCS11_INC

  5.17 在./TrueCrypt6.0aSource/Common/Dlgcode.c和./TrueCrypt6.0aSource/Common/ BaseCom.cpp文件中包含WinHeader.h

  5.18 在编译Driver模块时,应将BuildDriver.cmd文件中TC_WINDDK_BUILD的值修改为WDK对应的版本号,即C:/WinDDK目录下的文件夹名

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐