11#include " pch.h"
22
33#include " Manual Mapping.h"
4-
5- #pragma optimize("", off)
6-
74using namespace NATIVE ;
85using namespace MMAP_NATIVE ;
96
10- DWORD ManualMapping_Shell (MANUAL_MAPPING_DATA * pData);
11- DWORD ManualMapping_Shell_End ();
7+ DWORD __declspec (code_seg( " .mmap_sec$1 " )) __stdcall ManualMapping_Shell(MANUAL_MAPPING_DATA * pData);
8+ DWORD __declspec (code_seg( " .mmap_sec$2 " )) ManualMapping_Shell_End();
129
1310DWORD MMAP_NATIVE::ManualMap (const wchar_t * szDllFile, HANDLE hTargetProc, LAUNCH_METHOD Method, DWORD Flags, HINSTANCE & hOut, DWORD Timeout, ERROR_DATA & error_data)
1411{
@@ -209,7 +206,7 @@ __forceinline bool InitAnsiString(MANUAL_MAPPING_FUNCTION_TABLE * f, ANSI_STRING
209206 return true ;
210207}
211208
212- DWORD ManualMapping_Shell (MANUAL_MAPPING_DATA * pData)
209+ DWORD __declspec (code_seg( " .mmap_sec$1 " )) __stdcall ManualMapping_Shell(MANUAL_MAPPING_DATA * pData)
213210{
214211 if (!pData)
215212 {
@@ -263,7 +260,7 @@ DWORD ManualMapping_Shell(MANUAL_MAPPING_DATA * pData)
263260
264261 HANDLE hDllFile = nullptr ;
265262
266- ntRet = f->NtOpenFile (&hDllFile, FILE_GENERIC_READ, oa, &io_status, FILE_SHARE_READ, 0x20 );
263+ ntRet = f->NtOpenFile (&hDllFile, FILE_GENERIC_READ, oa, &io_status, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT );
267264
268265 DeleteObject (f, oa);
269266 DeleteObject (f, DllNtPath.szBuffer );
@@ -802,7 +799,6 @@ DWORD ManualMapping_Shell(MANUAL_MAPPING_DATA * pData)
802799 if ((Flags & INJ_MM_EXECUTE_TLS) && pOptionalHeader->DataDirectory [IMAGE_DIRECTORY_ENTRY_TLS].Size )
803800 {
804801 auto * pTLS = ReCa<IMAGE_TLS_DIRECTORY*>(pBase + pOptionalHeader->DataDirectory [IMAGE_DIRECTORY_ENTRY_TLS].VirtualAddress );
805-
806802 // LdrpHandleTlsData either crashes or returns STATUS_SUCCESS -> no point in error checking
807803 // It also only accesses the DllBase member of the ldr entry thus a dummy entry is sufficient
808804
@@ -1041,7 +1037,7 @@ DWORD ManualMapping_Shell(MANUAL_MAPPING_DATA * pData)
10411037 return INJ_ERR_SUCCESS;
10421038}
10431039
1044- DWORD ManualMapping_Shell_End ()
1040+ DWORD __declspec (code_seg( " .mmap_sec$2 " )) ManualMapping_Shell_End()
10451041{
10461042 return 1 ;
10471043}
@@ -1079,6 +1075,4 @@ MANUAL_MAPPING_FUNCTION_TABLE::MANUAL_MAPPING_FUNCTION_TABLE()
10791075 NT_FUNC_CONSTRUCTOR_INIT (LdrpHeap);
10801076
10811077 pLdrpHeap = nullptr ;
1082- }
1083-
1084- #pragma optimize("", on)
1078+ }
0 commit comments