Textractor_test/host/host.h

58 lines
1.6 KiB
C
Raw Normal View History

#pragma once
// host.h
// 8/23/2013 jichi
// Branch: ITH/IHF.h, rev 105
2018-07-19 12:46:52 +08:00
#define DLLEXPORT __declspec(dllexport)
2018-07-24 03:25:02 +08:00
#include <Windows.h>
#include "textthread.h"
2018-07-13 01:59:05 +08:00
#include <string>
#include <functional>
2018-07-24 03:25:02 +08:00
#include "../vnrhook/include/types.h"
struct ProcessRecord
{
HANDLE process_handle;
HANDLE hookman_mutex;
HANDLE hookman_section;
LPVOID hookman_map;
HANDLE hostPipe;
};
typedef std::function<void(DWORD)> ProcessEventCallback;
typedef std::function<void(TextThread*)> ThreadEventCallback;
2018-07-24 03:25:02 +08:00
struct ThreadParameterHasher
{
size_t operator()(const ThreadParameter& tp) const
{
return std::hash<__int64>()(tp.pid << 6) + std::hash<__int64>()(tp.hook) + std::hash<__int64>()(tp.retn) + std::hash<__int64>()(tp.spl);
2018-07-24 03:25:02 +08:00
}
};
namespace Host
{
2018-08-22 10:43:30 +08:00
DLLEXPORT void Start(ProcessEventCallback onAttach, ProcessEventCallback onDetach, ThreadEventCallback onCreate, ThreadEventCallback onRemove);
2018-07-24 03:25:02 +08:00
DLLEXPORT void Close();
DLLEXPORT bool InjectProcess(DWORD pid, DWORD timeout = 5000);
DLLEXPORT bool DetachProcess(DWORD pid);
DLLEXPORT bool InsertHook(DWORD pid, HookParam hp, std::string name = "");
DLLEXPORT bool RemoveHook(DWORD pid, DWORD addr);
DLLEXPORT HookParam GetHookParam(DWORD pid, DWORD addr);
2018-08-22 10:43:30 +08:00
DLLEXPORT HookParam GetHookParam(ThreadParameter tp);
2018-07-24 03:25:02 +08:00
DLLEXPORT std::wstring GetHookName(DWORD pid, DWORD addr);
2018-08-22 10:43:30 +08:00
DLLEXPORT TextThread* GetThread(ThreadParameter tp);
2018-07-24 03:25:02 +08:00
DLLEXPORT void AddConsoleOutput(std::wstring text);
}
2018-08-22 10:43:30 +08:00
void DispatchText(ThreadParameter tp, const BYTE *text, int len);
2018-07-24 03:25:02 +08:00
void RemoveThreads(bool(*RemoveIf)(ThreadParameter, ThreadParameter), ThreadParameter cmp);
void RegisterProcess(DWORD pid, HANDLE hostPipe);
void UnregisterProcess(DWORD pid);
// EOF