编译过程中用到的工具下载地址: 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 plaincopy
  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 plaincopy
  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 plaincopy
  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 plaincopy
  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 plaincopy
  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 plaincopy
  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 plaincopy
  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 plaincopy
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif

后面一行即可。

6、2 再次编译,成功了

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

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

三、查看运行效果

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

TrueCrypt简介、在VS2008下的编译过程相关推荐

  1. FFmpeg在Windows系统下的编译过程

    由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译.要想使用FFMpeg,最先要解决 ...

  2. 浅析Linux下gcc编译过程

    目录 1. gcc简介及基本用法 2. gcc编译过程 3. 静态链接和动态链接 4. 静态库和动态库 4.1 静态库的制作和使用 4.2 动态库的制作和使用 1. gcc简介及基本用法   GCC( ...

  3. Dlib简介及在windows7 vs2013编译过程

    Dlib是一个C++库,包含了许多机器学习算法.它是跨平台的,可以应用在Windows.Linux.Mac.embedded devices.mobile phones等.它的License是Boos ...

  4. Lib Dll在VS2008下的编译和使用-持续更新,欢迎拍砖

    1 DLL LibStatic Lib的区别 一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link l ...

  5. LibreCAD 2.1.3在windows 10 下的编译过程

    一直想学习开源CAD 的代码,因此特意下载了开源CAD LibreCAD代码进行编译,在这个过程中遇到了一些问题,写下这篇文章标记一下 在GitHub上下载LibreCAD的源码,下载Boost源码, ...

  6. C语言1066字符类型统计,C语言编译过程及数据类型

    写在前面 C语言可以称得上是高级语言中的低级语言,接下来一段时间,我会写一下文章关于c语言,把它的神秘面纱一 一揭开.下面主要是c语言的C语言编译过程及数据类型 源文件编译过程 为了使计算机能执行高级 ...

  7. 【OpenCV3】OpenCV3.2.0在VS2013环境下Cmake编译与快速配置

    近年来随着人工智能和机器视觉的日益火爆,OpenCV作为机器视觉领域内的利器也得到了长足和快速的发展.作为OpenCV的忠实粉丝,一直使用的是OpenCV2的版本,但是OpenCV3相对于OpenCV ...

  8. RISC-V嵌入式开发准备篇1:编译过程简介

    原文出处:https://mp.weixin.qq.com/s/-syKN0DibKGGPCllaeNqMg 随着国内第一本RISC-V中文书籍<手把手教你设计CPU--RISC-V处理器篇&g ...

  9. OpenBLAS简介及在Windows7 VS2013上源码的编译过程

    OpenBLAS(Open Basic Linear Algebra Subprograms)是开源的基本线性代数子程序库,是一个优化的高性能多核BLAS库,主要包括矩阵与矩阵.矩阵与向量.向量与向量 ...

最新文章

  1. Python机器学习——DBSCAN聚类
  2. react单选框获取值
  3. PyramidBox笔记
  4. v-on绑定特性命名带小横杠 ‘-’与props属性中变量怎么对应
  5. 看下completablefuture(暂时没看完)
  6. Linux 系统下载网址
  7. 当不同公司的产品经理在一块聊天,会聊什么?
  8. html转义 在线,HTML转义工具 [Javascript版]
  9. 唐郑国公魏征金口“斩龙台”梦斩泾河黄龙的传说
  10. 什么是冬至?冬至的由来?
  11. 2020没赚到,你真的该好好想想了
  12. Unity Shader _Time 的单位
  13. Ubuntu入门——基础终端命令
  14. linux udp数据包发送间隔,如何每1 ms发送一次UDP数据包?
  15. 人工智能在肿瘤成像中的临床挑战和应用
  16. Kotlin - 伴生对象与静态成员
  17. 爱心跳动-HTML-抖音火的那个
  18. 【盒子居中常用的四种方法】
  19. 苹果手机怎么编辑word文档_word文档的基本编辑操作
  20. excel实现join功能

热门文章

  1. 一段代码完成所有分享功能,分分钟搞定分享功能
  2. 单行文本和多行文本溢出显示省略号
  3. 【计算机网络原理·实验·第八章】SYN攻击Land攻击
  4. python位运算符的用法
  5. 编写frame.java_returnordersubmitframe.java~83~ 源代码在线查看 - 用java编写的进销存系统 资源下载 虫虫电子下载站...
  6. dayjs一些常用封装
  7. 企业微信实现消息本地存档
  8. 按回车键没有反应,不进行下一步
  9. 纪念 C 语言之父离世 6 周年
  10. 雅诗兰黛将在华投建世界级创新研发中心;霍尼韦尔特性材料和技术集团与七家企业在进博会签约 | 美通企业日报...