標籤

2010年11月10日 星期三

在 Windows XP 上 build TrueCrypt 6.3a

前一陣子很迷OTFE (On the Fly Encryption)於是著手開始study FreeOTFETrueCrypt 這兩個Open Source, FreeOTFE要用Delphi來build我覺得太過麻煩就放棄。 看了一些資料後就決定來Build TrueCrypt 試看看,進而study他的source code,越看越入迷,後來乾脆自己來改他的source code並且做了一版UI比較容易使用的版本,我把它叫 USK (USB Security Kit),我還沒把64 bit driver sign 過,所以就丟出32 bit的版本出來給其他人玩玩看。


我在study TrueCrypt當時是6.3a的版本,現在它已經推出7.0的版本,因為support多平台的關係,裡面用的source code 全部用c來寫,所以要在做資料轉換的時候就不能用MFC的 Cstring,這時就要查一些古老的c library 了,所以改起來可說是一把眼淚一把鼻涕的查資料到三更半夜。

要build TrueCrypt 之前有以下幾樣東西要準備
1. Microsoft Visual Studio 2008 SP1
2. Microsoft Visual C++ 1.52
3. Windows Driver Developer Kit (7600.16385.0)
4. NASM (2.09)
5. GZIP
6. PKCS11 (Cryptographic Token Interface)
7. Microsoft Windows SDK for Windows 7 (如果你是在Windows 7 build的話可以不用裝)

1. Microsoft Visual Studio 2008 SP1
我沒在VS2005 與 VS2010試過,理論上VS2010應該沒啥大問題

2. 安裝Microsoft Visual C++ 1.52
將這個package解開到c:\MSVC 下

 3. 安裝Windows Driver Developer Kit (7600.16385.0)
預設的安裝會是在 c:\WinDDK 下

4. 安裝NASM (2.09)
解壓縮後把 nasm.exe copy到c:\windows\system32 下

5. 安裝GZIP
解壓縮後把 gzip.exe copy到 c:\windows\system32 下

6. 下載 PKCS11 
下載點
下載這三個header檔  pkcs11.h, pkcs11f.h 以及 pkcs11t.h 至 c:\PKSC11_INC 目錄下

7. 安裝Microsoft Windows SDK for Windows 7 
預設安裝目錄在是 c:\Program Files\Microsoft SDKs\Windows\v7.0


下載 TrueCrypt source code 與設定編譯環境
1. 下載 TrueCrypt source code

2. 設定作業系統環境變數
在環境變數內把以下的目錄加進去系統變數內
變數名:MSVC16_ROOT 變數值: c:\MSVC
變數名:WINDDK_ROOT 變數值: c:\WinDDK\7600.16385.0
變數名:PKCS11_INC 變數值: c:\PKCS11_INC


基本上這樣就已經ok了,現在打開 TrueCrypt.sln 的solution 檔來編譯看看吧。


TrueCrypt 的solution 包含了6個project,裡面比較重要的是 Crypto, Driver, Format跟Mount這四個projects.  基本上 Crypto是不會去做太多的更動,因為裡面大多是很標準的encryption library。 Driver的project可以build出32 bit與64 bit的driver,不過64 bits的driver沒sign 過是沒法load起來。

如果你想要讓你TrueCrypt 認不得你所create的decryption volume的話你必去要在 Driver project下去修改Volumes.c 檔0x54525545 這個offset值,不過一旦你修改這個值,所有reference 這個值的檔案都要修改。

我動最多的project是Format這個project,我大概改了約一半左右的檔案,特別是Tcformat.c 這個檔幾乎是被我改到面目全非了..




沒有留言:

張貼留言