2012-11-14 16 views
16

Ich versuche, TrueCrypt zu kompilieren. Ich benutze die Anweisungen von https://github.com/syglug/truecrypt.Wie kann ich TrueCrypt unter Windows erstellen?

Ich legte die 3 Umgebungsvariablen (pkcs, ddk, MSVC16_ROOT) und öffnete das Projekt in msvc2008. Dies war nicht in den Anweisungen, aber ich brauchte NASM installiert werden, so dass ich es installiert und NASM in den Pfad gesetzt. Jetzt, wenn ich baue, bekomme ich das unten. Es endet, obwohl die IDE den Cancel Build auswählbar hat, der Compiler nichts tut und das System im Leerlauf läuft.

Crypto.lib existiert nach diesem Schritt

1>------ Build started: Project: Crypto, Configuration: Release Win32 ------ 
2>------ Build started: Project: Boot, Configuration: Release Win32 ------ 
3>------ Build started: Project: Driver, Configuration: Release Win32 ------ 
2>Performing Makefile project actions 
3>Performing Makefile project actions 
1>Performing Custom Build Step 
3>------ Building truecrypt.sys: Release x86 ------ 
1>Aes_hw_cpu.asm 
2>Microsoft (R) C/C++ Optimizing Compiler Version 8.00c  
2>Copyright (c) Microsoft Corp 1984-1993. All rights reserved. 
3>The syntax of the command is incorrect. 
3>Project : error PRJ0002 : Error result 255 returned from 'C:\Windows\SysWow64\cmd.exe'. 
3>Build log was saved at "file://c:\unzipped\tc\Driver\Release\BuildLog.htm" 
3>Driver - 1 error(s), 0 warning(s) 
1>Performing Custom Build Step 
1>Aes_x86.asm 
1>Compiling... 
1>Whirlpool.c 
1>Twofish.c 
1>Sha2.c 
1>Sha1.c 
1>Serpent.c 
1>Rmd160.c 
1>Des.c 
1>Cast.c 
1>Blowfish.c 
1>Aestab.c 
1>Aeskey.c 
1>Generating Code... 
1>Creating library... 
1>Build log was saved at "file://c:\unzipped\tc\Crypto\Release\BuildLog.htm" 
1>Crypto - 0 error(s), 0 warning(s) 

Es hängt nur. Es verwendet keine CPU, die IDE scheint nicht zu wissen, dass sie ausgefallen ist oder gestoppt wurde. Wenn ich wieder laufe bekomme ich diese

1>------ Build started: Project: Boot, Configuration: Release Win32 ------ 
2>------ Build started: Project: Driver, Configuration: Release Win32 ------ 
1>Performing Makefile project actions 
2>Performing Makefile project actions 
2>------ Building truecrypt.sys: Release x86 ------ 
1>Microsoft (R) C/C++ Optimizing Compiler Version 8.00c  
1>Copyright (c) Microsoft Corp 1984-1993. All rights reserved. 
2>The syntax of the command is incorrect. 

Ich habe msvc2012 installiert, also habe ich es auch versucht. Ich erhalte die gleichen Probleme

1>------ Build started: Project: Crypto, Configuration: Release Win32 ------ 
2>------ Build started: Project: Boot, Configuration: Release Win32 ------ 
3>------ Build started: Project: Driver, Configuration: Release Win32 ------ 
1> Performing Custom Build Tools 
1> Aes_hw_cpu.asm 
3> ------ Building truecrypt.sys: Release x86 ------ 
2> Microsoft (R) C/C++ Optimizing Compiler Version 8.00c  
2> Copyright (c) Microsoft Corp 1984-1993. All rights reserved. 
2> 
3> The syntax of the command is incorrect. 
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command "echo ------ Building truecrypt.sys: Release x86 ------ 
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: cmd.exe /c BuildDriver.cmd -build -release -x86 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\" 
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: if errorlevel 1 exit %errorlevel% 
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo. 
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo ------ Building truecrypt.sys: Release x64 ------ 
3>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: BuildDriver.cmd -build -release -x64 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\"" exited with code 255. 
1> Performing Custom Build Tools 
1> Aes_x86.asm 
1> Aeskey.c 
1> Aestab.c 
1> Blowfish.c 
1> Cast.c 
1> Des.c 
1> Rmd160.c 
1> Serpent.c 
1> Sha1.c 
1> Sha2.c 
1> Twofish.c 
1> Whirlpool.c 
1> Generating Code... 
1> Crypto.vcxproj -> C:\unzipped\tc\Crypto\Release\Crypto.lib 

Wenn ich/stornieren bauen wieder ich die

1>------ Build started: Project: Boot, Configuration: Release Win32 ------ 
2>------ Build started: Project: Driver, Configuration: Release Win32 ------ 
2> ------ Building truecrypt.sys: Release x86 ------ 
2> The syntax of the command is incorrect. 
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: The command "echo ------ Building truecrypt.sys: Release x86 ------ 
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: cmd.exe /c BuildDriver.cmd -build -release -x86 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\" 
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: if errorlevel 1 exit %errorlevel% 
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo. 
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: echo ------ Building truecrypt.sys: Release x64 ------ 
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.MakeFile.Targets(38,5): error MSB3073: BuildDriver.cmd -build -release -x64 "C:\unzipped\tc\\Common" "C:\unzipped\tc\\Crypto" "C:\unzipped\tc\Driver\"" exited with code 255. 
1> Microsoft (R) C/C++ Optimizing Compiler Version 8.00c  
1> Copyright (c) Microsoft Corp 1984-1993. All rights reserved. 
1> 

unten

bekommen Was hier los? Wie baue ich TrueCrypt? Ich verwende Windows 7 64bit

+0

Darf ich höflich fragen, warum zum Teufel machst du das? –

+6

@JoelESalas: Das ist fast wie fragen, warum Linux-Leute gerne aus Quelle bauen, anstatt dann 'apt-get install' –

+0

Linux Leute bauen/baute die Quelle, weil sie" mussten ", nicht weil sie wollten ... – Logman

Antwort

29

ich erfolgreich alle Projekte von https://github.com/syglug/truecrypt bauen konnte ich folgte meist die Anweisungen von readme.txt Weil.. Die Anleitung ist nicht detailliert genug Ich beschreibe unten alle Schritte, die ich getan habe.Wenn Sie einige zusätzliche Fragen zu einigen Schritten haben, werde ich zusätzliche Details hinzufügen.

Ich habe Visual Studio 2008 auf Windows 7 X64 installiert könnte dasselbe mit Visual Studio 2010 oder 2012 reproduzieren.

  1. Ich habe von M heruntergeladen SDN (Ich habe Abonnement) Visual C++ 1.52: en_vc152.exe. Es ist eine selbst extrahierte EXE-Datei. Um Pfade möglichst kurz zu halten und keine Leerzeichen in den Verzeichnisnamen zu haben, habe ich MSVC15 direkt in C:\ extrahiert. So hatte ich zum Beispiel alte Binärdateien von 16-Bit-VC-Compiler in C:\MSVC15\BIN.
  2. Ich legte alle Dateien von ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20 in C:\PKCS-11 Verzeichnis heruntergeladen. Die Datei C:\PKCS-11\pkcs11.h wie alle abhängigen Dateien wird im selben Verzeichnis sein C:\PKCS-11
  3. Ich habe die aktuelle Version 2.10.05 von NASM von http://www.nasm.us/pub/nasm/releasebuilds/2.10.05/ heruntergeladen. Ich extrahierte nasm-2.10.05-win32.zip in C:\nasm-2.10.05 Verzeichnis. So dass nasm.exe in C:\nasm-2.10.05 gefunden werden konnte.
  4. Ich habe Binaries von Gzip for Windows heruntergeladen. Ich extrahierte gzip-1.3.12-1-bin.zip zu C:\gzip-1.3.12-1-bin. So dass C:\gzip-1.3.12-1-bin\bingzip.exe enthält.
  5. Ich hatte Windows DDK bereits im Verzeichnis C:\WinDDK\7600.16385.1 installiert.
  6. I heruntergeladen truecrypt-master.zip von https://github.com/syglug/truecrypt. Ich habe es in C:\truecrypt-master Verzeichnis extrahiert. So dass Crypto.vcproj in C:\truecrypt-master\Crypto Verzeichnis gefunden werden kann.

Weil Ich mag es nicht, die globalen Umgebungsvariablen ändern, ich die folgende Batchdatei erstellt:

SET MSVC16_ROOT=C:\MSVC15 
SET PKCS11_INC=C:\PKCS-11 
PATH=C:\nasm-2.10.05;C:\gzip-1.3.12-1-bin\bin;%PATH% 
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" 

In der letzten Zeile der Batchdatei Visual Studio 2008 gestartet werden soll (devenv.exe). Er erbt alle Umgebungsvariablen, die in CMD.EXE (dem übergeordneten Prozess, der Visual Studio 2008 gestartet hat) festgelegt wurden.

Die Lösungsdatei TrueCrypt.sln, die in readme beschrieben wird, ist nicht in den Quellen enthalten, die auf github gefunden werden. Also habe ich jede Projektdatei, die ich in Unterverzeichnissen von C:\truecrypt-master gefunden habe, geöffnet und kompiliert. Es war Crypto.vcproj (von C:\truecrypt-master\Crypto), Boot.vcproj (von C:\truecrypt-master\Boot\Windows), Driver.vcproj (von C:\truecrypt-master\Driver), Format.vcproj (von C:\truecrypt-master\Format) und Mount.vcproj (von C:\truecrypt-master\Mount).

Ich konnte alle Projekte erfolgreich kompilieren. Die einzigen kleinen Probleme waren während des Aufbaus von Format.vcproj und Mount.sln. Die Dateien Format.tlb und Mount.tlb existieren in Unterverzeichnissen. So fixierte ich die Zeilen, in denen TLB-Dateien referenziert werden in C:\truecrypt-master\Format\Format.rc und C:\truecrypt-master\Mount\Mount.rc zu

IDR_FORMAT_TLB   TYPELIB     ".\\Format\\Format.tlb" 

und

IDR_MOUNT_TLB   TYPELIB     ".\\Mount\\Mount.tlb" 

ich später den geentsprochenen Behebungen https://github.com/syglug/truecrypt in Form von Pull-Request schreiben würde.

AKTUALISIERT: Man muss in der Datei BuildDriver.cmd die Linie

set TC_BUILD_ARCH=x64 WNET 

zu

set TC_BUILD_ARCH=x64 

in der Lage sein zu bauen Treiber ändern.

Zusätzlich sollte man Linien bauen verwendet korrekte Pfade wie "$(SolutionDir)..\Crypto" und "$(SolutionDir)..\Common" (siehe nmake Optionen in Visual Studio). Wenn man TrueCrypt.sln von C:\TrueCrypt7.1a verwendet, wird es nicht benötigt.

AKTUALISIERT 2: Nachdem Sie das Projekt erstellt werden Sie in C:\TrueCrypt7.1a\Release\Setup Files oder in C:\truecrypt-master\Release\Setup Files die Dateien sehen

enter image description here

Die Datei TrueCrypt Setup.exe existiert nur in C:\TrueCrypt7.1a (über den Link heruntergeladen www.truecrypt.org, die Sie auf dem Laufenden in der Kommentar später). Wie bereits im Kommentar erwähnt, müssen Sie Visual Studio 2008 so konfigurieren, dass Windows SDK 7 anstelle von Standard 0a verwendet wird, um das Setup-Projekt erfolgreich kompilieren zu können.

Die Treiber, die kompiliert werden, sind nicht digital signiert mit Microsoft-Signatur. Daher werden die Treiber standardmäßig nicht von Windows 7 unterstützt. So überprüfen, ob der Fahrer arbeiten Sie F8 beim Booten des Computers und der Treibersignatur deaktivieren drücken müssen:

enter image description here

Danach können Sie ausführen TrueCrypt.exe (von C:\TrueCrypt7.1a\Release\Setup Files Verzeichnis zum Beispiel). Sie erhalten Warnung

enter image description here

aber die TrueCrypt.exe wird die Arbeit tun, und Sie werden

enter image description here

+0

meine Kopie der Quelle (die die SLN-Datei hat) kam aus der offizielle Seite http://www.truecrypt.org/downloads2 Konnten Sie truecrypt.exe und 'TrueCrypt Format.exe' ausführen? Ich habe versucht, kompilieren, wenn ich die andere Antwort sah (ich musste Dinge tun, bevor ich tho starten konnte) und entfernen Zitate + Ordner umbenennen, um keine Leerzeichen zu haben, die Fehler zu lösen. Aber ich bekomme den Fehler '6>. \ Setup.c (135): Fehler C2065:' PKEY_AppUserModel_ID ': nicht deklarierte Kennung', die im Setup-Projekt ist. Ich kann TrueCrypt in meinem Release-Ordner sehen, aber wenn ich es öffne bekomme ich diese zwei Fehlermeldungen http://i.imgur.com/IUyGV.png –

+0

Ich habe es mit Ihrem Schläger versucht, obwohl ich die Vars als Globals eingerichtet habe. Ich habe den Fehler '2> ERROR: In diesem Fenster ist bereits die DDK-Build-Umgebung eingestellt. Bitte öffnen Sie 2> ein neues Fenster, wenn Sie Ihre Build-Umgebung ändern oder zurücksetzen möchten. 'und nur 4 der 6 gebaut. Also habe ich VS ohne Schläger gestartet und konnte 5 der 6 bauen, so wie ich es konnte, als ich meinen ersten Kommentar schrieb. Also ich denke, meine Frage ist jetzt, dass ich das Zitat/Leerzeichen Problem gelöst habe, wie öffne ich entweder truecrypt, damit es läuft (siehe Bild für Fehlermeldungen) und wenn Sie antworten möchten, wie behebe ich den letzten Fehler PKEY_AppUserModel_ID? –

+0

Aber ich kümmere mich nicht wirklich um Setup-Dateien, so dass ich es nicht ignorieren würde. Wenn ich truecrypt.exe öffne, erhalte ich eine UAC und es heißt, dass der Herausgeber unbekannt ist, bevor ich diese zwei Fehler zeige. Hat der unbekannte Publisher etwas damit zu tun? Wie kompiliere ich es, so dass es egal ist?Ich würde gerne in der Lage sein, es auszuführen, nachdem ich kompilieren: x –

2

Sieht so aus, als ob Sie die PATH-Umgebungsvariable geändert haben und einige Ordnerpfade Zitate ("") enthalten. Windows benötigt keine Anführungszeichen mehr, um Verwechslungen mit Leerzeichen zu vermeiden. Fehler PRJ0002: Fehlerergebnis 255 zurück von ‚C: \ Windows \ SysWow64 \ cmd.exe‘.“Weggeht, wenn Sie dieses Problem beheben

+0

Ich musste den Standard-Ordnernamen umbenennen (hatte Speicherplatz und es gab einen Fehler bc aus, als ich die Anführungszeichen entfernte). Jetzt bekomme ich 5 Erfolg und nur Setup scheitert mit dem Fehler '6>. \ Setup.c (135): Fehler C2065:' PKEY_AppUserModel_ID ': nicht deklarierte Kennung' –

1

Für alle sehen, wer in diesem PKEY_AppUserModel_ID Problem stecken bleibt: es funktioniert, indem die folgenden im Setup definiert, .c vor der ersten Funktion():

EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY PKEY_AppUserModel_ID = 
{ { 0x9F4C2855, 0x9F79, 0x4B39, 
{ 0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3, } }, 5 }; 

art re Gardinen