1
mirror of https://github.com/rapid7/metasploit-payloads synced 2025-03-18 15:14:10 +01:00
2017-07-21 18:27:04 +10:00

31 lines
1.2 KiB
C
Executable File

#include "common.h"
#include "pivot_packet_dispatch.h"
DWORD THREADCALL pivot_packet_dispatch_thread(THREAD* thread)
{
dprintf("[PIVOTPACKETTHREAD] Dispatching packet on thread %p", thread);
PivotContext* pivotCtx = (PivotContext*)thread->parameter1;
LPBYTE packetBuffer = (LPBYTE)thread->parameter2;
DWORD packetSize = (DWORD)thread->parameter3;
DWORD result = pivotCtx->packet_write(pivotCtx->state, packetBuffer, packetSize);
dprintf("[PIVOTPACKETTHREAD] Packet dispatched: %u (%x)", result, result);
free(packetBuffer);
dprintf("[PIVOTPACKETTHREAD] Cleaning up the thread");
thread_destroy(thread);
dprintf("[PIVOTPACKETTHREAD] Done");
return result;
}
DWORD pivot_packet_dispatch(PivotContext* pivotCtx, LPBYTE packetBuffer, DWORD packetSize)
{
THREAD* thread = thread_create(pivot_packet_dispatch_thread, pivotCtx, packetBuffer, (LPVOID)packetSize);
if (thread)
{
dprintf("[PIVOTPACKET] Dispatching packet on new thread %p", thread);
thread_run(thread);
dprintf("[PIVOTPACKET] Thread invoked %p", thread);
return ERROR_SUCCESS;
}
dprintf("[PIVOTPACKET] Failed to create packet dispatch thread");
return ERROR_OUTOFMEMORY;
}