Files
Sun1602/ProgramCommon/IGhost.h
T
2022-10-26 12:25:11 +08:00

237 lines
6.3 KiB
C++

/*-----------------------------------------------------------------------------
* IGhost.h
*-----------------------------------------------------------------------------
* GhostAPI 에 대한 인터페이스 정의
*-----------------------------------------------------------------------------
* All rights reserved by Noh Yong Hwan (fixbrain@gmail.com, unsorted@msn.com)
**---------------------------------------------------------------------------*/
#ifndef _I_GHOST_H_
#define _I_GHOST_H_
#include <windows.h>
//-----------------------------------------------------------------------------
// Class 전방 선언
//
class IGhost;
//-----------------------------------------------------------------------------
// IGhost 객체 관리용 전역 함수
//
IGhost* CreateGhostInstance(void);
void DestroyGhostInstance(IGhost* p);
//-----------------------------------------------------------------------------
// Ghost api 를 외부에서 사용하기 위한 인터페이스
//
class IGhost
{
public:
// custom GetProcAddress 구현
//
FARPROC MyGetProcAddress(HINSTANCE hMod,LPCTSTR pszSymbol);
//-------------------------------------------------------------------------
// kernel32.dll
//-------------------------------------------------------------------------
// GetModuleHandle()
//
virtual HMODULE __stdcall GH_GetModuleHandle(IN LPCTSTR lpModuleName) = 0;
// LoadLibrary()
//
virtual HMODULE __stdcall GH_LoadLibrary(IN LPCTSTR lpLibFileName) = 0;
virtual BOOL __stdcall GH_FreeLibrary(IN OUT HMODULE hLibModule) = 0;
// WaitForSingleObject
//
virtual DWORD __stdcall GH_WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds) = 0;
// SetEvent
virtual BOOL __stdcall GH_SetEvent(IN HANDLE hEvent) = 0;
// ResetEvent
virtual BOOL __stdcall GH_ResetEvent(IN HANDLE hEvent) = 0;
// CreateEvent
virtual HANDLE __stdcall GH_CreateEvent(
IN LPSECURITY_ATTRIBUTES lpEventAttributes,
IN BOOL bManualReset,
IN BOOL bInitialState,
IN LPCTSTR lpName
) = 0;
// CloseHandle
//
virtual BOOL __stdcall GH_CloseHandle(IN OUT HANDLE hObject) = 0;
// CreateThread
virtual HANDLE __stdcall GH_CreateThread (
IN LPSECURITY_ATTRIBUTES lpThreadAttributes,
IN SIZE_T dwStackSize,
IN LPTHREAD_START_ROUTINE lpStartAddress,
IN LPVOID lpParameter,
IN DWORD dwCreationFlags,
OUT LPDWORD lpThreadId
) = 0;
// CreateRemoteThrread
virtual HANDLE __stdcall GH_CreateRemoteThread (
IN HANDLE hProcess,
IN LPSECURITY_ATTRIBUTES lpThreadAttributes,
IN SIZE_T dwStackSize,
IN LPTHREAD_START_ROUTINE lpStartAddress,
IN LPVOID lpParameter,
IN DWORD dwCreationFlags,
OUT LPDWORD lpThreadId
) = 0;
// SuspendThread
virtual DWORD __stdcall GH_SuspendThread(IN HANDLE hThread) = 0;
// ResumeThread
virtual DWORD __stdcall GH_ResumeThread(IN HANDLE hThread) = 0;
// GetCurrentProcessId
virtual DWORD __stdcall GH_GetCurrentProcessId(void) = 0;
// OpenProcess
virtual HANDLE __stdcall GH_OpenProcess(
IN DWORD dwDesiredAccess,
IN BOOL bInheritHandle,
IN DWORD dwProcessId
) = 0;
// VirtualAlloc
virtual LPVOID __stdcall GH_VirtualAlloc(
IN LPVOID lpAddress,
IN SIZE_T dwSize,
IN DWORD flAllocationType,
IN DWORD flProtect
) = 0;
// VirtualFree
virtual BOOL __stdcall GH_VirtualFree(
IN LPVOID lpAddress,
IN SIZE_T dwSize,
IN DWORD dwFreeType
) = 0;
// VirtualAllocEx
virtual LPVOID __stdcall GH_VirtualAllocEx(
IN HANDLE hProcess,
IN LPVOID lpAddress,
IN SIZE_T dwSize,
IN DWORD flAllocationType,
IN DWORD flProtect
) = 0;
// VirtualFreeEx
virtual BOOL __stdcall GH_VirtualFreeEx(
IN HANDLE hProcess,
IN LPVOID lpAddress,
IN SIZE_T dwSize,
IN DWORD dwFreeType
) = 0;
// VirtualProtect
virtual BOOL __stdcall GH_VirtualProtect(
IN LPVOID lpAddress,
IN SIZE_T dwSize,
IN DWORD flNewProtect,
OUT PDWORD lpflOldProtect
) = 0;
// VirtualProtectEx
virtual BOOL __stdcall GH_VirtualProtectEx(
IN HANDLE hProcess,
IN LPVOID lpAddress,
IN SIZE_T dwSize,
IN DWORD flNewProtect,
OUT PDWORD lpflOldProtect
) = 0;
// ReadProcessMemory
virtual BOOL __stdcall GH_ReadProcessMemory(
IN HANDLE hProcess,
IN LPCVOID lpBaseAddress,
OUT LPVOID lpBuffer,
IN SIZE_T nSize,
OUT SIZE_T * lpNumberOfBytesRead
) = 0;
// WriteProcessMemory
virtual BOOL __stdcall GH_WriteProcessMemory(
IN HANDLE hProcess,
IN LPVOID lpBaseAddress,
IN LPCVOID lpBuffer,
IN SIZE_T nSize,
OUT SIZE_T * lpNumberOfBytesWritten
) = 0;
// TerminateProcess
virtual BOOL __stdcall GH_TerminateProcess(IN HANDLE hProcess,
IN UINT uExitCode) = 0;
// OutputDebugString
virtual VOID __stdcall GH_OutputDebugString(IN LPCSTR lpOutputString) = 0;
// CreateFile
virtual HANDLE __stdcall GH_CreateFile(
IN LPCSTR lpFileName,
IN DWORD dwDesiredAccess,
IN DWORD dwShareMode,
IN LPSECURITY_ATTRIBUTES lpSecurityAttributes,
IN DWORD dwCreationDisposition,
IN DWORD dwFlagsAndAttributes,
IN HANDLE hTemplateFile
) = 0;
// CreateFileMapping
virtual HANDLE __stdcall GH_CreateFileMapping(
IN HANDLE hFile,
IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
IN DWORD flProtect,
IN DWORD dwMaximumSizeHigh,
IN DWORD dwMaximumSizeLow,
IN LPCSTR lpName
) = 0;
// MapViewOfFile
virtual LPVOID __stdcall GH_MapViewOfFile(
IN HANDLE hFileMappingObject,
IN DWORD dwDesiredAccess,
IN DWORD dwFileOffsetHigh,
IN DWORD dwFileOffsetLow,
IN SIZE_T dwNumberOfBytesToMap
) = 0;
// UnmapViewOfFile
virtual BOOL __stdcall GH_UnmapViewOfFile(IN LPCVOID lpBaseAddress) = 0;
//-------------------------------------------------------------------------
// msvcr71.dll
//-------------------------------------------------------------------------
// thread 관련 api
//
virtual uintptr_t __cdecl GH__beginthreadex(
void *security,
unsigned stacksize,
unsigned (__stdcall *thread_proc)(void *),
void * argument,
unsigned createflag,
unsigned *thrdaddr) = 0;
};
#endif