shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
阅读:5390回复:0

在VS2005下编译Truecrypt

楼主#
更多 发布于:2009-12-24 15:18
完全解析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目录下的文件夹名
作一名真实,诚实,优秀的科技工作者!
游客

返回顶部