diff --git a/vnr/texthook/hookman.cc b/vnr/texthook/hookman.cc index afa8fcd..53e71fd 100644 --- a/vnr/texthook/hookman.cc +++ b/vnr/texthook/hookman.cc @@ -24,6 +24,7 @@ HookManager::HookManager() : attach(nullptr), detach(nullptr), nextThreadNumber(0), + splitDelay(250), textThreadsByParams(), processRecordsByIds() { diff --git a/vnr/texthook/host.cc b/vnr/texthook/host.cc index 9056cff..71c73fc 100644 --- a/vnr/texthook/host.cc +++ b/vnr/texthook/host.cc @@ -103,7 +103,7 @@ DLLEXPORT bool InjectProcessById(DWORD processId, DWORD timeout) { WaitForSingleObject(thread, timeout); CloseHandle(thread); - VirtualFreeEx(processHandle, remoteData, textHookerPathSize, MEM_RELEASE); + VirtualFreeEx(processHandle, remoteData, 0, MEM_RELEASE); CloseHandle(processHandle); return true; } diff --git a/vnr/texthook/textthread.h b/vnr/texthook/textthread.h index 4527751..4409d7d 100644 --- a/vnr/texthook/textthread.h +++ b/vnr/texthook/textthread.h @@ -8,18 +8,18 @@ #include #include -struct ThreadParameter +struct ThreadParameter { - DWORD pid; // jichi: 5/11/2014: The process ID - DWORD hook; // Artikash 6/6/2018: The start address of the hook - DWORD retn; // jichi 5/11/2014: The return address of the hook - DWORD spl; // jichi 5/11/2014: the processed split value of the hook paramete - - // Artikash 5/31/2018: required for unordered_map to work with struct key - friend bool operator==(const ThreadParameter& one, const ThreadParameter& two) - { - return one.pid == two.pid && one.hook == two.hook && one.retn == two.retn && one.spl == two.spl; - } + DWORD pid; // jichi: 5/11/2014: The process ID + DWORD hook; // Artikash 6/6/2018: The start address of the hook + DWORD retn; // jichi 5/11/2014: The return address of the hook + DWORD spl; // jichi 5/11/2014: the processed split value of the hook paramete + + // Artikash 5/31/2018: required for unordered_map to work with struct key + friend bool operator==(const ThreadParameter& one, const ThreadParameter& two) + { + return one.pid == two.pid && one.hook == two.hook && one.retn == two.retn && one.spl == two.spl; + } }; #define CURRENT_SELECT 0x1000 @@ -32,31 +32,31 @@ typedef void(*ThreadOutputCallback)(TextThread*, std::wstring data); class TextThread { public: - TextThread(ThreadParameter tp, unsigned int threadNumber, unsigned int splitDelay); - ~TextThread(); + TextThread(ThreadParameter tp, unsigned int threadNumber, unsigned int splitDelay); + ~TextThread(); - void Reset(); - void AddText(const BYTE *con, int len); - void AddSentence(); - void AddSentence(std::wstring sentence); + void Reset(); + void AddText(const BYTE *con, int len); + void AddSentence(); + void AddSentence(std::wstring sentence); - std::wstring GetStore() { return storage; } - DWORD &Status() { return status; } - WORD Number() const { return threadNumber; } - ThreadParameter GetThreadParameter() { return tp; } + std::wstring GetStore() { return storage; } + DWORD &Status() { return status; } + WORD Number() const { return threadNumber; } + ThreadParameter GetThreadParameter() { return tp; } - void RegisterOutputCallBack(ThreadOutputCallback cb) { output = cb; } + void RegisterOutputCallBack(ThreadOutputCallback cb) { output = cb; } private: - CRITICAL_SECTION ttCs; - ThreadOutputCallback output; - std::vector sentenceBuffer; - std::wstring storage; + CRITICAL_SECTION ttCs; + ThreadOutputCallback output; + std::vector sentenceBuffer; + std::wstring storage; - ThreadParameter tp; - unsigned int threadNumber; - unsigned int splitDelay; - DWORD status; + ThreadParameter tp; + unsigned int threadNumber; + unsigned int splitDelay; + DWORD status; }; // EOF