@@ -119,85 +119,6 @@ __RPC_USER PSCRIPTCONTEXT_HANDLE_rundown(__RPC__in PSCRIPTCONTEXT_HANDLE phConte
119
119
ServerCleanupScriptContext (nullptr , &phContext);
120
120
}
121
121
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
-
201
122
HRESULT
202
123
ServerConnectProcess (
203
124
handle_t binding,
@@ -229,16 +150,6 @@ ServerConnectProcess(
229
150
return E_ACCESSDENIED;
230
151
}
231
152
#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
- }
242
153
return ProcessContextManager::RegisterNewProcess (clientPid, targetHandle, chakraBaseAddress, crtBaseAddress);
243
154
}
244
155
0 commit comments