Skip to content

Commit b54c17f

Browse files
committed
add hooks for .net
1 parent bb83bf0 commit b54c17f

13 files changed

Lines changed: 433 additions & 319 deletions

MemoryModule/MemoryModule.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ static SYSTEM_INFO sysInfo = []()->SYSTEM_INFO {
6464

6565
NTSTATUS MemoryLoadLibrary(
6666
_Out_ HMEMORYMODULE* MemoryModuleHandle,
67-
_In_ LPCVOID data) {
67+
_In_ LPCVOID data,
68+
_In_ DWORD size) {
6869

6970
PIMAGE_DOS_HEADER dos_header = nullptr;
7071
PIMAGE_NT_HEADERS old_header = nullptr;
@@ -122,7 +123,7 @@ NTSTATUS MemoryLoadLibrary(
122123
__except (EXCEPTION_EXECUTE_HANDLER) {
123124
status = GetExceptionCode();
124125
}
125-
if (!NT_SUCCESS(status)) return status;
126+
if (!NT_SUCCESS(status) || status == STATUS_IMAGE_MACHINE_TYPE_MISMATCH)return status;
126127

127128
//
128129
// Reserve the address range of image
@@ -178,9 +179,10 @@ NTSTATUS MemoryLoadLibrary(
178179
PMEMORYMODULE hMemoryModule = (PMEMORYMODULE)(base + old_header->OptionalHeader.SizeOfHeaders);
179180
RtlZeroMemory(hMemoryModule, sizeof(MEMORYMODULE));
180181
hMemoryModule->codeBase = base;
181-
hMemoryModule->pageSize = sysInfo.dwPageSize;
182+
hMemoryModule->dwImageFileSize = size;
182183
hMemoryModule->Signature = MEMORY_MODULE_SIGNATURE;
183184
hMemoryModule->SizeofHeaders = old_header->OptionalHeader.SizeOfHeaders;
185+
hMemoryModule->lpReserved = (LPVOID)data;
184186

185187
do {
186188
//

MemoryModule/MemoryModule.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ typedef struct _MEMORYMODULE {
5252
DWORD dwModulesCount; //number of module handles
5353
DWORD dwReserved;
5454

55-
DWORD pageSize; //SYSTEM_INFO::dwPageSize
55+
DWORD dwImageFileSize;
5656
DWORD headers_align; //headers_align == OptionalHeaders.BaseOfCode;
5757

5858
} MEMORYMODULE, * PMEMORYMODULE;
@@ -66,7 +66,8 @@ extern "C" {
6666

6767
NTSTATUS MemoryLoadLibrary(
6868
_Out_ HMEMORYMODULE* MemoryModuleHandle,
69-
_In_ LPCVOID data
69+
_In_ LPCVOID data,
70+
_In_ DWORD size
7071
);
7172

7273
bool MemoryFreeLibrary(HMEMORYMODULE);

MemoryModule/MemoryModule.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<ClCompile Include="..\3rdparty\Detours\modules.cpp" />
3232
<ClCompile Include="LoadDllMemoryApi.cpp" />
3333
<ClCompile Include="MemoryModule.cpp" />
34+
<ClCompile Include="MmpDotNet.cpp" />
3435
<ClCompile Include="MmpTls.cpp" />
3536
<ClCompile Include="Native.cpp" />
3637
<ClCompile Include="NativeFunctionsInternal.cpp" />
@@ -45,6 +46,7 @@
4546
<ClInclude Include="..\3rdparty\Detours\detver.h" />
4647
<ClInclude Include="LoadDllMemoryApi.h" />
4748
<ClInclude Include="MemoryModule.h" />
49+
<ClInclude Include="MmpDotNet.h" />
4850
<ClInclude Include="Native.h" />
4951
<ClInclude Include="NativeFunctionsInternal.h" />
5052
<ClInclude Include="rtlinv.h" />

MemoryModule/MemoryModule.vcxproj.filters

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@
8787
<ClCompile Include="..\3rdparty\Detours\modules.cpp">
8888
<Filter>Source Files\3rdparty\Detours</Filter>
8989
</ClCompile>
90+
<ClCompile Include="MmpDotNet.cpp">
91+
<Filter>Source Files</Filter>
92+
</ClCompile>
9093
</ItemGroup>
9194
<ItemGroup>
9295
<ClInclude Include="MemoryModule.h">
@@ -125,6 +128,9 @@
125128
<ClInclude Include="..\3rdparty\Detours\detver.h">
126129
<Filter>Header Files\3rdparty\Detours</Filter>
127130
</ClInclude>
131+
<ClInclude Include="MmpDotNet.h">
132+
<Filter>Header Files</Filter>
133+
</ClInclude>
128134
</ItemGroup>
129135
<ItemGroup>
130136
<None Include="..\README.md">

0 commit comments

Comments
 (0)