/* ansicon.h - Header file for common definitions. Jason Hood, 12 December, 2010 (originally injdll.h, 20 June, 2009). */ #ifndef ANSICON_H #define ANSICON_H #ifndef UNICODE # define UNICODE #endif #define WIN32_LEAN_AND_MEAN #ifdef _WIN64 #define _WIN32_WINNT 0x0600 // MinGW-w64 wants this defined for Wow64 stuff #else #define _WIN32_WINNT 0x0500 // MinGW wants this defined for OpenThread #endif #include #include #include #define lenof(array) (sizeof(array)/sizeof(*(array))) #define TSIZE(size) ((size) * sizeof(TCHAR)) #ifndef LOAD_LIBRARY_AS_IMAGE_RESOURCE #define LOAD_LIBRARY_AS_IMAGE_RESOURCE 0x20 #endif #ifndef LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE #define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 0x20 #endif #define EXPORTDIR OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT] #define IMPORTDIR OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] #define BOUNDDIR OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT] #define IATDIR OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT] #define COMDIR OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR] // Reduce the verbosity of some functions (assuming variable names). #define ReadProcVar(a, b) ReadProcMem( a, b, sizeof(*(b)) ) #define WriteProcVar(a, b) WriteProcMem( a, b, sizeof(*(b)) ) #define ReadProcMem(a, b, c) ReadProcessMemory( ppi->hProcess, a, b, c, NULL ) #define WriteProcMem(a, b, c) WriteProcessMemory( ppi->hProcess, a, b, c, NULL ) #define VirtProtVar(a, b) VirtualProtectEx( ppi->hProcess, a, sizeof(*(a)), b, &pr ) #define PTRSZ sizeof(PVOID) typedef struct { BYTE foreground; // ANSI base color (0 to 7; add 30) BYTE background; // ANSI base color (0 to 7; add 40) BYTE bold; // console FOREGROUND_INTENSITY bit BYTE underline; // console BACKGROUND_INTENSITY bit BYTE rvideo; // swap foreground/bold & background/underline BYTE concealed; // set foreground/bold to background/underline BYTE reverse; // swap console foreground & background attributes } GRM, *PGRM; // Graphic Rendition Mode int ProcessType( LPPROCESS_INFORMATION, PBYTE*, BOOL* ); void InjectDLL( LPPROCESS_INFORMATION, PBYTE ); void InjectDLL32( LPPROCESS_INFORMATION, PBYTE ); DWORD get_LLW32r( void ); DWORD64 get_LLW64r( void ); extern TCHAR prog_path[MAX_PATH]; extern LPTSTR prog; LPTSTR get_program_name( LPTSTR ); extern char ansi_dll[MAX_PATH]; extern DWORD ansi_len; extern char* ansi_bits; void set_ansi_dll( LPTSTR ); extern int log_level; void DEBUGSTR( int level, LPTSTR szFormat, ... ); #endif