Skip to content

Commit 2f33a57

Browse files
committed
remove unnecessary validation when connecting to JIT process
1 parent 34967a4 commit 2f33a57

File tree

1 file changed

+0
-89
lines changed

1 file changed

+0
-89
lines changed

lib/JITServer/JITServer.cpp

Lines changed: 0 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -119,85 +119,6 @@ __RPC_USER PSCRIPTCONTEXT_HANDLE_rundown(__RPC__in PSCRIPTCONTEXT_HANDLE phConte
119119
ServerCleanupScriptContext(nullptr, &phContext);
120120
}
121121

122-
HRESULT CheckModuleAddress(HANDLE process, LPCVOID remoteImageBase, LPCVOID localImageBase)
123-
{
124-
byte remoteImageHeader[0x1000];
125-
MEMORY_BASIC_INFORMATION remoteImageInfo;
126-
SIZE_T resultBytes = VirtualQueryEx(process, (LPCVOID)remoteImageBase, &remoteImageInfo, sizeof(remoteImageInfo));
127-
if (resultBytes != sizeof(remoteImageInfo))
128-
{
129-
Assert(UNREACHED);
130-
return E_ACCESSDENIED;
131-
}
132-
if (remoteImageInfo.BaseAddress != (PVOID)remoteImageBase)
133-
{
134-
Assert(UNREACHED);
135-
return E_ACCESSDENIED;
136-
}
137-
if (remoteImageInfo.Type != MEM_IMAGE)
138-
{
139-
Assert(UNREACHED);
140-
return E_ACCESSDENIED;
141-
}
142-
if (remoteImageInfo.State != MEM_COMMIT)
143-
{
144-
Assert(UNREACHED);
145-
return E_ACCESSDENIED;
146-
}
147-
148-
if (remoteImageInfo.RegionSize < sizeof(remoteImageHeader))
149-
{
150-
Assert(UNREACHED);
151-
return E_ACCESSDENIED;
152-
}
153-
154-
if (!ReadProcessMemory(process, remoteImageBase, remoteImageHeader, sizeof(remoteImageHeader), &resultBytes))
155-
{
156-
return HRESULT_FROM_WIN32(GetLastError());
157-
}
158-
if (resultBytes < sizeof(remoteImageHeader))
159-
{
160-
Assert(UNREACHED);
161-
return E_ACCESSDENIED;
162-
}
163-
PIMAGE_DOS_HEADER localDosHeader = (PIMAGE_DOS_HEADER)localImageBase;
164-
PIMAGE_NT_HEADERS localNtHeader = (PIMAGE_NT_HEADERS)((BYTE*)localDosHeader + localDosHeader->e_lfanew);
165-
166-
PIMAGE_DOS_HEADER remoteDosHeader = (PIMAGE_DOS_HEADER)remoteImageHeader;
167-
PIMAGE_NT_HEADERS remoteNtHeader = (PIMAGE_NT_HEADERS)((BYTE*)remoteDosHeader + remoteDosHeader->e_lfanew);
168-
169-
uintptr_t remoteHeaderMax = (uintptr_t)remoteImageHeader + sizeof(remoteImageHeader);
170-
uintptr_t remoteMaxRead = (uintptr_t)remoteNtHeader + sizeof(IMAGE_NT_HEADERS);
171-
if (remoteMaxRead >= remoteHeaderMax || remoteMaxRead < (uintptr_t)remoteImageHeader)
172-
{
173-
Assert(UNREACHED);
174-
return E_ACCESSDENIED;
175-
}
176-
177-
if (localNtHeader->FileHeader.NumberOfSections != remoteNtHeader->FileHeader.NumberOfSections)
178-
{
179-
Assert(UNREACHED);
180-
return E_ACCESSDENIED;
181-
}
182-
if (localNtHeader->FileHeader.NumberOfSymbols != remoteNtHeader->FileHeader.NumberOfSymbols)
183-
{
184-
Assert(UNREACHED);
185-
return E_ACCESSDENIED;
186-
}
187-
if (localNtHeader->OptionalHeader.CheckSum != remoteNtHeader->OptionalHeader.CheckSum)
188-
{
189-
Assert(UNREACHED);
190-
return E_ACCESSDENIED;
191-
}
192-
if (localNtHeader->OptionalHeader.SizeOfImage != remoteNtHeader->OptionalHeader.SizeOfImage)
193-
{
194-
Assert(UNREACHED);
195-
return E_ACCESSDENIED;
196-
}
197-
198-
return S_OK;
199-
}
200-
201122
HRESULT
202123
ServerConnectProcess(
203124
handle_t binding,
@@ -229,16 +150,6 @@ ServerConnectProcess(
229150
return E_ACCESSDENIED;
230151
}
231152
#endif
232-
hr = CheckModuleAddress(targetHandle, (LPCVOID)chakraBaseAddress, (LPCVOID)AutoSystemInfo::Data.dllLoadAddress);
233-
if (FAILED(hr))
234-
{
235-
return hr;
236-
}
237-
hr = CheckModuleAddress(targetHandle, (LPCVOID)crtBaseAddress, (LPCVOID)AutoSystemInfo::Data.GetCRTHandle());
238-
if (FAILED(hr))
239-
{
240-
return hr;
241-
}
242153
return ProcessContextManager::RegisterNewProcess(clientPid, targetHandle, chakraBaseAddress, crtBaseAddress);
243154
}
244155

0 commit comments

Comments
 (0)