前言
(想给教程时发现站里还没有人写)
MisakaHookFinder
MisakaHookFinder正是在Textractor的基础上开发的,保留了其强大功能的同时变得更加易用。
因为用到了hook这种技术,所以杀软很容易会警告并把它当作病毒处理。因此一般我们使用这类工具时,会暂时关闭杀毒软件并以管理员身份启动这类hook软件。
Textractor 特点
- 高度可扩展
- 自动从很多游戏中提取 (包括一些没有被 VNR 支持的!)
- 通过 /H “hook” 码提取文本 (支持大多数 AGTH 码)
- 使用 /R “read” 码直接抽取文本
此段为摘录:
Hook提取游戏文本的优势是明显的:
- 无视游戏文本字体,直接读内存拿文本,解决OCR方式遇到的部分游戏字体怪异或背景不固定导致无法很好地识别文字的情况
- 完全离线,不用担心提交在线OCR时造成的隐私泄露问题,无延时
但Hook提取游戏文本的方式也有自己的一些瑕疵,最大的问题就是对新手不友好,如果工具不够简单易用或某些游戏暂不被支持,那么很多人会找不到文本的Hook地址,导致无法使用翻译工具。
特殊码
业界的很多工具诸如VNR、MisakaTranslator、YUKI等都存在特殊码的概念,我们可以使用一些工具通过特殊码抓取到游戏里面的实时文本,然后这些工具再对文本进行翻译,得到结果。
特殊码实质上是用hook技术(钩子)获取游戏中显示的文本的内存地址。
例如,对于如下特殊码:
/HWN-4@1C3C29:mashimaro.exe
简单说明一下,@ 前面部分可以指定编码类型,使用的寄存器(以及其它选项),@ 后面的地址1C3C29是相对于 mashimaro.exe 这个module 的基址的偏移地址。你给定这些信息后,工具就可以hijack对应地址,替换一条指令为跳转,每次文本显示的时候都会运行这条指令,这能使劫持到的信息传递到我们的工具上来,达到显示文本的目的。
使用教程
1. 下载
GitHub 下载链接:
https://github.com/Artikash/Textractor/releases
第二个是英文版,解压后即可直接运行
2. 使用Setup.exe安装
双击打开, 选择自己的语言, 然后确定
然后选择安装位置(我放在了桌面,其实随意)
成功后可以看到里面有两个文件夹
3. 打开对应版本
根据你要查找hook特殊码的游戏的版本来决定启动x86版本的软件或者x64版本的软件。
请注意必须使用管理员身份启动!
如果你的游戏是32位的,则打开x86文件夹里的 Textractor.exe,
反之,如果你的游戏是64位,则打开x86文件夹里的 Textractor.exe。
注:
1. 不确定游戏版本时可默认启动x86版本查找器,根据个人经验90%都是x86的。
2. 如果点击注入进程后出现提示:“Textractor: 架构不匹配: 请尝试使用xxx位版本的Textractor”
例如:
则x64 换成 x86; x86 换成 x64
再次提醒用管理员身份启动!
4. 使用
当你打开后会发现有好几个窗口,
① 主窗口
先用左侧的工具栏
1. 附加到游戏
打开游戏,选中自己游戏的进程(这个不用教了吧,一般和exe同名 / 同图标;当不确定时多试试吧),然后选择OK
会看到:
接着开始游戏,刷新几次游戏文本
这时点开上方长框会发现自动匹配一排钩子
然后可以选择对应hock,每选择一个后,都要刷新一下游戏文本查找输出是否对应。如果不对应,可点击左侧的“移除此钩子”按钮来移除这个Hook方法。
最终结果:
可以看到:上方最后一句和游戏的文本完全对应,并能正常翻译。
如果没一个可行,我后面再放其他方法
②
第一行可以选择翻译成什么语言,例如我是翻译成简体中文
二是从xx语言翻译(例如英语,日语)不确定时就选?
其他不太细的介绍了,麻烦(感兴趣可以自己摸索之类的)
③
当你前面都设置完后就可以玩了,可以使用这个窗口(你想看同时看到上文也可以用主窗口)
想对来说窗口占比小,调大小和移到方法图里也说了
后面为补充①
1. 添加钩子
我大部分生肉资源都有特殊码,或网上也有很多人会分享。
这时输入我们之前保存的特殊码,注意需要做一下变化(取/和:之间的部分)。
例如我们之前保存的特殊码是
/HA8@0:gdi32.dll
则需要填入
HA8@0
又例如特殊码
/HQC@0:kernel32.dll
则需要填入
HQC@0
有时冒号后面也输入也不是不行
例如:【/HS-1C@C647:gbm.exe】
输入:HS-1C@C647:gbm.exe
或例如游戏特殊码为 [ /HS932#14@27D770:pix.exe ]
则首先使用这个注入一次HS932#14@27D770,再注入一次/HS932#14@27D770:pix.exe就可正常工作,否则出不来。
这时可能没反应, 需要再次文本刷新后可以在上方里找到自己添加的(一般排在最后,叫UserHock1)
2. 搜索钩子
按步骤来
30秒内稍微刷新一下游戏文本
结束后可以保存result到任意文件夹
长这样:
可以使用txt自带的查找功能,或有此弹窗
我们在上面输入框中填入在软件搜索hook结束前最后一次刷新的文本,例如这里是
我们在结果框里输入 体育 因为文本中包含这个字,点击“查找下一条”
这里为我们找到了结果,对比一下,跟游戏内结果一致。
我们点击“为此结果添加自定Hook”
我们在主界面中选择刚才新添加的方法,刷新几次游戏文本,发现对应一致。
注:有时候搜索Hook会找到很多条结果,可以多次注入尝试找到最佳结果。
txt里查到使用方法:
随便例子 HS65001#0@760870 => 游戏里那句话
就把“HS65001#0@760870” 用上面添加钩子的办法添加进去。
3. 有些人会制作一个插件让游戏运行时把当句话复制进剪贴板,则可以选择第二行的那个
提取出来后如何在vnr里使用
例如:复制得到的是:
1:934:7566E240:43F087:0:GetGlyphOutlineA:HA8@0:gdi32.dll:GetGlyphOutlineA
则修改为(对应上方红色内容)
/HA8@0:gdi32.dll
如果用提取器查到游戏的特殊码,不算/,从左往右数第3位是数字的话,去除一下()里内容,这样一来,特殊码就能正常在VNR的【文本设定】用
比如 【/HS932#-1C@31510:DC.EXE】
【/HS(932#)-1C@31510:DC.EXE】
× VNR的「文本设定」不能直接使用这个特殊码【/HS-1C@31510:DC.EXE】
√ 去掉932#后,特殊码可正常在VNR的「文本设定」使用
(有点想到哪写到哪)若有出错处欢迎评论指出 / 不会的也可以提问(有时间时尽量解答
mark
作者制作的教程很细心,简单易懂有些可能会出错或者搞不明白的地方都说出来了
感谢一波awa
感谢作者制作
感谢大佬分享的资源与教学 让我这个小白学会如何使用
怎么没早点看到(╯‵□′)╯︵┻━┻
不能正常翻译 显示code12002是怎么回事
点击扩展,把google translate移除了,然后右键添加扩展,选一个别的翻译,我用的是DeepL Translate
怎么添加扩展啊大佬
感谢感谢
nice
太贴心了,感谢(≧∇≦)