Crash!!!
test.exe a normal exe with not use mmpp i comment this line:// const NTSTATUS Initializer = Initialize(); a.dll build with mmpp static libirary,export loaddll func void loaddll() { Initialize(); mmload("b.dll"); }
b.dll is a normal dll
test.exe void main() { hmodule hmod=loadlibrary(a.dll) call hmod.loaddll(); call freelibrary(hmod); //now everything is ok!
while(true) { sleep(1000); } }
a few moment ,the test.exe will crash!!!
Hi, thanks for your feedback. Since MMPP hooks ntdll!RtlUserThreadStart and ntdll!LdrShutdownThread, once the Initialize function is called, this module (that is, a.dll) cannot be released.
if comment this line://call freelibrary(hmod); the test.exe is ok Add one func do the uninitialize, will be ok the b.dll loaded,the a.dll call unitialize then freelibrary,will be ok
If b.dll does not use tls, you only need to comment the statement that initializes MmpTls (Initialize.cpp line 465). Otherwise, when a.dll is released, the program will inevitably crash.