From 1794592f64f14e50940e4cb6fcf655fb5a3fa12b Mon Sep 17 00:00:00 2001 From: hfiref0x Date: Mon, 19 Mar 2018 22:25:30 +0700 Subject: [PATCH] Bugfix Backport from identical part of Stryker --- Compiled/Furutaka.exe | Bin 99328 -> 98816 bytes Source/Furutaka/main.c | 16 +++++++++------- Source/Furutaka/resource.rc | Bin 5702 -> 5702 bytes TDL.sha256 | 6 +++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Compiled/Furutaka.exe b/Compiled/Furutaka.exe index 7ac677275873a8b28a3fa8cf3e24126026f2dde3..d05ab619622779979a21d49b702f9df5e5610e96 100644 GIT binary patch delta 8353 zcmeHMe_WJRx0|STy#>)>uW`I!;lphW%BVjW(xbN6t_#>f2#m&gf6m8h3br*D? zn%<_U)7`zdx`k$ax>kEDEYWnsAb)Hs0mO6#L3wVOwZ~z^18-}=^A%L17j-)?`Etf9^CDWb?|^-OB%e5vBxwn6;v^1(LItmmJbR> zf$@t%PRynpjDXH^d7dtRqAKX}6bGahG^|+eT@IN#&>@>epw;tV>T-lt{5f3?e^xh! zf22zi*6{P7wRC3aYlS&;Fx4aX>@tE`k`E}N8w5!{DYbQ*TDPji6QBoIWinP_JJ@#K zTPDfx)Vu7l-WbWZR|hP*@w_KsxSRJzRNG#;hOvPdS0I8Z;%mSa@z?l;0^3nlI*m(m zt+h^)J=Rjmb|`4(a}CpkD&A&zD49k*0gu&EVe6Ix3$3}5d{_~G&+{S+lW)IbtW+Hf z@P^2F!VCPZ$Yp|!XGJw-zjZZZZQYHcD{!441;n12j0NX@rzmG`Gcfj*Dc*2#Cf^ff z*X^6hhoT%4tRw6av9}TX%in_i9fa=<4+S7l{w7~)d`sBPGov3D68P@unb|*`p=wEX z1+J%QHdYU74@NqFu3r&1aj8k_c_0iaLp{R3QtU)N5foyRF<_a(} z0ep*LKycp$X#A6^Ox#9<*FbRYM3RuGp{x0#Q8P^krZYA|`}5WOnNfEO4n8iy7={uxQua16J(oX~ZRMC$k=uV+k?N+no56B(Kzuh_r z0kq5wDYr;-<%sb`WWC>uWtJtZx4TFY7sCaq?YyaVvpQ$Db%+cLRCIVS|78^~uP%d| zzYRscvcoAKm-2^r-RR_IyA-JGK)(H=!yE0^9|mS`yx@E@p3Dw7Gb-dhNxozS1S;AoH)|B}7|7Tr_dgW{CuGD%YEw+D?dV}Y zB$FF3o}9~v%*qZv-IS4CVLMvy@?+suS8f<_C86;GIZ-M1)$=A(Uh{~Fp%urRc^0xY zSbPpEip^7{h?k~PG_g;=jATr%sY0r}fV>RN@Yh<4f)T_V5D$YI@?-#0XopF*qvVL~ zpd$8zL|!}sA>@TbUW{w?p$j+kKXSulcJY~}(m-> z1IW>ufv;c#dt{fju9AFy20d)ebL4O+%*Yc8tI6zO_4OumE7qGa6VFVzD&N*!@5eqx z%vvh3XhS+MW?|U)lJB6Rhy_zZW;8E9X~$qagnd@;50xUy zCAAXy?2J!N%x!k(fA994MO~>tvS8ZX7In*RK1*BHWp#LDR6|)TzlAZkd}JS!RO&v5 zuv5xM+Dm$*y-Je&l5XQSlw)@;QVGQFh#BUO-8I6$a+rUVTh2P7$xC!=h}abx9+uv~ z&nKG4K1*w;N5rInA-#gJod^munOhj+1>(J9nTaxmdonQ;) zR`B&N$U%?Q;ewY%lDyDbC4VdF`+|3*4f9|DNN!LbX04R>5hI-L3m*S#*lG6&v8@

+oh=?&J68bde3E=P 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 L*137r$HIRC(lZz* delta 8637 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 diff --git a/Source/Furutaka/main.c b/Source/Furutaka/main.c index ed636a7..41a24df 100644 --- a/Source/Furutaka/main.c +++ b/Source/Furutaka/main.c @@ -1,12 +1,12 @@ /******************************************************************************* * -* (C) COPYRIGHT AUTHORS, 2016 - 2017 +* (C) COPYRIGHT AUTHORS, 2016 - 2018 * * TITLE: MAIN.C * -* VERSION: 1.12 +* VERSION: 1.13 * -* DATE: 01 Dec 2017 +* DATE: 09 Mar 2018 * * Furutaka entry point. * @@ -41,11 +41,11 @@ ULONG g_NtBuildNumber = 0; #define supImageHandle 0x1a000 #define PAGE_SIZE 0x1000 -#define T_LOADERTITLE TEXT("Turla Driver Loader v1.1.2 (01/12/17)") +#define T_LOADERTITLE TEXT("Turla Driver Loader v1.1.3 (09/03/18)") #define T_LOADERUNSUP TEXT("Unsupported WinNT version\r\n") #define T_LOADERRUN TEXT("Another instance running, close it before\r\n") #define T_LOADERUSAGE TEXT("Usage: loader drivertoload\n\re.g. loader mydrv.sys\r\n") -#define T_LOADERINTRO TEXT("Turla Driver Loader v1.1.2 started\r\n(c) 2016 - 2017 TDL Project\r\nSupported x64 OS : 7 and above\r\n") +#define T_LOADERINTRO TEXT("Turla Driver Loader v1.1.3 started\r\n(c) 2016 - 2018 TDL Project\r\nSupported x64 OS : 7 and above\r\n") /* * TDLVBoxInstalled @@ -382,6 +382,7 @@ UINT TDLMapDriver( ) { UINT result = (UINT)-1; + ULONG DllCharacteristics = IMAGE_FILE_EXECUTABLE_IMAGE; ULONG isz, prologueSize, dataOffset; SIZE_T memIO; ULONG_PTR KernelBase, KernelImage = 0; @@ -403,7 +404,7 @@ UINT TDLMapDriver( RtlSecureZeroMemory(&uStr, sizeof(uStr)); RtlInitUnicodeString(&uStr, lpDriverFullName); - status = LdrLoadDll(NULL, NULL, &uStr, (PVOID)&Image); + status = LdrLoadDll(NULL, &DllCharacteristics, &uStr, (PVOID)&Image); if ((!NT_SUCCESS(status)) || (Image == NULL)) { cuiPrintText(g_ConOut, TEXT("Ldr: Error while loading input driver file"), g_ConsoleOutput, TRUE); break; @@ -867,7 +868,7 @@ void TDLMain() _strcat(text, TEXT(" build ")); ultostr(osv.dwBuildNumber, _strend(text)); cuiPrintText(g_ConOut, text, g_ConsoleOutput, TRUE); - +#if 0 // // If VirtualBox installed on the same machine warn user, // however this is unnecessary can lead to any conflicts. @@ -878,6 +879,7 @@ void TDLMain() TEXT("Ldr: Warning, VirtualBox software installed, conflicts are possible"), g_ConsoleOutput, TRUE); } +#endif uResult = TDLProcessCommandLine(GetCommandLine()); diff --git a/Source/Furutaka/resource.rc b/Source/Furutaka/resource.rc index 33146699a9d347251ef8abefa186d34abd4e63e9..1a4d7bc2812f3502c5e95abe0ddb7d0e7644f477 100644 GIT binary patch delta 88 zcmX@6b4+K04mYDgYjf@Ze3*l=6vqwOh5rWxPnB!hm01Ro%!P#(S*e( NUlS18d`+N$6#yT{67v86 delta 88 zcmX@6b4+K04mY