1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-11 11:08:02 -06:00

Windows: modify travel disk creation to get binaries from within setup exe files instead of copying existing binaries. This is needed since now we only install binaries of the current architecture.

This commit is contained in:
Mounir IDRASSI
2018-04-16 00:36:59 +02:00
parent 2dc39a7c7e
commit f5cb9d1f2e
5 changed files with 174 additions and 102 deletions

View File

@@ -313,6 +313,7 @@ copy $(TargetPath) "..\Debug\Setup Files\VeraCryptExpander-x64.exe" >NUL:
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\Setup\SelfExtract.c" />
<ClCompile Include="DlgExpandVolume.cpp" /> <ClCompile Include="DlgExpandVolume.cpp" />
<ClCompile Include="ExpandVolume.c" /> <ClCompile Include="ExpandVolume.c" />
<ClCompile Include="InitDataArea.c" /> <ClCompile Include="InitDataArea.c" />

View File

@@ -22,6 +22,9 @@
<Filter Include="Resource Files\Common"> <Filter Include="Resource Files\Common">
<UniqueIdentifier>{ece6c790-f488-400d-b92d-64f73ce9f990}</UniqueIdentifier> <UniqueIdentifier>{ece6c790-f488-400d-b92d-64f73ce9f990}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\Setup">
<UniqueIdentifier>{922a1924-e0f2-4829-8ed2-eb783e03e8a5}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="DlgExpandVolume.cpp"> <ClCompile Include="DlgExpandVolume.cpp">
@@ -120,6 +123,9 @@
<ClCompile Include="..\Mount\Mount.c"> <ClCompile Include="..\Mount\Mount.c">
<Filter>Source Files\Mount</Filter> <Filter>Source Files\Mount</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\Setup\SelfExtract.c">
<Filter>Source Files\Setup</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\Common\Wipe.h"> <ClInclude Include="..\Common\Wipe.h">

View File

@@ -48,6 +48,7 @@
#include "../Common/SecurityToken.h" #include "../Common/SecurityToken.h"
#include "../Platform/Finally.h" #include "../Platform/Finally.h"
#include "../Platform/ForEach.h" #include "../Platform/ForEach.h"
#include "../Setup/SelfExtract.h"
#include <Strsafe.h> #include <Strsafe.h>
@@ -4429,49 +4430,25 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
goto stop; goto stop;
} }
if (IsNonInstallMode ())
{
// Main app 32-bit // Main app 32-bit
if (Is64BitOs () && !IsNonInstallMode ())
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt-x86.exe", appDir);
else
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt.exe", appDir); StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt.exe", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt.exe", dstDir); StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt.exe", dstDir);
if (!VerifyModuleSignature (srcPath)) if (!VerifyModuleSignature (srcPath))
{ {
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg); Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop; goto stop;
} }
else if (!TCCopyFile (srcPath, dstPath)) else if (!TCCopyFile (srcPath, dstPath))
{ {
handleWin32Error (hwndDlg, SRC_POS); handleWin32Error (hwndDlg, SRC_POS);
goto stop; goto stop;
} }
// Main app 64-bit // Main app 64-bit
if (Is64BitOs () && !IsNonInstallMode ())
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt.exe", appDir);
else
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt-x64.exe", appDir); StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt-x64.exe", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt-x64.exe", dstDir); StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt-x64.exe", dstDir);
if (!VerifyModuleSignature (srcPath))
{
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop;
}
else if (!TCCopyFile (srcPath, dstPath))
{
handleWin32Error (hwndDlg, SRC_POS);
goto stop;
}
// Wizard
if (copyWizard)
{
// Wizard 32-bit
if (Is64BitOs () && !IsNonInstallMode ())
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt Format-x86.exe", appDir);
else
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt Format.exe", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt Format.exe", dstDir);
if (!VerifyModuleSignature (srcPath)) if (!VerifyModuleSignature (srcPath))
{ {
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg); Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
@@ -4483,50 +4460,87 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
goto stop; goto stop;
} }
// Wizard 64-bit // Wizard
if (Is64BitOs () && !IsNonInstallMode ()) if (copyWizard)
{
// Wizard 32-bit
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt Format.exe", appDir); StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt Format.exe", appDir);
else StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt Format.exe", dstDir);
if (!VerifyModuleSignature (srcPath))
{
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop;
}
else if (!TCCopyFile (srcPath, dstPath))
{
handleWin32Error (hwndDlg, SRC_POS);
goto stop;
}
// Wizard 64-bit
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt Format-x64.exe", appDir); StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt Format-x64.exe", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt Format-x64.exe", dstDir); StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt Format-x64.exe", dstDir);
if (!VerifyModuleSignature (srcPath)) if (!VerifyModuleSignature (srcPath))
{ {
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg); Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop; goto stop;
} }
else if (!TCCopyFile (srcPath, dstPath)) else if (!TCCopyFile (srcPath, dstPath))
{ {
handleWin32Error (hwndDlg, SRC_POS); handleWin32Error (hwndDlg, SRC_POS);
goto stop; goto stop;
} }
}
// Expander
if (copyExpander)
{
// Expander 32-bit
if (Is64BitOs () && !IsNonInstallMode ())
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCryptExpander-x86.exe", appDir);
else
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCryptExpander.exe", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCryptExpander.exe", dstDir);
if (!VerifyModuleSignature (srcPath))
{
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop;
}
else if (!TCCopyFile (srcPath, dstPath))
{
handleWin32Error (hwndDlg, SRC_POS);
goto stop;
} }
// Expander 64-bit // Expander
if (Is64BitOs () && !IsNonInstallMode ()) if (copyExpander)
{
// Expander 32-bit
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCryptExpander.exe", appDir); StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCryptExpander.exe", appDir);
else StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCryptExpander.exe", dstDir);
if (!VerifyModuleSignature (srcPath))
{
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop;
}
else if (!TCCopyFile (srcPath, dstPath))
{
handleWin32Error (hwndDlg, SRC_POS);
goto stop;
}
// Expander 64-bit
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCryptExpander-x64.exe", appDir); StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCryptExpander-x64.exe", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCryptExpander-x64.exe", dstDir); StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCryptExpander-x64.exe", dstDir);
if (!VerifyModuleSignature (srcPath))
{
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop;
}
else if (!TCCopyFile (srcPath, dstPath))
{
handleWin32Error (hwndDlg, SRC_POS);
goto stop;
}
}
// Driver
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\veracrypt.sys", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\veracrypt.sys", dstDir);
if (!VerifyModuleSignature (srcPath))
{
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop;
}
else if (!TCCopyFile (srcPath, dstPath))
{
handleWin32Error (hwndDlg, SRC_POS);
goto stop;
}
// Driver x64
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\veracrypt-x64.sys", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\veracrypt-x64.sys", dstDir);
if (!VerifyModuleSignature (srcPath)) if (!VerifyModuleSignature (srcPath))
{ {
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg); Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
@@ -4538,33 +4552,75 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
goto stop; goto stop;
} }
} }
else
{
int fileNo = 0;
// get file from the Setup binary after checking its signature and its version
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\VeraCrypt Setup.exe", appDir);
// Driver FreeAllFileBuffers ();
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\veracrypt.sys", appDir);
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\veracrypt.sys", dstDir);
if (!VerifyModuleSignature (srcPath))
{
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop;
}
else if (!TCCopyFile (srcPath, dstPath))
{
handleWin32Error (hwndDlg, SRC_POS);
goto stop;
}
// Driver x64 if (!VerifyPackageIntegrity (srcPath) || !SelfExtractInMemory (srcPath))
StringCbPrintfW (srcPath, sizeof(srcPath), L"%s\\veracrypt-x64.sys", appDir); {
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\veracrypt-x64.sys", dstDir); MessageBoxW (hwndDlg, GetString ("DIST_PACKAGE_CORRUPTED"), lpszTitle, MB_ICONEXCLAMATION);
if (!VerifyModuleSignature (srcPath)) goto stop;
{ }
Error ("DIST_PACKAGE_CORRUPTED", hwndDlg);
goto stop; for (fileNo = 0; fileNo < NBR_COMPRESSED_FILES; fileNo++)
} {
else if (!TCCopyFile (srcPath, dstPath)) wchar_t fileName [TC_MAX_PATH] = {0};
{
handleWin32Error (hwndDlg, SRC_POS); // Filename
goto stop; StringCchCopyNW (fileName, ARRAYSIZE(fileName), Decompressed_Files[fileNo].fileName, Decompressed_Files[fileNo].fileNameLength);
if (wcscmp (fileName, L"VeraCrypt.exe") == 0)
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt.exe", dstDir);
}
else if (wcscmp (fileName, L"VeraCrypt-x64.exe") == 0)
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt-x64.exe", dstDir);
}
else if (wcscmp (fileName, L"veracrypt.sys") == 0)
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\veracrypt.sys", dstDir);
}
else if (wcscmp (fileName, L"veracrypt-x64.sys") == 0)
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\veracrypt-x64.sys", dstDir);
}
else if (copyWizard && (wcscmp (fileName, L"VeraCrypt Format.exe") == 0))
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt Format.exe", dstDir);
}
else if (copyWizard && (wcscmp (fileName, L"VeraCrypt Format-x64.exe") == 0))
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCrypt Format-x64.exe", dstDir);
}
else if (copyExpander && (wcscmp (fileName, L"VeraCryptExpander.exe") == 0))
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCryptExpander.exe", dstDir);
}
else if (copyExpander && (wcscmp (fileName, L"VeraCryptExpander-x64.exe") == 0))
{
StringCbPrintfW (dstPath, sizeof(dstPath), L"%s\\VeraCrypt\\VeraCryptExpander-x64.exe", dstDir);
}
else
continue;
if (!SaveBufferToFile (
(char *) Decompressed_Files[fileNo].fileContent,
dstPath,
Decompressed_Files[fileNo].fileLength,
FALSE, FALSE))
{
wchar_t szTmp[512];
StringCbPrintfW (szTmp, sizeof (szTmp), GetString ("CANNOT_WRITE_FILE_X"), dstPath);
MessageBoxW (hwndDlg, szTmp, lpszTitle, MB_ICONERROR | MB_SETFOREGROUND | MB_TOPMOST);
goto stop;
}
}
} }
if (strcmp (GetPreferredLangId (), "en") != 0) if (strcmp (GetPreferredLangId (), "en") != 0)
@@ -4617,6 +4673,7 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
MessageBoxW (hwndDlg, GetString ("TRAVELER_DISK_CREATED"), lpszTitle, MB_ICONINFORMATION); MessageBoxW (hwndDlg, GetString ("TRAVELER_DISK_CREATED"), lpszTitle, MB_ICONINFORMATION);
stop: stop:
FreeAllFileBuffers ();
NormalCursor (); NormalCursor ();
return 1; return 1;
} }
@@ -9329,6 +9386,7 @@ int WINAPI wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, wchar_t *lpsz
int status; int status;
atexit (localcleanup); atexit (localcleanup);
SetProcessShutdownParameters (0x100, 0); SetProcessShutdownParameters (0x100, 0);
DeobfuscateMagEndMarker ();
VirtualLock (&VolumePassword, sizeof (VolumePassword)); VirtualLock (&VolumePassword, sizeof (VolumePassword));
VirtualLock (&CmdVolumePassword, sizeof (CmdVolumePassword)); VirtualLock (&CmdVolumePassword, sizeof (CmdVolumePassword));

View File

@@ -278,6 +278,7 @@ copy $(TargetPath) "..\Debug\Setup Files\VeraCrypt-x64.exe" &gt;NUL:
</ResourceCompile> </ResourceCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\Setup\SelfExtract.c" />
<ClCompile Include="Favorites.cpp" /> <ClCompile Include="Favorites.cpp" />
<ClCompile Include="Hotkeys.c" /> <ClCompile Include="Hotkeys.c" />
<ClCompile Include="MainCom.cpp" /> <ClCompile Include="MainCom.cpp" />

View File

@@ -19,6 +19,9 @@
<Filter Include="Resource Files\Common"> <Filter Include="Resource Files\Common">
<UniqueIdentifier>{f805ede6-c210-4210-95ce-e33edb12bc27}</UniqueIdentifier> <UniqueIdentifier>{f805ede6-c210-4210-95ce-e33edb12bc27}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\Setup">
<UniqueIdentifier>{3bd21420-974d-4264-8daa-807c240fbed7}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Favorites.cpp"> <ClCompile Include="Favorites.cpp">
@@ -102,6 +105,9 @@
<ClCompile Include="..\Common\Xts.c"> <ClCompile Include="..\Common\Xts.c">
<Filter>Source Files\Common</Filter> <Filter>Source Files\Common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\Setup\SelfExtract.c">
<Filter>Source Files\Setup</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Midl Include="MainCom.idl"> <Midl Include="MainCom.idl">