汉化方法:
- 下载或编译一份 Qt Linguist 翻译工具。
- 解压压缩包所有文件到程序目录。
- 使用 Qt Linguist 开启 lang 目录下的 zh.ts
- 进行翻译,记得保存。
- 通过 File -> Release 生成程序用的翻译文件,重启程序或重新选择语言可以生效 (有一小部分文字需要重启程序才能生效)
支持的 Simplify3D.exe 文件校验(因为网上随便下的,官网没有提供试用链接,不知道是不是最新的)
- Simplify3D.exe
- MD5: 66a82f3fc1d6a9240c470ea698ab0b56
- SHA1: 736915002b781a6445ac430e4a315d0999a582c3
复制代码 home.php?mod=space&uid=438454
补全缺失翻译,下载后替换原始文件即可;也可以使用工具将新增部分合并过去
免 UAC 绿化程序:
软件本身就是绿色版(除了设定写出到注册表),直接复制出来就能用。
外挂汉化开发包内置了注册表文件,但将其导入需要管理员权限;用 FASM 写了个简单的免 UAC 版。
程序是 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 里面把函数名改成别的… 但当时没想到所以算了)
然后就是将语言选择的日语的字串引用修改成我的,没什么技术含量,就不多说了…
|
|
你可能喜欢
开源3D建模软件FreeCAD 1.0正式发布,支持W
人工智能与3D打印技术结合,实现小型核反应
最新《Nature》:动态界面3D打印
石墨烯增强混凝土能否推动可持续建筑? UVA
推荐课程
神奇的3D打印
SLA3D打印工艺全套培训课程 - 软件篇
3D打印月球灯视频教程 包括完整贴图建模流
【原创发布】Cura软件修改二次开发定制视频