3 #include "../Include/Winheaders.h"
4 #include "../Include/Types.h"
5 #include "../Include/Macro.h"
10 #include <unordered_set>
17 enum CreateThreadFlags
19 NoThreadFlags = 0x0000,
20 CreateSuspended = 0x0001,
21 NoDllCallbacks = 0x0002,
22 HideFromDebug = 0x0004,
25 ENUM_OPS(CreateThreadFlags)
30 typedef std::list<ModuleData> listModules;
33 BLACKBONE_API Native( HANDLE hProcess,
bool x86OS =
false );
34 BLACKBONE_API ~Native();
36 BLACKBONE_API
inline const Wow64Barrier& GetWow64Barrier()
const {
return _wowBarrier; }
46 virtual NTSTATUS VirualAllocExT( ptr_t& lpAddress,
size_t dwSize, DWORD flAllocationType, DWORD flProtect );
55 virtual NTSTATUS VirualFreeExT( ptr_t lpAddress,
size_t dwSize, DWORD dwFreeType );
65 virtual NTSTATUS VirtualProtectExT( ptr_t lpAddress, DWORD64 dwSize, DWORD flProtect, DWORD* flOld );
75 virtual NTSTATUS ReadProcessMemoryT( ptr_t lpBaseAddress, LPVOID lpBuffer,
size_t nSize, DWORD64 *lpBytes =
nullptr );
85 virtual NTSTATUS WriteProcessMemoryT( ptr_t lpBaseAddress, LPCVOID lpBuffer,
size_t nSize, DWORD64 *lpBytes =
nullptr );
93 virtual NTSTATUS VirtualQueryExT( ptr_t lpAddress, PMEMORY_BASIC_INFORMATION64 lpBuffer );
101 virtual NTSTATUS VirtualQueryExT( ptr_t lpAddress, MEMORY_INFORMATION_CLASS infoClass, LPVOID lpBuffer,
size_t bufSize );
110 virtual NTSTATUS QueryProcessInfoT( PROCESSINFOCLASS infoClass, LPVOID lpBuffer, uint32_t bufSize );
119 virtual NTSTATUS SetProcessInfoT( PROCESSINFOCLASS infoClass, LPVOID lpBuffer, uint32_t bufSize );
129 virtual NTSTATUS CreateRemoteThreadT( HANDLE& hThread, ptr_t entry, ptr_t arg, CreateThreadFlags flags );
137 virtual NTSTATUS GetThreadContextT( HANDLE hThread,
_CONTEXT64& ctx );
145 virtual NTSTATUS GetThreadContextT( HANDLE hThread,
_CONTEXT32& ctx );
153 virtual NTSTATUS SetThreadContextT( HANDLE hThread,
_CONTEXT64& ctx );
161 virtual NTSTATUS SetThreadContextT( HANDLE hThread,
_CONTEXT32& ctx );
168 virtual ptr_t getPEB(
_PEB32* ppeb );
175 virtual ptr_t getPEB(
_PEB64* ppeb );
182 virtual ptr_t getTEB( HANDLE hThread,
_TEB32* pteb );
189 virtual ptr_t getTEB( HANDLE hThread,
_TEB64* pteb );
197 BLACKBONE_API
size_t EnumRegions( std::list<MEMORY_BASIC_INFORMATION64>& results,
bool includeFree =
false );
205 BLACKBONE_API
size_t EnumModules( listModules& result, eModSeachType search = LdrList, eModType mtype = mt_default );
211 BLACKBONE_API
inline ptr_t
minAddr()
const {
return 0x10000; }
217 BLACKBONE_API
inline ptr_t
maxAddr()
const {
return 0x7FFFFFFEFFFF; }
223 BLACKBONE_API
inline uint32_t
pageSize()
const {
return _pageSize; }
232 size_t EnumModulesT( Native::listModules& result );
239 size_t EnumSections( listModules& result );
246 size_t EnumPEHeaders( listModules& result );
Definition: NativeSubsystem.h:27
Definition: NativeStructures.h:163
BLACKBONE_API ptr_t maxAddr() const
Get highest possible valid address value
Definition: NativeSubsystem.h:217
Definition: NativeStructures.h:71
BLACKBONE_API ptr_t minAddr() const
Get lowest possible valid address value
Definition: NativeSubsystem.h:211
Definition: NativeStructures.h:442
Definition: AsmHelper32.cpp:6
Definition: NativeStructures.h:412
BLACKBONE_API uint32_t pageSize() const
Get page size
Definition: NativeSubsystem.h:223