by L. Spiro » Mon Jul 25, 2011 8:22 am
MHS uses an injected DLL.
It sends the address of the function it wishes to call and all of the call parameters, including the actual function parameters, the call type, etc., to a function in the DLL which then calls the desired function in the desired manner, pushing the correct number of parameters onto the stack, popping them off in the case of __cdecl, etc.
In order to guarantee stability, it calls the desired function within a try/catch block, so no matter what happens the target process will not crash.
MHS source code is available in the General section of this forum.
L. Spiro
Our songs remind you of songs you’ve never heard.