From 4519bb494e7c88890aa0022d4aaabffb0b6d8faf Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Mon, 16 Apr 2018 23:48:54 +0200 Subject: [PATCH] Windows: implement compatibility for Windows 10 major updates using ReflectDrivers mechanism whose support started from Windows 10 version 1607. --- src/Common/BaseCom.cpp | 24 +++++ src/Common/BaseCom.h | 1 + src/Common/BootEncryption.cpp | 59 ++++++++++ src/Common/BootEncryption.h | 2 +- src/Common/Dlgcode.c | 125 ++++++++++++++++++++++ src/Common/Dlgcode.h | 3 + src/Format/FormatCom.cpp | 5 + src/Format/FormatCom.idl | 3 +- src/Mount/MainCom.cpp | 5 + src/Mount/MainCom.idl | 3 +- src/Release/Setup Files/veracrypt-x64.cat | Bin 0 -> 10590 bytes src/Release/Setup Files/veracrypt-x64.sys | Bin 828688 -> 828688 bytes src/Release/Setup Files/veracrypt.Inf | 80 ++++++++++++++ src/Release/Setup Files/veracrypt.cat | Bin 0 -> 10558 bytes src/Release/Setup Files/veracrypt.sys | Bin 768528 -> 768528 bytes src/Setup/ComSetup.cpp | 12 +-- src/Setup/Setup.c | 76 ++----------- src/Setup/Setup.h | 5 + 18 files changed, 326 insertions(+), 77 deletions(-) create mode 100644 src/Release/Setup Files/veracrypt-x64.cat create mode 100644 src/Release/Setup Files/veracrypt.Inf create mode 100644 src/Release/Setup Files/veracrypt.cat diff --git a/src/Common/BaseCom.cpp b/src/Common/BaseCom.cpp index e8c75a68..738e44cf 100644 --- a/src/Common/BaseCom.cpp +++ b/src/Common/BaseCom.cpp @@ -429,5 +429,29 @@ DWORD BaseCom::WriteEfiBootSectorUserConfig (DWORD userConfig, BSTR customUserMe return ERROR_EXCEPTION_IN_SERVICE; } + return ERROR_SUCCESS; +} + +DWORD BaseCom::UpdateSetupConfigFile (BOOL bForInstall) +{ + try + { + BootEncryption bootEnc (NULL); + bootEnc.UpdateSetupConfigFile (bForInstall? true : false); + } + catch (SystemException &) + { + return GetLastError(); + } + catch (Exception &e) + { + e.Show (NULL); + return ERROR_EXCEPTION_IN_SERVICE; + } + catch (...) + { + return ERROR_EXCEPTION_IN_SERVICE; + } + return ERROR_SUCCESS; } \ No newline at end of file diff --git a/src/Common/BaseCom.h b/src/Common/BaseCom.h index e91f75af..eb89dd8e 100644 --- a/src/Common/BaseCom.h +++ b/src/Common/BaseCom.h @@ -117,6 +117,7 @@ public: static DWORD RestoreEfiSystemLoader (); static DWORD GetEfiBootDeviceNumber (BSTR* pSdn); static DWORD WriteEfiBootSectorUserConfig (DWORD userConfig, BSTR customUserMessage, int pim, int hashAlg); + static DWORD UpdateSetupConfigFile (BOOL bForInstall); }; diff --git a/src/Common/BootEncryption.cpp b/src/Common/BootEncryption.cpp index 55eafb75..b57f5c28 100644 --- a/src/Common/BootEncryption.cpp +++ b/src/Common/BootEncryption.cpp @@ -396,6 +396,18 @@ namespace VeraCrypt } } + static void UpdateSetupConfigFile (bool bForInstall) + { + Elevate(); + + DWORD result = ElevatedComInstance->UpdateSetupConfigFile (bForInstall ? TRUE : FALSE); + if (result != ERROR_SUCCESS) + { + SetLastError (result); + throw SystemException(SRC_POS); + } + } + static void Release () { if (--ReferenceCount == 0 && ElevatedComInstance) @@ -470,6 +482,7 @@ namespace VeraCrypt static void RestoreEfiSystemLoader () { throw ParameterIncorrect (SRC_POS); } static void GetEfiBootDeviceNumber (PSTORAGE_DEVICE_NUMBER pSdn) { throw ParameterIncorrect (SRC_POS); } static void WriteEfiBootSectorUserConfig (byte userConfig, const string &customUserMessage, int pim, int hashAlg) { throw ParameterIncorrect (SRC_POS); } + static void UpdateSetupConfigFile (bool bForInstall) { throw ParameterIncorrect (SRC_POS); } }; #endif // SETUP @@ -2685,6 +2698,27 @@ namespace VeraCrypt return conf.Save (path.c_str(), hwndDlg); } + void BootEncryption::UpdateSetupConfigFile (bool bForInstall) + { + // starting from Windows 10 1607 (Build 14393), ReflectDrivers in Setupconfig.ini is supported + if (IsOSVersionAtLeast (WIN_10, 0) && CurrentOSBuildNumber >= 14393) + { + wchar_t szInstallPath [TC_MAX_PATH]; + wchar_t szSetupconfigLocation [TC_MAX_PATH + 20]; + + if (bForInstall) + GetInstallationPath (NULL, szInstallPath, ARRAYSIZE (szInstallPath), NULL); + if (GetSetupconfigLocation (szSetupconfigLocation, ARRAYSIZE (szSetupconfigLocation))) + { + ::CreateDirectoryW (szSetupconfigLocation, NULL); + + StringCchCatW (szSetupconfigLocation, ARRAYSIZE (szSetupconfigLocation), L"SetupConfig.ini"); + + WritePrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", bForInstall? szInstallPath : NULL, szSetupconfigLocation); + } + } + } + void BootEncryption::InstallBootLoader (bool preserveUserConfig, bool hiddenOSCreation, int pim, int hashAlg) { Device device (GetSystemDriveConfiguration().DevicePath); @@ -2851,6 +2885,15 @@ namespace VeraCrypt device.SeekAt (TC_SECTOR_SIZE_BIOS); device.Write (bootLoaderBuf + TC_SECTOR_SIZE_BIOS, sizeof (bootLoaderBuf) - TC_SECTOR_SIZE_BIOS); } + + if (!IsAdmin() && IsUacSupported()) + { + Elevator::UpdateSetupConfigFile (true); + } + else + { + UpdateSetupConfigFile (true); + } } #ifndef SETUP @@ -3786,6 +3829,22 @@ namespace VeraCrypt device.SeekAt (0); device.Write (bootLoaderBuf, sizeof (bootLoaderBuf)); } + + // starting from Windows 10 1607 (Build 14393), ReflectDrivers in Setupconfig.ini is supported + if (IsOSVersionAtLeast (WIN_10, 0) && CurrentOSBuildNumber >= 14393) + { + wchar_t szSetupconfigLocation [TC_MAX_PATH + 20]; + + if (GetSetupconfigLocation (szSetupconfigLocation, ARRAYSIZE (szSetupconfigLocation))) + { + StringCchCatW (szSetupconfigLocation, ARRAYSIZE (szSetupconfigLocation), L"SetupConfig.ini"); + + if (FileExists (szSetupconfigLocation)) + { + WritePrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", NULL, szSetupconfigLocation); + } + } + } } #endif // SETUP diff --git a/src/Common/BootEncryption.h b/src/Common/BootEncryption.h index f63ec541..6eb42b50 100644 --- a/src/Common/BootEncryption.h +++ b/src/Common/BootEncryption.h @@ -310,7 +310,7 @@ namespace VeraCrypt void GetEfiBootDeviceNumber (PSTORAGE_DEVICE_NUMBER pSdn); void BackupSystemLoader (); void RestoreSystemLoader (); - + void UpdateSetupConfigFile (bool bForInstall); protected: static const uint32 RescueIsoImageSize = 1835008; // Size of ISO9660 image with bootable emulated 1.44MB floppy disk image diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c index 347f1207..03e0d6c8 100644 --- a/src/Common/Dlgcode.c +++ b/src/Common/Dlgcode.c @@ -147,6 +147,7 @@ OSVersionEnum nCurrentOS = WIN_UNKNOWN; int CurrentOSMajor = 0; int CurrentOSMinor = 0; int CurrentOSServicePack = 0; +int CurrentOSBuildNumber = 0; BOOL RemoteSession = FALSE; BOOL UacElevated = FALSE; @@ -344,6 +345,13 @@ static unsigned char gpbSha1CodeSignCertFingerprint[64] = { 0x40, 0xCE, 0x17, 0x6C }; +typedef HRESULT (WINAPI *SHGETKNOWNFOLDERPATH) ( + _In_ REFKNOWNFOLDERID rfid, + _In_ DWORD dwFlags, + _In_opt_ HANDLE hToken, + _Out_ PWSTR *ppszPath +); + /* Windows dialog class */ #define WINDOWS_DIALOG_CLASS L"#32770" @@ -2663,6 +2671,7 @@ void InitOSVersionInfo () CurrentOSMajor = os.dwMajorVersion; CurrentOSMinor = os.dwMinorVersion; CurrentOSServicePack = os.wServicePackMajor; + CurrentOSBuildNumber = os.dwBuildNumber; if (os.dwPlatformId == VER_PLATFORM_WIN32_NT && CurrentOSMajor == 5 && CurrentOSMinor == 0) nCurrentOS = WIN_2000; @@ -13520,3 +13529,119 @@ BOOL VerifyModuleSignature (const wchar_t* path) return bResult; } + +void GetInstallationPath (HWND hwndDlg, wchar_t* szInstallPath, DWORD cchSize, BOOL* pbInstallPathDetermined) +{ + HKEY hkey; + BOOL bInstallPathDetermined = FALSE; + wchar_t path[MAX_PATH+20]; + ITEMIDLIST *itemList; + + memset (szInstallPath, 0, cchSize * sizeof (wchar_t)); + + // Determine if VeraCrypt is already installed and try to determine its "Program Files" location + if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\VeraCrypt", 0, KEY_READ | KEY_WOW64_32KEY, &hkey) == ERROR_SUCCESS) + { + /* Default 'UninstallString' registry strings written by VeraCrypt: + ------------------------------------------------------------------------------------ + 5.0+ "C:\Program Files\VeraCrypt\VeraCrypt Setup.exe" /u + */ + + wchar_t rv[MAX_PATH*4]; + DWORD size = sizeof (rv); + if (RegQueryValueEx (hkey, L"UninstallString", 0, 0, (LPBYTE) &rv, &size) == ERROR_SUCCESS && wcsrchr (rv, L'/')) + { + size_t len = 0; + + // Cut and paste the location (path) where VeraCrypt is installed to InstallationPath + if (rv[0] == L'"') + { + len = wcsrchr (rv, L'/') - rv - 2; + StringCchCopyNW (szInstallPath, cchSize, rv + 1, len); + szInstallPath [len] = 0; + bInstallPathDetermined = TRUE; + + if (szInstallPath [wcslen (szInstallPath) - 1] != L'\\') + { + len = wcsrchr (szInstallPath, L'\\') - szInstallPath; + szInstallPath [len] = 0; + } + } + + } + RegCloseKey (hkey); + } + + if (!bInstallPathDetermined) + { + /* VeraCrypt is not installed or it wasn't possible to determine where it is installed. */ + + // Default "Program Files" path. + SHGetSpecialFolderLocation (hwndDlg, CSIDL_PROGRAM_FILES, &itemList); + SHGetPathFromIDList (itemList, path); + + if (Is64BitOs()) + { + // Use a unified default installation path (registry redirection of %ProgramFiles% does not work if the installation path is user-selectable) + wstring s = path; + size_t p = s.find (L" (x86)"); + if (p != wstring::npos) + { + s = s.substr (0, p); + if (_waccess (s.c_str(), 0) != -1) + StringCbCopyW (path, sizeof (path), s.c_str()); + } + } + + StringCbCatW (path, sizeof(path), L"\\VeraCrypt\\"); + StringCbCopyW (szInstallPath, cchSize, path); + } + + // Make sure the path ends with a backslash + if (szInstallPath [wcslen (szInstallPath) - 1] != L'\\') + { + StringCbCatW (szInstallPath, cchSize, L"\\"); + } + + if (pbInstallPathDetermined) + *pbInstallPathDetermined = bInstallPathDetermined; +} + +BOOL GetSetupconfigLocation (wchar_t* path, DWORD cchSize) +{ + wchar_t szShell32Path[MAX_PATH] = {0}; + HMODULE hShell32 = NULL; + BOOL bResult = FALSE; + + path[0] = 0; + + if (GetSystemDirectory(szShell32Path, MAX_PATH)) + StringCchCatW (szShell32Path, MAX_PATH, L"\\Shell32.dll"); + else + StringCchCopyW (szShell32Path, MAX_PATH, L"C:\\Windows\\System32\\Shell32.dll"); + + hShell32 = LoadLibrary (szShell32Path); + if (hShell32) + { + SHGETKNOWNFOLDERPATH SHGetKnownFolderPathFn = (SHGETKNOWNFOLDERPATH) GetProcAddress (hShell32, "SHGetKnownFolderPath"); + if (SHGetKnownFolderPathFn) + { + wchar_t* pszUsersPath = NULL; + if (S_OK == SHGetKnownFolderPathFn (FOLDERID_UserProfiles, 0, NULL, &pszUsersPath)) + { + StringCchPrintfW (path, cchSize, L"%s\\Default\\AppData\\Local\\Microsoft\\Windows\\WSUS\\", pszUsersPath); + CoTaskMemFree (pszUsersPath); + bResult = TRUE; + } + } + FreeLibrary (hShell32); + } + + if (!bResult && CurrentOSMajor >= 10) + { + StringCchPrintfW (path, cchSize, L"%c:\\Users\\Default\\AppData\\Local\\Microsoft\\Windows\\WSUS\\", szShell32Path[0]); + bResult = TRUE; + } + + return bResult; +} diff --git a/src/Common/Dlgcode.h b/src/Common/Dlgcode.h index 5d10db35..ea2828fd 100644 --- a/src/Common/Dlgcode.h +++ b/src/Common/Dlgcode.h @@ -135,6 +135,7 @@ extern OSVersionEnum nCurrentOS; extern int CurrentOSMajor; extern int CurrentOSMinor; extern int CurrentOSServicePack; +extern int CurrentOSBuildNumber; extern BOOL RemoteSession; extern HANDLE hDriver; extern HINSTANCE hInst; @@ -529,6 +530,8 @@ BOOL RaisePrivileges(void); BOOL DeleteDirectory (const wchar_t* szDirName); INT_PTR SecureDesktopDialogBoxParam (HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); BOOL VerifyModuleSignature (const wchar_t* path); +void GetInstallationPath (HWND hwndDlg, wchar_t* szInstallPath, DWORD cchSize, BOOL* pbInstallPathDetermined); +BOOL GetSetupconfigLocation (wchar_t* path, DWORD cchSize); #ifdef __cplusplus } diff --git a/src/Format/FormatCom.cpp b/src/Format/FormatCom.cpp index 1bfb4be9..5df23f19 100644 --- a/src/Format/FormatCom.cpp +++ b/src/Format/FormatCom.cpp @@ -172,6 +172,11 @@ public: return BaseCom::WriteEfiBootSectorUserConfig (userConfig, customUserMessage,pim, hashAlg); } + virtual DWORD STDMETHODCALLTYPE UpdateSetupConfigFile (BOOL bForInstall) + { + return BaseCom::UpdateSetupConfigFile (bForInstall); + } + protected: DWORD MessageThreadId; LONG RefCount; diff --git a/src/Format/FormatCom.idl b/src/Format/FormatCom.idl index 855d024b..970fe568 100644 --- a/src/Format/FormatCom.idl +++ b/src/Format/FormatCom.idl @@ -16,7 +16,7 @@ import "..\Common\Password.h"; [ uuid(56327DDA-F1A7-4e13-B128-520D129BDEF6), helpstring("VeraCrypt Format UAC Support Library"), - version(2.7) // Update ComSetup.cpp when changing version number + version(2.8) // Update ComSetup.cpp when changing version number ] library TrueCryptFormatCom { @@ -47,6 +47,7 @@ library TrueCryptFormatCom DWORD RestoreEfiSystemLoader (); DWORD GetEfiBootDeviceNumber (BSTR* pSdn); DWORD WriteEfiBootSectorUserConfig (DWORD userConfig, BSTR customUserMessage, int pim, int hashAlg); + DWORD UpdateSetupConfigFile (BOOL bForInstall); }; [ diff --git a/src/Mount/MainCom.cpp b/src/Mount/MainCom.cpp index eb1f5921..f3ce90b2 100644 --- a/src/Mount/MainCom.cpp +++ b/src/Mount/MainCom.cpp @@ -193,6 +193,11 @@ public: return BaseCom::WriteEfiBootSectorUserConfig (userConfig, customUserMessage,pim, hashAlg); } + virtual DWORD STDMETHODCALLTYPE UpdateSetupConfigFile (BOOL bForInstall) + { + return BaseCom::UpdateSetupConfigFile (bForInstall); + } + protected: DWORD MessageThreadId; LONG RefCount; diff --git a/src/Mount/MainCom.idl b/src/Mount/MainCom.idl index a1ab3cd7..25bb80ce 100644 --- a/src/Mount/MainCom.idl +++ b/src/Mount/MainCom.idl @@ -16,7 +16,7 @@ import "..\Common\Password.h"; [ uuid(9ACF6176-5FC4-4690-A025-B3306A50EB6A), helpstring("VeraCrypt Main UAC Support Library"), - version(2.9) // Update ComSetup.cpp when changing version number + version(2.10) // Update ComSetup.cpp when changing version number ] library TrueCryptMainCom { @@ -51,6 +51,7 @@ library TrueCryptMainCom DWORD RestoreEfiSystemLoader (); DWORD GetEfiBootDeviceNumber (BSTR* pSdn); DWORD WriteEfiBootSectorUserConfig (DWORD userConfig, BSTR customUserMessage, int pim, int hashAlg); + DWORD UpdateSetupConfigFile (BOOL bForInstall); }; [ diff --git a/src/Release/Setup Files/veracrypt-x64.cat b/src/Release/Setup Files/veracrypt-x64.cat new file mode 100644 index 0000000000000000000000000000000000000000..37a162c271335c2859575879dd4f1ff99d595920 GIT binary patch literal 10590 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 PZyHP4+BW8BOSJzVZF$db literal 0 HcmV?d00001 diff --git a/src/Release/Setup Files/veracrypt-x64.sys b/src/Release/Setup Files/veracrypt-x64.sys index 6c5227e76ae984789f50d05b24e0d42cd48ef576..f998a592ef5e14b929a3adebcb0e3a6ff64a8521 100644 GIT binary patch delta 3741 zcmai1c{G%58=q&!lJQ_)AGMgn@EFmIN$XI%5>|`5+7>1~qvZcqCB{Fs)jWu~i zQO1%)*0LlbO39MG>3ch!_xrxi`JQur&+mDz>zv;o*M0x4`?{05aY@~{JODv7?oUMk zrf_kYR0}{C7_LnNv;Zdc!=2%PRINJe^Mg#{JSzW#2p35_Ov;EecLb!O7v|#@<^d+) zOdyzGp)bs{?(_Pg8OLtP#soVPyO`i$0!e4LPlj?eK@ngOYS9FxfV8$&&D2z611u)PuMMXcOxHBUu8B=4C6)L^x87lXfDOBUG zk26&WJ*w$@yo?i;Si9zmbc~1&f1_q0k?s>^ZjkZOu>jY&b3i$5dr5XPOI1cC^Q5Q0 zpLe|#OSND3Uy55C3U^&evinLO94y~AU-M2X$J|R-iPv1~^&><1b)$3B`NVA`a;v)@ z`d*a8E$=YFxWv+A-q-7WOk`Z!T`iw#qz^r|1-mE&ECGYT;qhujjMT3}aj;TGKqly3e_HSIm|oQH1k?pk+f<2k&sQ=Q&k)S@{lMe8@3w;H?4 z-q}cUnk-|l7xAe}e!hEvuJYh+!>5m)+np;}0;g&ys1VLWY;(J`cSID#nzq&|LM8TC zLyz^Qh6=2?s`dpM-WOhf+*>E{zIZpC5Z~A_b%1|J37gWi4S=UzpcD` z{?0b%M5r+r;!0(gj72RspM{N|#3=MdqK#Y^#l6rNZOO~hvVQ!lV2HA;)y%uljmZ9m z#Qw@_gJ(}&EOtNb7j!MxB3fW6d0ENGo`$&OVJ zxTyMUV$v$$)z!Bkel0?!qJMkj>5)C1=9MKb26+y#Cf%$dw`qL!Id;5B5d{7 zOwabg;HwOjB30=u@5Ex2!>cKGOXuFQ)b^_W3>J?XnH&U!Vef>+9fr_E=K z^xXZ9?wDV_=*+6x%z4{MA-oN50)IbV?x-Hp#5b_1cj4+fjgqsE*6`G5Iq$`r5+8l? zAL@?DmDwJ_w`C`i8eMWusGcC~cQWs(zQq_pPKpR^nj{0m%6f|r)Yjw7+pXQ*Mj0t- z3V{vUMQ>hq&#HG&g+_cLP#+;1G8k?!@hD)a|5Gm&<=?um#w5gLPRrxcBL7Q zEaIvVKDA&B>wV1~gQ~ zBf2-#BU|#}g+1V%n6TA1%Q%Oc>owkQ+xHR^DzD|F0Kss@p|t`4X~v2kRIv3vH8nyb zsr2gxjwilkctEoV!!=R&4)X&qI)X_KI@ohqUqw;8WuqGY>*REPOBOz^VSjOWwmtcB z8OV7xjup|PN1-)2jLnr)DJS$f5tCGf~>A@37tp$6oJu9#nWhiO->C1w74NP}q zgF&HWK&asH!Az(K>K{TT!*8^W_Z^iWoN$+TKsNgxY3Hee=6BIZH%D(nQ%Jg8CZ6>!P+%D?4P;D2+1zz9ClZq0P9FkXBX1{)r34D>63q4IgBlgxT(~ z6SJ#B?dCR*e^=(ZHIjzK9@C#{S2%OoJg%$pH20+{lD0W&U;U!@DowG)e3O$Wi_;^< zg~F0~L>sMrXC7S(8!$RSazm+~+CLtd9UFo-#EkO$o4x3;r6`+rglG!u@%oy+9ys!K z>s~iT9)iR5jHv7asaXse^n&cOm8e&J>c`pYMSaLhZP&7!zKja*Ha!Dm&cC*#cFF8L zJx;NW8RrQ+tq6puE{x9^AJY%a{jyBk#D>%k|+ z3<*K2$>3?Na)}0BoMP{{vznuWdFY3W4=w64_9w-?2)}8duz2M<5za=eDZ1WySdgjn z(=J#n9;=~@(|{-`U@|urr?0Mr$EXpM)Ua3_B$^5;0Nr$>RPYKLPx+q`&7lKX{%ijp z7|Nlk3^1FQKosC&DjmeAW7SpFR0%{VDFuxDjgB0on*~Zx@*k}ox^q1Mn=hbaR~EdB zUed2u+B7*v-e^>{@`&LWE@|32vo1K&d8bxyep42Bc3Aau1m}!Ny2A6=G#OUAi6$*B z6{q)!BMIax^>~3SPj#B{T|$NbldGSjp5?zdTKuV+wRoMz-l#KDoQO5Jwd8bQ$|Ea8 zvGMKaz4v7)F_Zz3JM#FubAKs?q?cWp<`HuV%N!PT@QPa1_=7B}NuwKO9OR_SIkhX1H0g=7Tbd zO%MIn<|tHk$!T|kv&ktn>y2A~pkvyGx8C@m6a_AykN7K5l#l;IB>Sp4q%_mA*(I-* z?nroPLIKXgN}c-H5vFas?IFdOT*j(_*XPYOHY6h}J*;F#byunj*m11b$eg~;suk>4 zdKcO1cVQ=tZ^j+Q_Mu8rcB&(yLd_%Fmnt9+pK5JxmnhT*JguzthvHMf%fH=Z zq+E~>eb84X9{nU_{2XZiET7Ei#a6MqE=KLZ#t zM)RlfVr-Di0YDL>fI-4pVG~RNH~_=2GhcA{!L^?sdoTZ;z4XxxdXfifAlUQ8p%o(# zO)+(CDtg;A=(@{#)2;-`*J8Dp_waFBwM)2PhaKmvtkD5`WNA&FpD}~D70F$9UFv)# zvFf|itU(ouK72traZ$tXNO(^}l{dES4c1N|4-z_Qb6Bb?KsB|sayh>ShkHjD#eMyA zzZHl1**#-&xq@dpUF&jnzN(Vb5`v@a85EtCFNOPq`7_6Q^6G*+b~r)?a?MPp|E#6; zPE~STykZ>sY^tX9rt3v`-7B!C_1!Z}#kM_1HH+Kf#(gzB=o|9)o!_%h4awCGQ?tdC ziORc|9i$~nayE9kh?IQHKvg=YjRmB-=POPIWQ6llKcYnGxxqPv%IJ|q3ES9V;3#}G z5)!x#ru)Uyy|QfD0#xGY`2@2= zBgT4$lw(E>t!L(zB9s=<%EDp~<7^MWJjoBsP!~*Ji(LagoufvZxeW3$X5#nSq4qwP zwI}-y4qr1F8V}NVG_ZBPOnb=i8%(<^CxZH1HI-_Ao}qH=Nm?w!#&_An%hAD$40~z- zk1jEsyoH;z+#?iJ);9~UZc6x$(Jx{g)4gpotF4{yFIo~x1z(iM+~9M&ZPtjd*IJ*u t_1v@*Nq7pUhgZmW)=ikqZ=8Pmvhx+*lE>TYgGJ85sWP`R^oJi!{9m^DZ?ymb delta 3786 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 diff --git a/src/Release/Setup Files/veracrypt.Inf b/src/Release/Setup Files/veracrypt.Inf new file mode 100644 index 00000000..57f7f0af --- /dev/null +++ b/src/Release/Setup Files/veracrypt.Inf @@ -0,0 +1,80 @@ +;;; +;;; VeraCrypt +;;; +;;; +;;; Copyright (c) 2018, IDRIX +;;; + +[Version] +signature = "$Windows NT$" +Class = "Encryption" ;This is determined by the work this filter driver does +ClassGuid = {a0a701c0-a511-42ff-aa6c-06dc0395576f} ;This value is determined by the Class +Provider = %ProviderString% +DriverVer = 04/14/2018,1.23.0.0 +CatalogFile = veracrypt.cat + + +[DestinationDirs] +DefaultDestDir = 12 +MiniFilter.DriverFiles = 12 ;%windir%\system32\drivers + +;; +;; Default install sections +;; + +[DefaultInstall] +OptionDesc = %ServiceDescription% +CopyFiles = MiniFilter.DriverFiles + +[DefaultInstall.Services] +AddService = %ServiceName%,,MiniFilter.Service + +;; +;; Default uninstall sections +;; + +[DefaultUninstall] +DelFiles = MiniFilter.DriverFiles + +[DefaultUninstall.Services] +DelService = veracrypt,0x200 ;Ensure service is stopped before deleting + +; +; Services Section +; + +[MiniFilter.Service] +DisplayName = %ServiceName% +Description = %ServiceDescription% +ServiceBinary = %12%\%DriverName%.sys ;%windir%\system32\drivers\ +Dependencies = "FltMgr" +ServiceType = 2 ;SERVICE_FILE_SYSTEM_DRIVER +;StartType = 0 ;SERVICE_BOOT_START +StartType = 3 ;SERVICE_DEMAND_START +ErrorControl = 1 ;SERVICE_ERROR_NORMAL +LoadOrderGroup = "FSFilter Encryption" + +; +; Copy Files +; + +[MiniFilter.DriverFiles] +%DriverName%.sys + +[SourceDisksFiles] +veracrypt.sys = 1,, + +[SourceDisksNames] +1 = %DiskId1%,,, + +;; +;; String Section +;; + +[Strings] +ProviderString = "IDRIX" +ServiceDescription = "veracrypt" +ServiceName = "veracrypt" +DriverName = "veracrypt" +DiskId1 = "VeraCrypt Device Installation Disk" + diff --git a/src/Release/Setup Files/veracrypt.cat b/src/Release/Setup Files/veracrypt.cat new file mode 100644 index 0000000000000000000000000000000000000000..a7702aa91f199a49819da18b0bc36c13c52ab8c6 GIT binary patch literal 10558 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 LJI^s?b-eq3K6=LT literal 0 HcmV?d00001 diff --git a/src/Release/Setup Files/veracrypt.sys b/src/Release/Setup Files/veracrypt.sys index 832ca495ca696a67079c1085fe1e437a932b3a40..bf33021aeb08a454f480aaa00a8da18c6b8a115e 100644 GIT binary patch delta 3767 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 VvX3F>+H+2owm-JU?CdW){|7&~VDkU~ delta 3812 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 K$&tRD3i~gT!(ws( diff --git a/src/Setup/ComSetup.cpp b/src/Setup/ComSetup.cpp index 8d59a3f7..64078076 100644 --- a/src/Setup/ComSetup.cpp +++ b/src/Setup/ComSetup.cpp @@ -11,10 +11,10 @@ */ #define TC_MAIN_COM_VERSION_MAJOR 2 -#define TC_MAIN_COM_VERSION_MINOR 9 +#define TC_MAIN_COM_VERSION_MINOR 10 #define TC_FORMAT_COM_VERSION_MAJOR 2 -#define TC_FORMAT_COM_VERSION_MINOR 7 +#define TC_FORMAT_COM_VERSION_MINOR 8 #include #include @@ -39,9 +39,9 @@ extern "C" BOOL RegisterComServers (wchar_t *modulePath) UnRegisterTypeLib (LIBID_TrueCryptMainCom, TC_MAIN_COM_VERSION_MAJOR, TC_MAIN_COM_VERSION_MINOR, 0, SYS_WIN32); UnRegisterTypeLib (LIBID_TrueCryptFormatCom, TC_FORMAT_COM_VERSION_MAJOR, TC_FORMAT_COM_VERSION_MINOR, 0, SYS_WIN32); // unregister older versions that may still exist - for (WORD i = 5; i >= 1; i--) + for (WORD i = 6; i >= 1; i--) UnRegisterTypeLib (LIBID_TrueCryptMainCom, TC_MAIN_COM_VERSION_MAJOR, TC_MAIN_COM_VERSION_MINOR-i, 0, SYS_WIN32); - for (WORD i = 3; i >= 1; i--) + for (WORD i = 4; i >= 1; i--) UnRegisterTypeLib (LIBID_TrueCryptFormatCom, TC_FORMAT_COM_VERSION_MAJOR, TC_FORMAT_COM_VERSION_MINOR-i, 0, SYS_WIN32); wchar_t setupModule[MAX_PATH]; @@ -78,9 +78,9 @@ extern "C" BOOL UnregisterComServers (wchar_t *modulePath) return FALSE; // unregister older versions that may still exist - for (WORD i = 5; i >= 1; i--) + for (WORD i = 6; i >= 1; i--) UnRegisterTypeLib (LIBID_TrueCryptMainCom, TC_MAIN_COM_VERSION_MAJOR, TC_MAIN_COM_VERSION_MINOR-i, 0, SYS_WIN32); - for (WORD i = 3; i >= 1; i--) + for (WORD i = 4; i >= 1; i--) UnRegisterTypeLib (LIBID_TrueCryptFormatCom, TC_FORMAT_COM_VERSION_MAJOR, TC_FORMAT_COM_VERSION_MINOR-i, 0, SYS_WIN32); wchar_t module[1024]; diff --git a/src/Setup/Setup.c b/src/Setup/Setup.c index f6ea93fe..46583c46 100644 --- a/src/Setup/Setup.c +++ b/src/Setup/Setup.c @@ -747,6 +747,12 @@ BOOL DoFilesInstall (HWND hwndDlg, wchar_t *szDestDir) StringCbCopyNW (curFileName, sizeof(curFileName), FILENAME_64BIT_DRIVER, sizeof (FILENAME_64BIT_DRIVER)); } + if (Is64BitOs () + && wcscmp (szFiles[i], L"Averacrypt.cat") == 0) + { + StringCbCopyNW (curFileName, sizeof(curFileName), L"veracrypt-x64.cat", sizeof (L"veracrypt-x64.cat")); + } + if (Is64BitOs () && wcscmp (szFiles[i], L"AVeraCrypt.exe") == 0) { @@ -2289,45 +2295,9 @@ void DoInstall (void *arg) void SetInstallationPath (HWND hwndDlg) { - HKEY hkey; BOOL bInstallPathDetermined = FALSE; - wchar_t path[MAX_PATH+20]; - ITEMIDLIST *itemList; - - memset (InstallationPath, 0, sizeof (InstallationPath)); - - // Determine if VeraCrypt is already installed and try to determine its "Program Files" location - if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\VeraCrypt", 0, KEY_READ | KEY_WOW64_32KEY, &hkey) == ERROR_SUCCESS) - { - /* Default 'UninstallString' registry strings written by VeraCrypt: - ------------------------------------------------------------------------------------ - 5.0+ "C:\Program Files\VeraCrypt\VeraCrypt Setup.exe" /u - */ - - wchar_t rv[MAX_PATH*4]; - DWORD size = sizeof (rv); - if (RegQueryValueEx (hkey, L"UninstallString", 0, 0, (LPBYTE) &rv, &size) == ERROR_SUCCESS && wcsrchr (rv, L'/')) - { - size_t len = 0; - - // Cut and paste the location (path) where VeraCrypt is installed to InstallationPath - if (rv[0] == L'"') - { - len = wcsrchr (rv, L'/') - rv - 2; - StringCchCopyNW (InstallationPath, ARRAYSIZE(InstallationPath), rv + 1, len); - InstallationPath [len] = 0; - bInstallPathDetermined = TRUE; - - if (InstallationPath [wcslen (InstallationPath) - 1] != L'\\') - { - len = wcsrchr (InstallationPath, L'\\') - InstallationPath; - InstallationPath [len] = 0; - } - } - - } - RegCloseKey (hkey); - } + + GetInstallationPath (hwndDlg, InstallationPath, ARRAYSIZE (InstallationPath), &bInstallPathDetermined); if (bInstallPathDetermined) { @@ -2343,36 +2313,6 @@ void SetInstallationPath (HWND hwndDlg) bChangeMode = TRUE; } } - else - { - /* VeraCrypt is not installed or it wasn't possible to determine where it is installed. */ - - // Default "Program Files" path. - SHGetSpecialFolderLocation (hwndDlg, CSIDL_PROGRAM_FILES, &itemList); - SHGetPathFromIDList (itemList, path); - - if (Is64BitOs()) - { - // Use a unified default installation path (registry redirection of %ProgramFiles% does not work if the installation path is user-selectable) - wstring s = path; - size_t p = s.find (L" (x86)"); - if (p != wstring::npos) - { - s = s.substr (0, p); - if (_waccess (s.c_str(), 0) != -1) - StringCbCopyW (path, sizeof (path), s.c_str()); - } - } - - StringCbCatW (path, sizeof(path), L"\\VeraCrypt\\"); - StringCbCopyW (InstallationPath, sizeof(InstallationPath), path); - } - - // Make sure the path ends with a backslash - if (InstallationPath [wcslen (InstallationPath) - 1] != L'\\') - { - StringCbCatW (InstallationPath, sizeof(InstallationPath), L"\\"); - } } diff --git a/src/Setup/Setup.h b/src/Setup/Setup.h index 12b4159f..ada20fb9 100644 --- a/src/Setup/Setup.h +++ b/src/Setup/Setup.h @@ -27,6 +27,8 @@ static wchar_t *szFiles[]= L"AVeraCrypt.exe", L"AVeraCryptExpander.exe", L"AVeraCrypt Format.exe", + L"Averacrypt.inf", + L"Averacrypt.cat", L"Averacrypt.sys", L"Dveracrypt.sys", L"AVeraCrypt Setup.exe", @@ -46,7 +48,10 @@ static wchar_t *szCompressedFiles[]= L"VeraCrypt-x64.exe", L"VeraCryptExpander-x64.exe", L"VeraCrypt Format-x64.exe", + L"veracrypt.inf", + L"veracrypt.cat", L"veracrypt.sys", + L"veracrypt-x64.cat", L"veracrypt-x64.sys", L"Languages.zip", L"docs.zip"