start implementing hostinterop
This commit is contained in:
parent
a8cdee67e8
commit
62b5f5fe8f
Binary file not shown.
@ -41,7 +41,7 @@ DWORD ProcessCommand(const std::wstring& cmd, DWORD pid)
|
|||||||
{
|
{
|
||||||
HookParam hp = {};
|
HookParam hp = {};
|
||||||
if (Parse(m[1].str(), hp))
|
if (Parse(m[1].str(), hp))
|
||||||
InsertHook(pid, &hp);
|
InsertHook(pid, hp);
|
||||||
}
|
}
|
||||||
else if (regex_match(cmd, m, wregex(L":(?:h|help)", wregex::icase)))
|
else if (regex_match(cmd, m, wregex(L":(?:h|help)", wregex::icase)))
|
||||||
{
|
{
|
||||||
|
@ -149,7 +149,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||||||
if (StartHost())
|
if (StartHost())
|
||||||
{
|
{
|
||||||
SetUnhandledExceptionFilter(UnhandledExcept);
|
SetUnhandledExceptionFilter(UnhandledExcept);
|
||||||
GetHostHookManager(&man);
|
man = GetHostHookManager();
|
||||||
pfman = new ProfileManager();
|
pfman = new ProfileManager();
|
||||||
DefaultSettings();
|
DefaultSettings();
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
@ -488,7 +488,7 @@ void RegisterProcess(DWORD pid)
|
|||||||
{
|
{
|
||||||
for (auto i = pf->Hooks().begin(); i != pf->Hooks().end(); ++i)
|
for (auto i = pf->Hooks().begin(); i != pf->Hooks().end(); ++i)
|
||||||
{
|
{
|
||||||
InsertHook(pid, &i->get()->HP(), toMultiByteString(i->get()->Name()));
|
InsertHook(pid, i->get()->HP(), toMultiByteString(i->get()->Name()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,19 +117,19 @@ DLLEXPORT bool DetachProcessById(DWORD processId)
|
|||||||
return WriteFile(man->GetHostPipe(processId), &command, sizeof(command), &unused, nullptr);
|
return WriteFile(man->GetHostPipe(processId), &command, sizeof(command), &unused, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
DLLEXPORT void GetHostHookManager(HookManager** hookman)
|
DLLEXPORT HookManager* GetHostHookManager()
|
||||||
{
|
{
|
||||||
*hookman = man;
|
return man;
|
||||||
}
|
}
|
||||||
|
|
||||||
DLLEXPORT bool InsertHook(DWORD pid, const HookParam *hp, std::string name)
|
DLLEXPORT bool InsertHook(DWORD pid, HookParam hp, std::string name)
|
||||||
{
|
{
|
||||||
HANDLE commandPipe = man->GetHostPipe(pid);
|
HANDLE commandPipe = man->GetHostPipe(pid);
|
||||||
if (commandPipe == nullptr) return false;
|
if (commandPipe == nullptr) return false;
|
||||||
|
|
||||||
BYTE buffer[PIPE_BUFFER_SIZE] = {};
|
BYTE buffer[PIPE_BUFFER_SIZE] = {};
|
||||||
*(DWORD*)buffer = HOST_COMMAND_NEW_HOOK;
|
*(DWORD*)buffer = HOST_COMMAND_NEW_HOOK;
|
||||||
*(HookParam*)(buffer + sizeof(DWORD)) = *hp;
|
*(HookParam*)(buffer + sizeof(DWORD)) = hp;
|
||||||
if (name.size()) strcpy((char*)buffer + sizeof(DWORD) + sizeof(HookParam), name.c_str());
|
if (name.size()) strcpy((char*)buffer + sizeof(DWORD) + sizeof(HookParam), name.c_str());
|
||||||
DWORD unused;
|
DWORD unused;
|
||||||
return WriteFile(commandPipe, buffer, sizeof(DWORD) + sizeof(HookParam) + name.size(), &unused, nullptr);
|
return WriteFile(commandPipe, buffer, sizeof(DWORD) + sizeof(HookParam) + name.size(), &unused, nullptr);
|
||||||
|
@ -12,10 +12,10 @@
|
|||||||
DLLEXPORT void OpenHost();
|
DLLEXPORT void OpenHost();
|
||||||
DLLEXPORT bool StartHost();
|
DLLEXPORT bool StartHost();
|
||||||
DLLEXPORT void CloseHost();
|
DLLEXPORT void CloseHost();
|
||||||
DLLEXPORT void GetHostHookManager(HookManager **hookman);
|
DLLEXPORT HookManager* GetHostHookManager();
|
||||||
DLLEXPORT bool InjectProcessById(DWORD pid, DWORD timeout = 5000);
|
DLLEXPORT bool InjectProcessById(DWORD pid, DWORD timeout = 5000);
|
||||||
DLLEXPORT bool DetachProcessById(DWORD pid);
|
DLLEXPORT bool DetachProcessById(DWORD pid);
|
||||||
DLLEXPORT bool InsertHook(DWORD pid, const HookParam *hp, std::string name = "");
|
DLLEXPORT bool InsertHook(DWORD pid, HookParam hp, std::string name = "");
|
||||||
DLLEXPORT bool RemoveHook(DWORD pid, DWORD addr);
|
DLLEXPORT bool RemoveHook(DWORD pid, DWORD addr);
|
||||||
|
|
||||||
// EOF
|
// EOF
|
||||||
|
Loading…
Reference in New Issue
Block a user