测试合并
Go to file
2021-08-17 23:08:22 -06:00
assets add stress test, move common assets to assets folder 2019-08-06 11:41:49 -04:00
cmake fix build errors 2021-04-24 17:12:40 -06:00
extensions fix minor bugs with rate limiter, update urls 2021-08-17 22:48:16 -06:00
GUI support larger sentences by default, possibly with repetition (since builtin filter is disabled by default) 2021-08-17 23:08:22 -06:00
include prevent write starvation 2021-06-05 03:00:01 -06:00
test use precompiled headers 2020-04-18 19:04:07 -06:00
texthook add rpg maker mz hook 2021-06-30 20:59:07 -06:00
x64libs add stress test, move common assets to assets folder 2019-08-06 11:41:49 -04:00
x86libs add stress test, move common assets to assets folder 2019-08-06 11:41:49 -04:00
.appveyor.yml build system improvements 2021-03-13 00:51:36 -07:00
.gitattributes Line ending attributes for window LF 2016-12-12 00:50:06 +09:00
.gitignore update for vs 2019 2019-06-07 02:58:45 -04:00
CMakeLists.txt fix build errors 2021-04-24 17:12:40 -06:00
CMakeSettings.json update anex86 hook 2020-09-09 14:58:19 -06:00
CREDITS.md update credits 2021-06-06 22:43:49 -06:00
deploy.ps1 Merge branch 'master' into devtools_papago_translate 2021-06-06 03:15:33 -06:00
installer.iss add french translation 2020-05-14 18:35:26 -06:00
LICENSE add license and update readme 2018-05-20 21:21:37 -04:00
README_ES.md update docs 2021-01-31 08:02:10 -07:00
README_FR.md update docs 2021-01-31 08:02:10 -07:00
README_ID.md update docs 2021-01-31 08:02:10 -07:00
README_IT.md update docs 2021-01-31 08:02:10 -07:00
README_JP.md add french readme 2020-05-16 03:00:50 -06:00
README_KR.md update docs 2021-01-31 08:02:10 -07:00
README_PT.md update docs 2021-01-31 08:02:10 -07:00
README_RU.md update docs 2021-01-31 08:02:10 -07:00
README_SC.md update docs 2021-01-31 08:02:10 -07:00
README_TH.md update docs 2021-01-31 08:02:10 -07:00
README_TU.md tie off i18n loose ends 2019-06-19 23:19:13 -04:00
README.md missing vcredist causes some weird stuff... 2021-06-05 10:11:36 -06:00
screenshot.png resize 2019-02-18 01:27:41 -05:00
text.cpp fix minor bugs with rate limiter, update urls 2021-08-17 22:48:16 -06:00

Textractor

How it looks

EnglishEspañol简体中文Русский한국어ภาษาไทยFrançaisItaliano日本語BahasaPortuguês

Textractor (a.k.a. NextHooker) is an open-source x86/x64 video game text hooker for Windows/Wine based off of ITHVNR.
Watch the tutorial video for a quick rundown on using it.

Download

Official stable releases of Textractor can be found here.
The last release of ITHVNR can be found here.
Experimental builds of Textractor (with debug info) from the latest source can be found here in the 'Artifacts' section of each job.
Try running vcredist if you get an error when starting Textractor or if nothing happens when you try attaching to a game.

Features

  • Highly extensible and customizable
  • Auto hook many game engines (including some not supported by VNR!)
  • Hook text using /H "hook" codes (most AGTH codes supported)
  • Automatically search for possible hook codes

Support

Please let me know of any bugs, games that Textractor has trouble hooking, feature requests, or other suggestions.
If you have trouble hooking a game please email me a place where I can freely download it, or gift it to me on Steam.

Extensions

See my Example Extension project to see how to build an extension.
See the extensions folder for examples of what extensions can do.

Contributing

All contributions are appreciated! Please email (no, I'm not busy!) me at akashmozumdar@gmail.com if you have any questions about the codebase.
You should use the standard process of making a pull request (fork, branch, commit changes, make PR from your branch to my master).
Contributing a translation is easy: just translate the strings in text.cpp as well as this README and the subtitles of the tutorial video.

Compiling

Before compiling Textractor, you should get Qt version 5.13 and Visual Studio with CMake support. You should then be able to just open the source folder in Visual Studio and build.

Project Architecture

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.
Host writes to hostPipe, texthook writes to hookPipe.
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.
Additional information about hooks is exchanged via shared memory.
The text that the host receives through the pipe is then processed a little before being dispatched back to the GUI.
Finally, the GUI dispatches the text to extensions before displaying it.

Developers