(二)HOOK(进程钩子)
(1)百度的定义:HOOK技术即钩子函数,钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
通俗的讲,就是用管理员权限,向你的应用程序进程里插入一个监视器,监听并提取文本,有的甚至可以直接修改文本
如果想了解本质,请看D佬的视频BV1hU4y1Q74d
(2)了解gal引擎
如果你使用过vnr你就知道有个东西叫做特殊码,但我并不知道它和进程号之间是什么联系,不过我也不需要知道,只要明白特殊码可以帮助机翻工具hook到文本就行了。
而特殊码这个东西,与gal使用的引擎有很大关系。因此vnr虽然支持大多数gal,但对一些偏门引擎制作的gal无能为力。注意,hook不是都需要用特殊码的。
也就是说,hook对一些常见的引擎是可以做到轻松获取文本的,如果不能,你就只能选择ocr或者解包了。
常见的引擎,主要有:krkr(krkr2、krkrz)、BGI等等
其他的引擎请参见这个网页:
网页链接 (3)hook的使用流程:
①管理员权限,这很重要
②找到你的gal进程(进程号)
③将hook注入进程,意思就是开始监听
④开始游戏,获得一两句文本,然后再看hook到哪些东西,然后选择那个能正确hook到文本的钩子
(4)目前使用hook来获取文本的机翻工具:
御坂翻译器、lunatranslator、VNREX等
(5)hook对比ocr
优点:速度快,正确率高(或者说能hook到就一定是对的,不然就是错的)
缺点:有些引擎制作的gal不能用hook,但ocr却是都可以
(6)编码的问题
不同语言的编码不同,日语常用的SHIFT JIS,简体汉语用的GBK等等
没有选对编码可能导致乱码。