|
|
///////////////////////////////////////////////////////////////////////////
//
// Bloodhound initialization for the MSRPC parser DLL
//
///////////////////////////////////////////////////////////////////////////
#include "precomp.h"
#pragma hdrstop
extern PROPERTYINFO MSRPCPropertyTable[];
//MSRPC protocol Entry Points from rpc.c
extern VOID WINAPI MSRPC_Register(HPROTOCOL); extern VOID WINAPI MSRPC_Deregister(HPROTOCOL); extern LPBYTE WINAPI MSRPC_RecognizeFrame(HFRAME, LPBYTE, LPBYTE, DWORD, DWORD, HPROTOCOL, DWORD, LPDWORD, LPHPROTOCOL, LPDWORD); extern LPBYTE WINAPI MSRPC_AttachProperties(HFRAME, LPBYTE, LPBYTE, DWORD, DWORD, HPROTOCOL, DWORD, DWORD); extern DWORD WINAPI MSRPC_FormatProperties(HFRAME, LPBYTE, LPBYTE, DWORD, LPPROPERTYINST);
extern VOID WINAPI SSPRegister(HPROTOCOL); extern VOID WINAPI SSPDeregister(HPROTOCOL); extern LPBYTE WINAPI SSPRecognizeFrame(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, LPDWORD, LPHPROTOCOL, LPDWORD); extern LPBYTE WINAPI SSPAttachProperties(HFRAME, LPVOID, LPVOID, DWORD, DWORD, HPROTOCOL, DWORD, DWORD); extern DWORD WINAPI SSPFormatProperties(HFRAME, LPVOID, LPVOID, DWORD, LPPROPERTYINST);
ENTRYPOINTS MSRPC_EntryPoints = { // MSRPC Entry Points
MSRPC_Register, MSRPC_Deregister, MSRPC_RecognizeFrame, MSRPC_AttachProperties, MSRPC_FormatProperties };
ENTRYPOINTS SSPEntryPoints = { SSPRegister, SSPDeregister, SSPRecognizeFrame, SSPAttachProperties, SSPFormatProperties };
char IniFile[MAX_PATH]; HPROTOCOL hMSRPC = NULL;
HPROTOCOL hSSP = NULL;
DWORD Attached = 0;
BOOL WINAPI DLLEntry(HANDLE hInst, ULONG ulCommand, LPVOID lpReserved) { if (ulCommand == DLL_PROCESS_ATTACH) { if (Attached++ == 0) { hMSRPC = CreateProtocol("MSRPC", &MSRPC_EntryPoints, ENTRYPOINTS_SIZE); hSSP = CreateProtocol("SSP", &SSPEntryPoints, ENTRYPOINTS_SIZE);
if (BuildINIPath(IniFile, "MSRPC.DLL") == NULL) {
#ifdef DEBUG
BreakPoint(); #endif
return FALSE; } } }
if (ulCommand == DLL_PROCESS_DETACH) { if (--Attached == 0) { DestroyProtocol(hMSRPC); DestroyProtocol(hSSP);
} }
return TRUE;
//... Make the compiler happy.
UNREFERENCED_PARAMETER(hInst); UNREFERENCED_PARAMETER(lpReserved); }
|