专业词汇太多,只能看得半懂,加上自己懒,于是就这样了。
汉化过的部分就这个界面上的这些,对照着「全精校翻译」的图片做的。
汉化方法:
- 下载或编译一份 Qt Linguist 翻译工具。
- 解压压缩包所有文件到程序目录。
- 使用 Qt Linguist 开启 lang 目录下的 zh.ts
- 进行翻译,记得保存。
- 通过 File -> Release 生成程序用的翻译文件,重启程序或重新选择语言可以生效 (有一小部分文字需要重启程序才能生效)
支持的 Simplify3D.exe
文件校验(因为网上随便下的,官网没有提供试用链接,不知道是不是最新的)
Simplify3D.exe
MD5: 66a82f3fc1d6a9240c470ea698ab0b56
SHA1: 736915002b781a6445ac430e4a315d0999a582c3
@fffbi
Simplify3D-4.0.1 外挂汉化开发包.zip
(492.32 KB, 下载次数: 386)
补全缺失翻译,下载后替换原始文件即可;也可以使用工具将新增部分合并过去(需要上面附件的外挂汉化补丁)。
汉化条目补全 (只有几条简单的翻译过了).7z
(16.04 KB, 下载次数: 119)
免 UAC 绿化程序:
软件本身就是绿色版(除了设定写出到注册表),直接复制出来就能用。
外挂汉化开发包内置了注册表文件,但将其导入需要管理员权限;用 FASM 写了个简单的免 UAC 版。
免 UAC 绿化程序.7z
(6.76 KB, 下载次数: 121)
程序是 QT 写的,无壳,自校验+启动时检测调试器,资源内嵌(QT 打包,不懂解)。
观察 QT 文档,发现可以调用内部 API 直接复制资源文件出来到文件系统。
于是就用 多行汇编 插件写了段代码插进去:
<$simplify3d.2CF3E8>
@QString:
<$simplify3d.2CF590>
@QFile__Copy:
<$simplify3d.2160AD>
@start:
; 此处放置一个断点
lea rdx, [@src]
lea rcx, [rbp+0x88]
call [@QString]
lea rdx, [@target]
lea rcx, [rbp+0x80]
call [@QString]
lea rdx, [rbp+0x80] ; dest
lea rcx, [rbp+0x88] ; src
call [@QFile__Copy] ; QFile::Copy
jmp @start
@target:
"./ja.qm\0"
@src:
":/Resources/Translations/simplify3d_ja.qm\0"
然后点击菜单的 Help -> Change Language 触发,依次提取不同语言的翻译文件。
DLL 本来是打算用 version.dll 注入的,奈何注入时机有点晚,需要用户手动重新选择语言(有部分文字需要重启生效),于是挑了个软柿子:
把这个 DLL 引用(api-ms-...
)改成自己的,然后自己也导出一份不同名字(但是要够长)的 DLL:
extern "C" __declspec(dllexport) size_t wcstombs_jixun(char* mbstr, wchar_t const* wcstr, size_t _MaxCount)
{
wcstombs_s(&_MaxCount, mbstr, _MaxCount, wcstr, _MaxCount);
return _MaxCount;
}
- 免运行时编译(编译选项 MT)不允许与这个函数重名
- 安全编译选项不允许我引用
wcstombs
这个函数…
最后编译完了,用十六进制编辑器寻找 wcstombs_jixun
文字然后把下划线改成 00
,强制更改函数名。
(其实还可以在 zlib.dll 里面把函数名改成别的… 但当时没想到所以算了)
然后就是将语言选择的日语的字串引用修改成我的,没什么技术含量,就不多说了…