BlackBone
Windows memory hacking library
 All Classes Functions
blackbone::ProcessModules Class Reference

Public Types

typedef std::unordered_map
< std::pair< std::wstring,
eModType >, ModuleData
mapModules
 

Public Member Functions

BLACKBONE_API ProcessModules (class Process &proc)
 
BLACKBONE_API const ModuleDataGetModule (const std::wstring &name, eModSeachType search=LdrList, eModType type=mt_default)
 Get module by name More...
 
BLACKBONE_API const ModuleDataGetModule (std::wstring &name, eModSeachType search=LdrList, eModType type=mt_default, const wchar_t *baseModule=L"")
 Get module by name More...
 
BLACKBONE_API const ModuleDataGetModule (module_t modBase, eModSeachType search=LdrList, eModType type=mt_default)
 Get module by base address More...
 
BLACKBONE_API const ModuleDataGetMainModule ()
 Get process main module More...
 
BLACKBONE_API const
ProcessModules::mapModules & 
GetAllModules (eModSeachType search=LdrList)
 Enumerate all process modules More...
 
BLACKBONE_API void GetManualModules (ProcessModules::mapModules &mods)
 Get list of manually mapped modules More...
 
BLACKBONE_API exportData GetExport (const ModuleData *hMod, const char *name_ord, const wchar_t *baseModule=L"")
 Get export address. Forwarded exports will be automatically resolved if forward module is present More...
 
BLACKBONE_API const ModuleDataInject (const std::wstring &path)
 Inject image into target process More...
 
BLACKBONE_API bool Unload (const ModuleData *hMod)
 Unload specific module from target process. Can't be used to unload manually mapped modules More...
 
BLACKBONE_API bool Unlink (const ModuleData *mod)
 Unlink module from most loader structures More...
 
BLACKBONE_API const ModuleDataAddManualModule (const std::wstring &FilePath, module_t base, size_t size, eModType mt)
 Store manually mapped module in module list More...
 
BLACKBONE_API void RemoveManualModule (const std::wstring &filename, eModType mt)
 Remove module from module list More...
 
BLACKBONE_API bool ValidateModule (module_t base)
 Ensure module is a valid PE image More...
 
BLACKBONE_API void reset ()
 Reset local data More...
 

Member Function Documentation

const ModuleData * blackbone::ProcessModules::AddManualModule ( const std::wstring &  FilePath,
module_t  base,
size_t  size,
eModType  mt 
)

Store manually mapped module in module list

Parameters
FilePathFull qualified module path
baseBase address
sizeModule size
mtModule type. 32 bit or 64 bit
Returns
Module info
const ProcessModules::mapModules & blackbone::ProcessModules::GetAllModules ( eModSeachType  search = LdrList)

Enumerate all process modules

Parameters
searchSearch method
Returns
Module list
exportData blackbone::ProcessModules::GetExport ( const ModuleData hMod,
const char *  name_ord,
const wchar_t *  baseModule = L"" 
)

Get export address. Forwarded exports will be automatically resolved if forward module is present

Parameters
hModModule to search in
name_ordFunction name or ordinal
baseModuleImport module name. Only used to resolve ApiSchema during manual map.
Returns
Export info. If failed procAddress field is 0

Invalid module

const ModuleData * blackbone::ProcessModules::GetMainModule ( )

Get process main module

Returns
Module data. nullptr if not found
void blackbone::ProcessModules::GetManualModules ( ProcessModules::mapModules &  mods)

Get list of manually mapped modules

Parameters
modsList of modules
const ModuleData * blackbone::ProcessModules::GetModule ( const std::wstring &  name,
eModSeachType  search = LdrList,
eModType  type = mt_default 
)

Get module by name

Parameters
nameModule name
typeModule type. 32 bit or 64 bit
searchSaerch type.
Returns
Module data. nullptr if not found
const ModuleData * blackbone::ProcessModules::GetModule ( std::wstring &  name,
eModSeachType  search = LdrList,
eModType  type = mt_default,
const wchar_t *  baseModule = L"" 
)

Get module by name

Parameters
nameTModule name.
typeModule type. 32 bit or 64 bit
baseModuleImport module name. Used only to resolve ApiSchema during manual map
Returns
Module data. nullptr if not found
const ModuleData * blackbone::ProcessModules::GetModule ( module_t  modBase,
eModSeachType  search = LdrList,
eModType  type = mt_default 
)

Get module by base address

Parameters
modBaseModule base address
typeModule type. 32 bit or 64 bit
searchSaerch type.
Returns
Module data. nullptr if not found
const ModuleData * blackbone::ProcessModules::Inject ( const std::wstring &  path)

Inject image into target process

Parameters
pathFull-qualified image path
Returns
Module info. nullptr if failed
void blackbone::ProcessModules::RemoveManualModule ( const std::wstring &  filename,
eModType  mt 
)

Remove module from module list

Parameters
filenameModule file name
mtModule type. 32 bit or 64 bit
void blackbone::ProcessModules::reset ( )

Reset local data

bool blackbone::ProcessModules::Unlink ( const ModuleData mod)

Unlink module from most loader structures

Parameters
modModule to unlink
Returns
true on success
bool blackbone::ProcessModules::Unload ( const ModuleData hMod)

Unload specific module from target process. Can't be used to unload manually mapped modules

Parameters
hModModule to unload
Returns
true on success
bool blackbone::ProcessModules::ValidateModule ( module_t  base)

Ensure module is a valid PE image

Parameters
baseModule base address
Returns
true on success

The documentation for this class was generated from the following files: