异想天开

What's the true meaning of light, Could you tell me why

编译truecrypt 7.1a

日期:2018-03-04 16:25:30
  
最后更新日期:2018-03-04 17:03:02
truecrypt是一款虚拟盘软件。之前在32位下win 7编译过。 这次为了使用virtualbox调试驱动,需要可用内存大一点,重新安装了64位的win 7。 编译过程记录如下:
一. 下载一份v7.1a版本的truecryp。官网下载的为阉割版v7.2
https://www.truecrypt71a.com/downloads/#bs_tab143827518304983

二.编译时需要安装的依赖
Microsoft Visual C++ 2008 SP1 (Professional Edition or compatible)
Microsoft Visual C++ 1.52 (available from MSDN Subscriber Downloads)
Microsoft Windows SDK for Windows 7 (configured for Visual C++)
Microsoft Windows Driver Kit 7.1.0 (build 7600.16385.1)
RSA Security Inc. PKCS #11 Cryptographic Token Interface (Cryptoki) 2.20 header files
NASM assembler 2.08 or compatible
gzip compressor
dd.exe

如何来安装这些依赖?
1. vs 2008专业版, 从https://www.microsoft.com/en-us/download/confirmation.aspx?id=13276下载

2. vc 1.52c版本,从网上找vc++ 1.52c,应该也能找到。找不到可以来索要。

3. Microsoft Windows SDK for Windows 7 可以从微软官网https://www.microsoft.com/en-us/download/details.aspx?id=8442下载,同时会需要安装.NET Framework 4。 假设你的系统有了.NET Framework 4.7,那么.NET Framework 4可能安装不上,那么需要卸载它再安装。GRMSDK_EN_DVD.iso是32-bit,而GRMSDKX_EN_DVD.iso是64-bit版本, 安装系统对应的版本。

4. Microsoft Windows Driver Kit 7.1.0在MSDN上面https://www.microsoft.com/en-us/download/details.aspx?id=11800可以下载到,文件名为GRMWDK_EN_7600_1.ISO.

5. PKCS #11就是三个头文件pkcs11.h, pkcs11f.h and pkcs11t.h。这里可以下载ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20

6. NASM官网可以下载

7. gzip可以从https://sourceforge.net/projects/gnuwin32/files/gzip/1.3.12-1/下载, version 1.3.12-1已经验证过。

8. dd命令, 参考给出的coreutils,64位系统时,在vs中运行会挂,这里换用另外一个http://www.chrysocome.net/dd

按照着上诉步骤, 在32位的win 7下基本没遇到啥问题。 到了64位时,就问题不断。怎么解决的?
vs2008出现链接错误:fatal error LNK1000: Internal error during IncrBuildImage
解决:
1、项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
编译完成后

这时在32位系统就可以顺利运行了。 64系统需要加签名验证。

参考:
https://madiba.encs.concordia.ca/~x_decarn/truecrypt-binaries-analysis/