4 #include "../Include/Winheaders.h"
5 #include "../PE/PEImage.h"
6 #include "../Misc/Utils.h"
10 #include <unordered_map>
16 struct hash < struct pair<wstring,
blackbone::eModType> >
18 size_t operator()(
const pair<wstring, blackbone::eModType>& value )
const
21 return sh( value.first ) ^ value.second;
32 ptr_t procAddress = 0;
34 std::wstring forwardModule;
35 std::string forwardName;
36 WORD forwardOrdinal = 0;
38 bool isForwarded =
false;
39 bool forwardByOrd =
false;
45 typedef std::unordered_map<std::pair<std::wstring, eModType>,
ModuleData> mapModules;
49 BLACKBONE_API ~ProcessModules();
59 const std::wstring& name,
60 eModSeachType search = LdrList,
61 eModType type = mt_default
73 eModSeachType search = LdrList,
74 eModType type = mt_default,
75 const wchar_t* baseModule = L
""
87 eModSeachType search = LdrList,
88 eModType type = mt_default
102 BLACKBONE_API
const ProcessModules::mapModules&
GetAllModules( eModSeachType search = LdrList );
125 BLACKBONE_API
const ModuleData*
Inject(
const std::wstring& path, NTSTATUS* pStatus =
nullptr );
128 BLACKBONE_API
bool InjectPureIL(
138 const std::wstring& netVersion,
139 const std::wstring& netAssemblyPath,
140 const std::wstring& netAssemblyMethod,
141 const std::wstring& netAssemblyArgs,
169 const std::wstring& FilePath,
192 BLACKBONE_API
void reset();
195 ProcessModules(
const ProcessModules& ) =
delete;
196 ProcessModules operator =(
const ProcessModules&) =
delete;
BLACKBONE_API const ModuleData * AddManualModule(const std::wstring &FilePath, module_t base, size_t size, eModType mt)
Store manually mapped module in module list
Definition: ProcessModules.cpp:529
BLACKBONE_API bool Unload(const ModuleData *hMod)
Unload specific module from target process. Can't be used to unload manually mapped modules ...
Definition: ProcessModules.cpp:456
BLACKBONE_API void reset()
Reset local data
Definition: ProcessModules.cpp:875
BLACKBONE_API bool Unlink(const ModuleData *mod)
Unlink module from most loader structures
Definition: ProcessModules.cpp:496
Definition: ProcessModules.h:13
BLACKBONE_API void RemoveManualModule(const std::wstring &filename, eModType mt)
Remove module from module list
Definition: ProcessModules.cpp:551
Definition: ProcessMemory.h:13
BLACKBONE_API const ModuleData * Inject(const std::wstring &path, NTSTATUS *pStatus=nullptr)
Inject image into target process
Definition: ProcessModules.cpp:360
Definition: ProcessModules.h:30
Definition: ProcessModules.h:42
BLACKBONE_API const ModuleData * GetMainModule()
Get process main module
Definition: ProcessModules.cpp:145
BLACKBONE_API bool ValidateModule(module_t base)
Ensure module is a valid PE image
Definition: ProcessModules.cpp:506
BLACKBONE_API const ModuleData * GetModule(const std::wstring &name, eModSeachType search=LdrList, eModType type=mt_default)
Get module by name
Definition: ProcessModules.cpp:44
std::mutex alternative
Definition: Utils.h:103
Definition: ProcessCore.h:13
BLACKBONE_API const ProcessModules::mapModules & GetAllModules(eModSeachType search=LdrList)
Enumerate all process modules
Definition: ProcessModules.cpp:172
BLACKBONE_API void GetManualModules(ProcessModules::mapModules &mods)
Get list of manually mapped modules
Definition: ProcessModules.cpp:212
Definition: AsmHelper32.cpp:6
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 ...
Definition: ProcessModules.cpp:228