Skip to content

Commit 068164c

Browse files
committed
Update Readme
1 parent e829adb commit 068164c

1 file changed

Lines changed: 39 additions & 19 deletions

File tree

README.md

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)