Как создать TrueCrypt в Windows?
Я пытаюсь скомпилировать TrueCrypt. Я использую инструкции https://github.com/syglug/truecrypt.
Я установил три переменные окружения (pkcs
, ddk
, MSVC16_ROOT
) и открыл проект в msvc2008. Это не было в инструкциях, но мне нужно было установить NASM, чтобы я установил его и поставил NASM в PATH. Теперь, когда я построю, я получу ниже. Он заканчивается, даже несмотря на то, что IDE имеет возможность отменить сборку, компилятор ничего не делает и система простаивает.
Crypto.lib существует после этого шага
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)
Это просто зависает. Он не использует какой-либо процессор, IDE, похоже, не знает, что он не прошел или остановился. При повторном запуске я получаю это
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.
У меня установлен msvc2012, поэтому я тоже попробовал. Я получаю те же проблемы
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
Когда я отменяю/строю снова, я получаю ниже
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>
Что здесь не так? Как создать TrueCrypt? Я запускаю Windows 7 64bits
Ответы
Ответ 1
Я мог бы успешно построить все проекты из https://github.com/syglug/truecrypt. Я следовал главным образом инструкциям readme.txt. Поскольку инструкция недостаточно детальная, я описываю ниже все шаги, которые я сделал. Если у вас появятся дополнительные вопросы к некоторым шагам, я добавлю дополнительные сведения.
Я использовал Visual Studio 2008, установленную в Windows 7 X64. При необходимости я мог бы воспроизвести то же самое с Visual Studio 2010 или 2012.
- Я загрузил из MSDN (у меня есть подписка) Visual С++ 1.52: en_vc152.exe. Он сам извлекает EXE файл. Чтобы удерживать Пути в основном короткие и не содержать пробелов в именах каталогов, я извлек
MSVC15
непосредственно в C:\
. Поэтому у меня были, например, старые двоичные файлы 16-битного компилятора VC в C:\MSVC15\BIN
.
- Я поместил все файлы, загруженные из ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20 в каталог
C:\PKCS-11
. Файл C:\PKCS-11\pkcs11.h
, как и все зависимые файлы, будет находиться в одном каталоге C:\PKCS-11
- Я загрузил текущую версию 2.10.05 NASM из http://www.nasm.us/pub/nasm/releasebuilds/2.10.05/. Я извлек nasm-2.10.05-win32.zip в директорию
C:\nasm-2.10.05
. Так что nasm.exe
можно найти в C:\nasm-2.10.05
.
- Я загрузил Binaries Gzip для Windows, Я извлек
gzip-1.3.12-1-bin.zip
в C:\gzip-1.3.12-1-bin
. Так что C:\gzip-1.3.12-1-bin\bin
содержит gzip.exe
.
- Я уже установил Windows DDK в каталог
C:\WinDDK\7600.16385.1
раньше.
- Я загрузил truecrypt-master.zip из https://github.com/syglug/truecrypt. Я извлек его в директорию
C:\truecrypt-master
. Чтобы Crypto.vcproj
можно было найти в каталоге C:\truecrypt-master\Crypto
.
Поскольку мне не нравится изменять глобальные переменные среды, я создал следующий командный файл:
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"
В последней строке командного файла будет запущена Visual Studio 2008 (devenv.exe
). Он наследует все переменные среды, установленные в CMD.EXE(родительский процесс, который запустил Visual Studio 2008).
Файл решения "TrueCrypt.sln", описанный в readme, не включен в источники, найденные в github. Поэтому я открыл каждый файл проекта, который я нашел в подкаталогах C:\truecrypt-master
, и скомпилировал его. Это было Crypto.vcproj
(от C:\truecrypt-master\Crypto
), Boot.vcproj
(от C:\truecrypt-master\Boot\Windows
), Driver.vcproj
(от C:\truecrypt-master\Driver
), Format.vcproj
(от C:\truecrypt-master\Format
) и Mount.vcproj
(от C:\truecrypt-master\Mount
).
Я мог бы скомпилировать все проекты. Единственные небольшие проблемы были при построении Format.vcproj
и Mount.sln
. В подкаталогах существуют файлы Format.tlb
и Mount.tlb
. Поэтому я исправил строки, на которые ссылаются файлы TLB в C:\truecrypt-master\Format\Format.rc
и C:\truecrypt-master\Mount\Mount.rc
на
IDR_FORMAT_TLB TYPELIB ".\\Format\\Format.tlb"
и
IDR_MOUNT_TLB TYPELIB ".\\Mount\\Mount.tlb"
Я отправлю позже исправленные исправления в https://github.com/syglug/truecrypt в форме запроса Pull.
ОБНОВЛЕНО: нужно изменить в файле BuildDriver.cmd
строку
set TC_BUILD_ARCH=x64 WNET
к
set TC_BUILD_ARCH=x64
чтобы иметь возможность создавать драйвер.
Кроме того, нужно строить строки, используя правильные шаблоны, такие как "$(SolutionDir)..\Crypto"
и "$(SolutionDir)..\Common"
(см. параметры nmake в Visual Studio). Если вы используете TrueCrypt.sln
из C:\TrueCrypt7.1a
, он не нужен.
ОБНОВЛЕНО 2. После компиляции проекта вы увидите в C:\TrueCrypt7.1a\Release\Setup Files
или в C:\truecrypt-master\Release\Setup Files
файлы
![enter image description here]()
Файл TrueCrypt Setup.exe
существует только в C:\TrueCrypt7.1a
(скачан по ссылке www.truecrypt.org, который вы отправили в комментарии позже), Как я уже упоминал в комментарии, прежде чем вам нужно настроить Visual Studio 2008 на использование Windows SDK 7 вместо стандартного 6.0a, чтобы успешно скомпилировать проект установки.
Драйверы, которые будут скомпилированы, не подписываются с подписью Microsoft. Таким образом, драйверам не будет доверять Windows 7 по умолчанию. Чтобы убедиться, что драйвер работает, вы должны нажать F8 во время загрузки компьютера и отключить подпись драйвера:
![enter image description here]()
После этого вы сможете выполнить TrueCrypt.exe
(например, из C:\TrueCrypt7.1a\Release\Setup Files
). Вы получите предупреждение
![enter image description here]()
но TrueCrypt.exe
будет работать, и вы увидите
![enter image description here]()
Ответ 2
Похоже, вы изменили переменную среды PATH, а некоторые пути к папке содержат отметки кавычек ( "). Windows больше не нуждается в котировках, чтобы избежать путаницы с пробелами. Ошибка PRJ0002: Результат ошибки 255, возвращенный из" C:\Windows\SysWow64\cmd.exe", уходит после исправления.
Ответ 3
Для всех, кто застревает в этой проблеме PKEY_AppUserModel_ID: он работает, определяя следующее в Setup.c перед первой функцией():
EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY PKEY_AppUserModel_ID =
{ { 0x9F4C2855, 0x9F79, 0x4B39,
{ 0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3, } }, 5 };
С уважением