@@ -4,19 +4,40 @@ MemoryModulePP, used to load a DLL from memory. MemoryModulePP is compatible wit
44
55** MemoryModulePP is developed based on [ MemoryModule] [ ref1 ] .**
66
7- > In order to support 32-bit dll exception handling, the dll should enable the /SAFESEH linker option,
8- > otherwise the exception handler cannot pass the RtlIsValidHandler () check when an exception occurs
9-
107## Features
118 - Compatible with Win32 API (GetModuleHandle, GetModuleFileName, GetProcAddress and any Resource API)
129 - Support for C++ exceptions and SEH
13- - Optimized MEMORYMODULE structure
14- - Use reference counting, repeated loading of the same module will update the reference counting, please refer to LdrLoadDllMemoryExW
15- - The above features can be turned off through the dwFlags parameter of LdrLoadDllMemoryExW
16- - Support for TLS(Thread Local Storage)
10+ > In order to support 32-bit dll exception handling, the dll should enable the /SAFESEH linker option,
11+ > otherwise the exception handler cannot pass the ``` RtlIsValidHandler() ``` check when an exception occurs
12+ - Support reference counting
13+ - Support Thread Local Storage<br />
14+ * There are 2 ways to handle tls: MmpTls and LdrpTls, which you can control via ``` MMPP_USE_TLS ``` macro in stdafx.h.* <br /><br />
15+ <table >
16+ <tr>
17+ <th/>
18+ <th>MmpTls(MmpTls.cpp)</th>
19+ <th>LdrpTls(MmpLdrpTls.cpp)</th>
20+ </tr>
21+ <tr>
22+ <th>Description</th>
23+ <td>Implemented by MemoryModulePP</td>
24+ <td>Implemented by NTDLL</td>
25+ </tr>
26+ <tr>
27+ <th>Compatibility</th>
28+ <td>Medium</td>
29+ <td>Low</td>
30+ </tr>
31+ <tr>
32+ <th>Stability</th>
33+ <td>Low</td>
34+ <td>High</td>
35+ </tr>
36+ </table >
1737 - DllMain can receive four types of notifications
1838 - Support forward export
19- - Provides limited support for .net assembly loading
39+ - Support ``` SetUnhandledExceptionFilter() ```
40+ - Provides limited support for .NET assembly loading
2041
2142## Tech
2243
@@ -29,14 +50,13 @@ MemoryModulePP uses many open source projects and references to work properly:
2950* [ Reactos] [ ref4 ] - How Windows loads dll.
3051
3152## Todos
32- - Looking for a good way to locate the LdrpHandleTlsData function, or implement this function.
33-
34-
35-
36- [ ref0 ] : < https://www.vergiliusproject.com >
37- [ ref1 ] : < https://github.com/fancycode/MemoryModule.git >
38- [ ref2 ] : < https://github.com/DarthTon/Blackbone.git >
39- [ ref3 ] : < https://habr.com/en/company/aladdinrd/blog/321868/ >
40- [ ref4 ] : < https://doxygen.reactos.org/ >
41- [ ref5 ] : < https://github.com/processhacker/processhacker.git >
42-
53+ - Add support for ReflectionLoader
54+ - Improve the stability of MmpTls
55+ - Bug fixes
56+
57+ [ ref0 ] : < https://www.vergiliusproject.com >
58+ [ ref1 ] : < https://github.com/fancycode/MemoryModule.git >
59+ [ ref2 ] : < https://github.com/DarthTon/Blackbone.git >
60+ [ ref3 ] : < https://habr.com/en/company/aladdinrd/blog/321868/ >
61+ [ ref4 ] : < https://doxygen.reactos.org/ >
62+ [ ref5 ] : < https://github.com/processhacker/processhacker.git >
0 commit comments