This commit is contained in:
Akash Mozumdar 2019-03-13 11:54:19 -04:00
parent 09552fe7c7
commit 21fd3e1d59
35 changed files with 19 additions and 19 deletions

View File

@ -38,5 +38,5 @@ link_libraries(text)
add_subdirectory(GUI)
add_subdirectory(GUI/host)
add_subdirectory(vnrhook)
add_subdirectory(texthook)
add_subdirectory(extensions)

View File

@ -1,7 +1,7 @@
#include "host.h"
#include "defs.h"
#include "util.h"
#include "../vnrhook/texthook.h"
#include "../texthook/texthook.h"
extern const wchar_t* ALREADY_INJECTED;
extern const wchar_t* ARCHITECTURE_MISMATCH;

View File

@ -46,9 +46,9 @@ You should then be able to simply open the folder in Visual Studio, and build. R
## Project Architecture
The host (see GUI/host folder) injects vnrhook.dll (created from the vnrhook folder) into the target process and connects to it via 2 pipe files.<br>
Host writes to hostPipe, vnrhook writes to hookPipe.<br>
vnrhook waits for the pipe to be connected, then injects a few instructions into any text outputting functions (e.g. TextOut, GetGlyphOutline) that cause their input to be sent through the pipe.<br>
The host (see GUI/host folder) injects texthook.dll (created from the texthook folder) into the target process and connects to it via 2 pipe files.<br>
Host writes to hostPipe, texthook writes to hookPipe.<br>
texthook waits for the pipe to be connected, then injects a few instructions into any text outputting functions (e.g. TextOut, GetGlyphOutline) that cause their input to be sent through the pipe.<br>
Additional information about hooks is shared through a file view (a.k.a. section object) that is mapped to a reference to the TextHook class.<br>
The text that the host receives through the pipe is then processed a little before being dispatched back to the GUI.<br>
Finally, the GUI dispatches the text to extensions before displaying it.

View File

@ -37,9 +37,9 @@ Textractor 的发行版可以在[这里](https://github.com/Artikash/Textractor/
## 项目架构
宿主 (位于 GUI/host 文件夹) 向目标进程注入 vnrhook.dll (由 vnrhook 文件夹创建) 并通过两个管道文件互联.<br>
宿主向 hostPipe 写入, vnrhook 向 hookPipe 写入.<br>
vnrhook 等待管道连接, 之后向一些文本输出函数 (如 TextOut, GetGlyphOutline) 注入一系列指令, 使得它们的输入被沿着管道发送.<br>
宿主 (位于 GUI/host 文件夹) 向目标进程注入 texthook.dll (由 texthook 文件夹创建) 并通过两个管道文件互联.<br>
宿主向 hostPipe 写入, texthook 向 hookPipe 写入.<br>
texthook 等待管道连接, 之后向一些文本输出函数 (如 TextOut, GetGlyphOutline) 注入一系列指令, 使得它们的输入被沿着管道发送.<br>
其它关于钩子的信息通过一个被 TextHook 类保有引用的文件视图 (曾用名: 段对象) 共享.<br>
之后, 宿主通过管道接收到的文本在传回 GUI 前被简单处理.<br>
最后, GUI 在显示文本前将其分发给扩展.

View File

@ -5,7 +5,7 @@ Set-Location $PSScriptRoot;
$targets = @(
"Textractor.exe",
"TextractorCLI.exe",
"vnrhook.dll",
"texthook.dll",
"Qt5Core.dll",
"Qt5Gui.dll",
"Qt5Widgets.dll",

View File

@ -1,6 +1,6 @@
#pragma once
// vnrhook/const.h
// texthook/const.h
// 8/23/2013 jichi
// Branch: ITH/common.h, rev 128

View File

@ -1,6 +1,6 @@
#pragma once
// vnrhook/defs.h
// texthook/defs.h
// 8/23/2013 jichi
// Pipes
@ -23,7 +23,7 @@ constexpr auto PIPE_AVAILABLE_EVENT = L"TEXTRACTOR_PIPE_AVAILABLE";
// Files
constexpr auto ITH_DLL = L"vnrhook"; // .dll but LoadLibrary automatically adds that
constexpr auto ITH_DLL = L"texthook"; // .dll but LoadLibrary automatically adds that
constexpr auto CONFIG_FILE = u8"Textractor.ini";
// Misc

View File

@ -1,7 +1,7 @@
include_directories(. util)
if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
set(vnrhook_src
set(texthook_src
main.cc
texthook.cc
engine/match64.cc
@ -10,7 +10,7 @@ set(vnrhook_src
util/util.cc
)
else()
set(vnrhook_src
set(texthook_src
main.cc
texthook.cc
engine/engine.cc
@ -23,20 +23,20 @@ set(vnrhook_src
)
endif()
add_library(vnrhook SHARED ${vnrhook_src})
add_library(texthook SHARED ${texthook_src})
set_target_properties(vnrhook PROPERTIES
set_target_properties(texthook PROPERTIES
LINK_FLAGS "/SUBSYSTEM:WINDOWS /MANIFEST:NO"
)
set(vnrhook_libs
set(texthook_libs
Version.lib
minhook
)
target_link_libraries(vnrhook ${vnrhook_libs})
target_link_libraries(texthook ${texthook_libs})
target_compile_definitions(vnrhook
target_compile_definitions(texthook
PRIVATE
_CRT_NON_CONFORMING_SWPRINTFS
_SCL_SECURE_NO_WARNINGS # config.pri