41 lines
873 B
C++
41 lines
873 B
C++
// Author: B4rtik (@b4rtik)
|
|
// Project: Execute-dotnet-assembly (https://github.com/b4rtik/metasploit-execute-assembly)
|
|
// License: BSD 3-Clause
|
|
|
|
#include "stdafx.h"
|
|
#include "ReflectiveLoader.h"
|
|
#include "ReflectiveFree.h"
|
|
#include "HostingCLR.h"
|
|
|
|
extern HINSTANCE hAppInstance;
|
|
|
|
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved)
|
|
{
|
|
BOOL bReturnValue = TRUE;
|
|
switch (dwReason)
|
|
{
|
|
case DLL_QUERY_HMODULE:
|
|
if (lpReserved != NULL)
|
|
*(HMODULE *)lpReserved = hAppInstance;
|
|
break;
|
|
case DLL_PROCESS_ATTACH:
|
|
hAppInstance = hinstDLL;
|
|
Execute(lpReserved);
|
|
fflush(stdout);
|
|
|
|
// Free the assembly and parameters
|
|
VirtualFree(lpReserved, 0, MEM_RELEASE);
|
|
|
|
ReflectiveFree(hinstDLL);
|
|
|
|
break;
|
|
case DLL_PROCESS_DETACH:
|
|
ReflectiveFree(hinstDLL);
|
|
break;
|
|
case DLL_THREAD_ATTACH:
|
|
case DLL_THREAD_DETACH:
|
|
break;
|
|
}
|
|
return bReturnValue;
|
|
}
|