1
mirror of https://github.com/rapid7/metasploit-payloads synced 2025-03-30 22:19:17 +02:00
Stephen Fewer 0a5c87b678 Initial commit of the multi-threaded meterpreter.
git-svn-id: file:///home/svn/framework3/trunk@7698 4d416f70-5f16-0410-b530-b9f4589650da
2009-12-04 17:37:21 +00:00

56 lines
1.4 KiB
C

#ifndef _METERPRETER_BASE_H
#define _METERPRETER_BASE_H
#include "linkage.h"
#include "core.h"
/*
* Command dispatch table types
*/
typedef DWORD (*DISPATCH_ROUTINE)(Remote *remote, Packet *packet);
#define MAX_CHECKED_ARGUMENTS 16
#define ARGUMENT_FLAG_REPEAT (1 << 28)
#define ARGUMENT_FLAG_MASK 0x0fffffff
// Blank dispatch handler
#define EMPTY_DISPATCH_HANDLER NULL, { 0 }, 0
// Place holders
#define EXPORT_TABLE_BEGIN()
#define EXPORT_TABLE_END()
typedef struct
{
DISPATCH_ROUTINE handler;
TlvMetaType argumentTypes[MAX_CHECKED_ARGUMENTS];
DWORD numArgumentTypes;
} PacketDispatcher;
typedef struct command
{
LPCSTR method;
PacketDispatcher request;
PacketDispatcher response;
// Internal -- not stored
struct command *next;
struct command *prev;
} Command;
LINKAGE DWORD command_register(Command *command);
LINKAGE DWORD command_deregister(Command *command);
LINKAGE VOID command_join_threads( VOID );
LINKAGE DWORD THREADCALL command_process_thread( THREAD * thread );
//LINKAGE DWORD command_process_remote(Remote *remote, Packet *inPacket);
//LINKAGE DWORD command_process_remote_loop(Remote *remote);
LINKAGE DWORD command_call_dispatch(Command *command, Remote *remote, Packet *packet);
LINKAGE DWORD command_validate_arguments(Command *command, Packet *packet);
#endif