SecurityWrapper { Start( ) // Dispatch security thread to periodically check for blacklisted processes. Patch( ) // Bytepatch often abused functions to call ExitProcess directly. Check( ) // Check if dummy functions have been bytepatched (OpenProcess, WriteProcessMemory, VirtualQuery) } RemoteCodeParameters { m_dwEndScene m_dwEndSceneOrig //m_dwImportCode m_dwEntryPoint m_dwCheatHeader m_dwVirtualProtect } RemoteCodeServer { Start( RemoteCodeParameters *Parameters ) GetBytes( ) } RemoteProcess { Start( const char *ProcessName ) GetProcess( ) Write( ) Read( ) Allocate( ) } RemoteCodeClient { Start( ByteArray &RemoteCode ) Dispatch( ) } FileReader { Start( const char *FileName ) GetBytes( ) } RemoteInjectionServer { Start( ByteArray &DllData ) ProcessRelocation( uint32_t RemoteAddress ) ProcessHeader( RemoteHeader *Header ) GetBytes( ) } RemoteInjectionClient { Start( RemoteProcess &Process ) AllocateMap( uint32_t SizeOfImage ) WriteToMap( ByteArray &Data ) }