阅读:5706回复:0
在VS2005下编译Truecrypt
完全解析Visual Studio2005下编译Truecrypt6.0
1. 本文对象 如果您对TrueCrypt充满兴趣并想在此基础上进行个性化开发; 如果您对TrueCrypt的编译过程还不太了解; 如果您当前还在使用VS2005集成开发环境,并期望在其中对TrueCrypt进行编译。 2. TrueCrypt介绍 TrueCrypt是一款开源的磁盘加密软件,支持从文件虚拟磁盘,对整个分区进行加密,以及对整个硬盘(包括系统盘)进行加密。 TrueCrypt中包含了16位的boot程序,32位和64位的磁盘(过滤)驱动程序,以及UI界面程序。TrueCrypt在Visual Studio 2008 IDE中进行开发,因此必须经过转换才能在Visual Studio 2005中进行编译。 3. 编译平台 操作系统: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. 编译环境配置 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目录下的文件夹名 |
|
|