TrueCrypt简介、在VS2008下的编译过程

编译过程中用到的工具下载地址: http://download.csdn.net/detail/chenyujing1234/4448383(资源内容:PKCS11.7 + gzip.exe + asm.zip  + MsVSVC++1.52.7z)

一、TrueCrypt简介

TrueCrypt,是一款免费开源的加密软件,同时支持Windows Vista,7/XP, Mac OS X, Linux 等操作系统。TrueCrypt不需要生成任何文件即可在硬盘上建立虚拟磁盘

用户可以按照盘符进行访问,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。

TrueCrypt 提供多种加密算法,包括:AES-256, Blowfish (448-bit key), CAST5, Serpent, Triple DES, and Twofish,其他特性还有支持FAT32和NTFS分区、隐藏卷标热键启动等。

主要特性:

(1)所有加密都是以分区为基础的。

(2) 真加密,所有加密数据都是经过AES等加密算法的运算后的结果,无法破解(穷举法除外)。

(3)能创建加密的“虚拟磁盘文件”(类似虚拟光驱,大小可以自定义)

(4)加密单个分区整个硬盘

(5)加密Windows系统所在的分区(启动Windows前需要密码)

(6)加密过程自动、实时、透明(使用加密文件或分区前输入密码,载入后就可以像使用一个普通分区一样使用加密分区。)

(7)提供两级方案,以应对被强迫说出密码的情况(如抢劫)。

  7、1   隐藏分区(覆盖式密码术,steganography)、隐藏操作系统

  7、2  无法探测到TrueCrypt 加密分区(加密数据会被认为是随机数据

(8)加密算法:AES-256、Serpent、Twofish。为取得更好加密效果,可以同时使用两种或三种加密算法。操作模式:XTS。

 

二、TrueCrypt的编译

从trucCrypt官网中获得源码:   http://www.truecrypt.org/  , 现在最新版本是

我们以这个版本为例来介绍在VS2008下的编译方法。

用VS2008打开后,得到如下:

1、首先编译Boot工程
1、1 提示报错:
[plain]  view plain  copy
  1. 1>------ 已启动生成: 项目: Boot, 配置: Release Win32 ------  
  2. 1>正在执行生成文件项目操作  
  3. 1>makefile(13) : fatal error U1050: Environment variable MSVC16_ROOT must point to the installation directory of MS Visual C++ 1.5  
  4. 1>Stop.  
  5. 1>makefile(13) : fatal error U1050: Environment variable MSVC16_ROOT must point to the installation directory of MS Visual C++ 1.5  
  6. 1>Stop.  


查看makefile文件,是因为没有安装Visual C++ 1.5的原因。

 

解决方法:下载安装Ms-VC++ 1.52c,如果我安装在C:\MSVC下,那么就在系统环境变量中新建如下的变量。

1、2  再次编译还是出错:
[plain]  view plain  copy
  1. 1>------ 已启动生成: 项目: Boot, 配置: Release Win32 ------  
  2. 1>正在执行生成文件项目操作  
  3. 1>Aes_hw_cpu.asm  
  4. 1>'nasm.exe' 不是内部或外部命令,也不是可运行的程序  
  5. 1>或批处理文件。  
  6. 1>NMAKE : fatal error U1077: “nasm.exe”: 返回代码“0x1”  
  7. 1>Stop.  


解决方法:

从网上下载nasm.exe,并放到VS2008的安装路径下。

 

 1、3 再次编译又是出错:
[plain]  view plain  copy
  1. 1>------ 已启动生成: 项目: Boot, 配置: Release Win32 ------  
  2. 1>正在执行生成文件项目操作  
  3. 1>Aes_hw_cpu.asm  
  4. 1>AesSmall_x86.asm  
  5. 1>..\..\..\crypto\aestab.c  
  6. 1>Linking...  
  7. 1>'gzip.exe' 不是内部或外部命令,也不是可运行的程序  
  8. 1>或批处理文件。  
  9. 1>NMAKE : fatal error U1077: “gzip.exe”: 返回代码“0x1”  
  10. 1>Stop.  


解决方法:从网上下载gzip.exe,并放到VS2008 的安装路径下。

 

 1、4 再次编译,成功了。

 我们得到了

2、编译Crypto工程

由于在编译Boot工程时,我们解决了那么多路径,这里编译Crypto相当顺利,成功后得到了Crypto.lib。

3、编译Driver工程
3、1 下载WDK7600.16385.1 并安装 

(可参考我的文章:  Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例

3、2  提示下面的错误:
[plain]  view plain  copy
  1. 1>------ 已启动生成: 项目: Driver, 配置: Debug Win32 ------  
  2. 1>正在执行生成文件项目操作  
  3. 1>------ Building truecrypt.sys: Debug x86 ------  
  4. 1>BuildDriver.cmd: error: MS Build does not support building of projects stored in a path containing spaces.   
  5. 1>------ Building truecrypt.sys: Debug x64 ------  
  6. 1>BuildDriver.cmd: error: MS Build does not support building of projects stored in a path containing spaces.   

解决方法,把工程在没有空格的路径中。

3、3 再次编译成功了。

我们得到了truecrypt.sys


4、编译Format工程
4、1 提示如下错误:
[plain]  view plain  copy
  1. 2>------ 已启动生成: 项目: Format, 配置: Debug Win32 ------  
  2. 2>正在编译...  
  3. 2>Dlgcode.c  
  4. 2>d:\truecrypt7.1asource\common\securitytoken.h(34) : fatal error C1083: 无法打开包括文件:“pkcs11.h”: No such file or directory  


解决方法:

下载PKCS 11头文件,并把它的路径添加到Format工程下的C++包含路径下。(默认在原有的C++包含路径下有 $(PKCS11_INC),

                                                                                                                                             所以我们也可以在系统环境变量中定义PKCS11_INC的值为PKCS 11的路径)

 

 

4、2  再次编译成功了

我们得到了  TrueCryptFormat.exe

5、编译Mount工程

出现的提示与4、1是一样的,解决方法也与4、1一样。

再次编译成功了。

6、编译Setup 工程
6、1 提示下面的错误
[plain]  view plain  copy
  1. 2>Setup.c  
  2. 2>d:\truecrypt7.1asource\setup\setup.c(135) : error C2065: “PKEY_AppUserModel_ID”: 未声明的标识符  


解决方法:

修改TrueCrypt 7.1a Source其中的Setup项目中的Setup.h文件,添加

[cpp]  view plain  copy
  1. /*---region add by gc---*/  
  2. #include "wtypes.h"  
  3.     const PROPERTYKEY PKEY_AppUserModel_ID = {  
  4.         {  
  5.             (unsigned long)2009,/*unsigned long  Data1;*/  
  6.             (unsigned short)12,/*unsigned short Data2;*/  
  7.             (unsigned short)23,/*unsigned short Data3;*/  
  8.             0x44,0x55,0x55,0x55,0x55,0x55,0x55,0x55  
  9.         },/*GUID fmtid;*/  
  10.         (DWORD)PID_FIRST_USABLE /*DWORD pid;*/  
  11.     };  
  12. /*---endregion---*/  

 

添加在文件的开始处,即

[cpp]  view plain  copy
  1. #ifdef __cplusplus  
  2.   
  3. extern "C" {  
  4.   
  5. #endif  

后面一行即可。

6、2 再次编译,成功了

^-^ 花了两个小时,至此我们把整个解决方案中的工程都编译通过了,庆祝一下吧。

在Debug目录下我们可以看到目标文件:

 

 

三、查看运行效果

运行目标目录下的Truecrypt.exe,在让防火墙允许的情况下运行,看到主界面了:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
相关文章《DOS的古董美》 MD DocUmEnT: 3/26/2016 10:26:57 AM by Jimbowhy 当计算机技术越来越先进,越来越快速更新,作为电子FANS,发现这样的现状不仅带给从事这个行业的人更多的便利,还有更多的迷失!而DOS就像是那个本应有活力的游乐园,收集资料的过程中发现,国外确实把DOS当成了计算机世界的大游乐场!国内很多在玩开发板的的同学几乎都不懂得,其实个人电脑才是功能最齐全的“开花板”! - by Jimbowhy 为了混用汇编和C语言进行编程,就需要配套使用微软的C/C++语言编译器,也即是 Visual C++,它的前身是 Microsoft C/C++,最高版本好像是1992年的Microsoft(R) C/C++, Version 7.0,我手上就有MSC70.zip,还有1991年发布的MSC60.zip两个版本。更早的C语言开发工具就是1990年的QuickC(R) Compiler 2.51 Professional。然后就是Visual系列的天下了,最早的一版是1992年发行的Visual C++ 1.0,20张3.5英寸磁盘装,现在能看到的只有磁盘镜像了,镜像中的Link.EX_是SZDD压缩格式。这个版本支持16位和32位开发,集成MFC框架,集成资源编辑器。链接程序为32位 Executable Linker 1.00,同时提供 link.exe 和 link32.exe 两个命令。在 Win PC World 上下载到一个称为 msvc10_32s.iso 的镜像,它包含了 Win32 和 NT两个套开发工具,标明是 Visual C++ 1.0,但感觉不是,像是一个未发布的版本。因为最后一个DOS开发版本是 Dec 5, 1994发行的 Visual C++ 1.52c,也就是从这一套工具开始,链接程序不再叫做 Executable Linker,而是叫做分段模式程序链接器 Segmented Executable Linker,随CD发行的链接程序版本为 5.60.339,这个链接程序也是MASM32中使用的16位程序链接器。直到今天,它仍然具有强大的生命力,一些为MSDOS、Windows 3.1编写16位应用程序的程序员还在使用这个版本,我个人也很喜欢这样小巧的开发工具,因为我只需库文件和编译工具而已,完成编码后剩下的工作就交给make工具而不是IDE。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值