中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 06:09
中国DOS联盟论坛 » DOS汉化世界 & 中文系统 (中文化室) » EDITER2界面、功能、命令行参数丰富、规范、大改观!(15楼)
楼 主 EDITER2界面、功能、命令行参数丰富、规范、大改观!(15楼) 发表于 2005-09-06 17:06 ·  中国 江苏 苏州 电信
中级用户
★★
积分 220
发帖 82
注册 2005-09-03 10:43
UID 42197
性别 男
状态 离线
HanHua Edit v2.0 提示信息编辑v2.0 (C)1993 龚成兵 编制 (C)2002 罗明安 修改
请看附件!下载请到15楼!!!

用法:
HH2 /S 待改文件 提示文件
从'待改文件'中提取长度>=n个的信息到'提示文件' /A 只提取英文
如: HH2 /S:3 edit.com edit.hh

HH2/S 待改文件 提示文件
从'待改文件'中提取长度==n个的信息到'提示文件' /A 只提取英文
如: HH2 /S=3 edit.com edit.hh

HH2/R 待改文件 提示文件
将修改好的'提示文件'替换到'待改文件'中
如: HH2 /R edit.com edit.hh


'提示文件'行格式:

行首为类型符(.=改串 ,=改值 其余=不改)
↓偏移地址 串长 提示信息串
↓  ↓  ↓  ↓
/000001A6 000B 提示信息串
用于比较或加注释;不改动'待改文件'

.000001A6 000B 提示信息串
只能改 内信息  ;串长必须相等!

,000001A6 0004 00 1F FE 08
十六进制字节值只能手工输入:这可是真正程序员的活儿,别乱来!

最新附件请见http://www.cn-dos.net/forum/attachment.php?aid=271&checkid=bd5c5&download=1

[ Last edited by born2be on 2005-10-13 at 14:43 ]
[已使用 Gemini 解答]
Gemini 解答

技术背景与工具解析:HH2 (原 Editer2) 汉化工具的演进

本帖讨论的核心工具 HH2 是对 1993 年龚成兵开发的 Editer2 的深度改进版。这类工具在 1990 年代至 2000 年代初的 DOS 环境下被称为“提示信息编辑器”或“静态汉化工具”,主要用于提取并修改可执行文件(.EXE/ .COM)或数据文件中的硬编码字符串。

1. 核心功能与工作机制

HH2 的基本工作原理是基于静态字符串扫描

  • 提取 (G/S 命令):程序扫描目标文件,识别符合特定条件的 ASCII 字符序列或汉字机内码序列。
  • 中介文件 (.HH):提取出的信息保存在一个文本文件中,包含偏移地址(Offset)、原始串长度(Length)以及字符串内容。
  • 回写 (P/R 命令):用户编辑完中介文件后,HH2 根据指定的偏移地址将新内容覆盖回原始文件。

2. 技术改进点解析

针对原版 Editer2 的局限性,作者 born2be (罗明安) 进行了以下关键技术修正:

  • 十六进制值修改 (Hex Patching):原版仅支持字符串替换。HH2 引入了 , 前缀,允许用户直接以十六进制形式(如 00 1F FE 08)修改字节。这使得该工具具备了类似于 DEBUGE 命令的功能,能够处理非字符数据的补丁。
  • 控制符冲突解决:字符串分界符由原来的特殊符号改为了 ASCII 0Ch (Form Feed)。在 DOS 环境下,某些扩展字符可能在特定的中文系统或编辑器(如 Edit.com)中产生显示歧义或排版错误,使用非常规控制符作为界定符是为了提高解析器的健壮性。
  • 汉字识别算法 (The /H Switch)
    • /A 开关:过滤非 ASCII 字符,仅保留英文。
    • /H 开关:基于双字节检测逻辑(GB2312 内码范围),专门提取汉字。
    • 注意点:作者提到的“/A + /H < /S”现象,是因为英汉混合串可能因长度判定逻辑导致无法被单一模式捕获。

3. 历史语境下的技术限制与故障排除

在讨论中提到的几个典型技术问题反映了当年 DOS 环境的复杂性:

  • 大文件回写失败 (Post #8):作者发现 Editer2 处理超过 1MB 的文件时可能失败,而 HH2 修复了此问题。这通常与 DOS 下文件指针(File Pointer)的处理有关。如果程序使用 16 位偏移量或未正确处理 32 位寻址(DOS 中断 INT 21h, AX=42xxh),则无法操作大文件。
  • 中文系统兼容性与死机 (Post #11):在运行 UCDOS、CCDOS 等中文系统后运行 HH2 导致死机。这通常源于:
    • 内存冲突:TSR(内存驻留程序)与 HH2 争夺上位内存(UMB)或常规内存。
    • 显示中断冲突:HH2 的彩色界面可能直接操作视频缓冲区(B800:0000),而中文系统的字模驱动(如 INT 10h 的 Hook)可能在此发生截获冲突。
  • XP 环境下的显示问题:NT 内核的命令行(CMD)在运行 16 位程序时,会自动切换代码页至 437。这是导致中文帮助信息乱码的根本原因。

4. 安全性与工程规范建议

  • 等长替换原则:汉化静态资源时,新串长度严禁超过原串长度。如果超出,会导致覆盖到后续的代码段或关键数据,从而导致程序崩溃。HH2 在后期版本中加入了“超长抛弃,不足补空格”的逻辑,这是一种工程上的保护措施。
  • 环境依赖:此类工具不具备反汇编分析能力。如果文件被压缩(如 UPX, LZEXE)或加密,HH2 无法直接提取到有效字符串,必须先进行脱壳处理。

工具命令速查:

  • HH2 G <target> <info>:从目标提取字符串到信息文件。
  • HH2 P <target> <info>:将编辑好的信息文件写回目标。
  • ;n=n:设置搜索串的长度过滤条件。
2 发表于 2005-09-07 23:02 ·  中国 北京 大兴区 联通
初级用户
★★
积分 185
发帖 82
注册 2005-08-12 13:41
UID 41586
性别 男
状态 离线
哈哈,找了好久了,谢谢楼主,好东西大家分享,这种精神要坚持,支持你!
3 改进版 ? 发表于 2005-09-15 23:09 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
这个版 本和原来的版 本改进在何处?介绍一下?
就是改了介面?

[ Last edited by bush on 2005-9-15 at 23:11 ]
4 我的改进:修改16进制值、字符串分界符、彩色界面 发表于 2005-09-16 22:54 ·  中国 江苏 苏州 电信
中级用户
★★
积分 220
发帖 82
注册 2005-09-03 10:43
UID 42197
性别 男
状态 离线
我的改进:修改16进制值字符串分界符

我的改进1:现在可以修改16进制值了!这意味着可以代替DEBUG的E命令功能,修改特殊位置,实现特定目的。

我的改进2:字符串分界符由原来的▏改成了ASCII值为0Ch的字符,以避免制表符有可能出现的冲突。

我的改进3:改用了]、,表意清晰,说明用途更加有力。

小改进罢了!何足道哉!
5 发表于 2005-09-18 16:09 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re born2be:

不知 born2be 兄是否曾碰到使用 editor2 无法替换某些文件的情况,我尝试了改进后的 HH2 ,与 editor2 同样的问题表现。具体描述,见讨论帖:

{16847}问:editer2.0写回无效问题
http://www.cn-dos.net/forum/viewthread.php?tid=16847
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
6 我试过1.44兆的文件,汉化回写正常。 发表于 2005-09-19 00:13 ·  中国 江苏 苏州 电信
中级用户
★★
积分 220
发帖 82
注册 2005-09-03 10:43
UID 42197
性别 男
状态 离线
我试过1.44兆的文件,HH2汉化回写正常。不存在回写失败的问题,更没有目标文件属性的特殊效果。是不是你的系统方面的问题?或者你的Editor2的来源有可疑--病毒/恶作剧?如果不是,请把你的汉化工具和汉化对象及汉化文本,压缩打包寄过来(lmayylxt@pub.sz.jsinfo.net),让我研究一下。
7 发表于 2005-09-19 08:39 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re born2be:

你可以测试 {16847} 中 bush 的那个《简易三国志》的主文件。另外,我的测试环境是 WinXP Sp2 和 MSDOS7.10 ,文件系统 NTFS 和 FAT32 。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
8 Re:willsort 发表于 2005-09-20 01:58 ·  中国 江苏 苏州 电信
中级用户
★★
积分 220
发帖 82
注册 2005-09-03 10:43
UID 42197
性别 男
状态 离线
大文件(1MB)测试过程与结果:

1。make12.exe(见附件)
生成文件1(80个汉字/行)和2(40个对应汉字的16进制码),各长1071KB。

2。hh2/s 1 2.hh2
hh2/s 2 1.hh2
用文件1生成文件2的修改要求
用文件2生成文件1的修改要求
即:希望将文件1与2的内容完全互换。

3。hh2/r 1 1.hh2
hh2/r 2 2.hh2
用文件1.hh2修改文件1
用文件2.hh2修改文件2
结果:文件1与2的内容互换成功!


4。editer2的同类测试皆失败! I don't know why yet.

又:
测试环境:Win98se/WinXPsp2/MsDos7.1, FAT32.

[ Last edited by born2be on 2005-9-20 at 02:05 ]
附件
Make12.rar (23.5 KiB, 下载附件所需积分 1 点, 下载次数: 74)
9 又一款古董级汉化软件--E2C.EXE!(不比EDITER2差!) 发表于 2005-09-21 23:52 ·  中国 江苏 苏州 电信
中级用户
★★
积分 220
发帖 82
注册 2005-09-03 10:43
UID 42197
性别 男
状态 离线
10 最新改进:增加只搜索汉字信息开关! 发表于 2005-09-30 23:26 ·  中国 江苏 苏州 电信
中级用户
★★
积分 220
发帖 82
注册 2005-09-03 10:43
UID 42197
性别 男
状态 离线
最新改进
1)增加只搜索汉字信息开关!
2)最小搜索串长默认值改为改成了3(原6),最大搜索串长改成了100(原3000h)。


命令行上原来有只搜索英文信息的开关/A,
现在增加了只搜索汉字信息的新开关/H,
但是,用/A开关的搜索结果+用/H开关的结果<仅用/S开关的搜索结果!!!
∵英汉混合信息分别起搜长度可能不足默认值或指定值,
∴多个差异的积累,分别就大了!

版主willsort的建议很好http://www.cn-dos.net/forum/viewthread.php?tid=16847),先实现了只搜索汉字信息开关,以后再做英文说明和限定搜索范围的选择。

欢迎大家多提意见和建议!

[ Last edited by born2be on 2005-9-30 at 23:38 ]
附件
HH2.RAR (3.19 KiB, 下载附件所需积分 1 点, 下载次数: 98)
11 发表于 2005-10-04 16:25 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re born2be:

十分感谢兄对论坛发展的做出的积极贡献!

新的 HH2 已经测试过了,功能方面暂未发现问题,但是帮助信息还存在一些遗憾。在 WinXP 的命令行环境中,无论代码页也是437(英文),还是936(中文),都显示的中文乱码,因为执行16位程序,代码页会自动调整为437。解决方法是在命令行中,先运行chcp 437,再运行graftabl 936,最后运行 hh2。

而在VPC的MSDOS7.10中,我使用了tway精简版、UCDOS Lite、CCDOS97三个流行的中文系统,在运行中文平台后,再运行 hh2 都会死机,原因待查。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
12 发表于 2005-10-05 13:39 ·  中国 江苏 苏州 电信
中级用户
★★
积分 220
发帖 82
注册 2005-09-03 10:43
UID 42197
性别 男
状态 离线
如果使用中英文自动识别总是显示中文字形,就好象我的另一个软件“格式化加速器4.COM=QF.COM+KILLER.EXE+SHELL+永远显示汉字!”(http://www.cn-dos.net/forum/viewthread.php?tid=17090&page=1&sid=R5nvvv#pid100738),是否可以?请顺便测试一下显示效果。

另外,版主有解密版的VPC吗?我想使用VPC,又担心其有时间限制。先谢了!

关于死机问题,我不大理解。先给个不加密的hh2.com,请试一试!

[ Last edited by born2be on 2005-10-5 at 13:49 ]
附件
HH2.RAR (2.99 KiB, 下载附件所需积分 1 点, 下载次数: 89)
13 建议: 发表于 2005-10-09 21:29 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
提示文件与原EDITER有较大区别,
/开头的行是用于比较;

这个在手动翻译时很有用,不过,有时也有不便。
能否改一个不用“/”比较行的版本(原软件就没有)?
或加一个开关?
14 发表于 2005-10-10 08:03 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 2,223
发帖 789
注册 2005-01-27 00:00
UID 35703
性别 男
状态 离线
Re bush:
建议很好!可心考虑。

PS:
bush, 您好!好象你每次都是用繁体汉字,是台湾同胞吗?
如果是,我还想请你帮个忙:能不能将台湾使用的小型汉字系统(不管是什么内码、输入法都行),给我发一发?先谢谢了!!!

[ Last edited by 本是 on 2005-10-10 at 08:07 ]
my major is english----my love is dos----my teacher is the buddha----my friends--how about U
15 发表于 2005-10-12 17:01 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 2,223
发帖 789
注册 2005-01-27 00:00
UID 35703
性别 男
状态 离线
界面大改动!命令行丰富而有区别性、规范化!
请试用并返回情况!先谢谢了!

简体中文字符界面:
0  0 0  0 0000    000 00  0 0
0  0 0  0   0  0   0 0 0 0 0
0  0 0  0  0   0   0 0 0 0 0
00000 000000 0    0   0 0 0 0 0
0  0 0  0 00000 0 000  00 0 0 0
0  0 0  0*************************
0  0 0  0

G取出字符串 , 待翻译后 P原位写回文件1

信息使者 V2.0 (C)2003-50 罗明安 设计
电子邮件: lmayylxt@pub.sz.jsinfo.net

基于龚成兵设计的汉化工具 Editer2(C)1993

HH2 G 待取串文件
HH2 G 待取串文件 串信息文件
HH2 P 写目标文件 串值信息文件
可用命令:
G 取 字串信息 自 '待取串文件'
P 写 串值文件 到 '写目标文件'
信息文件:
第二文件省略时取串到屏幕(命令G)
  可作调试用--先看看取串效果。

必须提供给:命令P

缺省设置:
HH2 同时取汉英 & 仅显示英 &
写入对比行 & n>=3

HH2 G //ES;n 待取串文件 串信息文件
HH2 G -/CT=n 待取串文件 串信息文件
HH2 P /S 写目标文件 串值信息文件
HH2 P -T 写目标文件 串值信息文件
可用开关(开关符 - 或 /):
/ 省略对比行(以/开头)
C 仅取C汉字串
E 仅取E英文串
S 显示 S简体汉字信息
T 显示 T繁体汉字信息
;n >=n 字节 (最长: 100)
=n ==n 字节 (最长: 100)

'信息文件'的行格式如下:
偏移地址 串长 串或值信息
/000001A6 000B%|字符串信息|%
串或值对比行(也许是空行 /注释行 )
.000001A6 000B%|字符串信息
串或值信息 待翻译
,000001A6 0004%|00 1F FE 08
16进制值串 待写入 (仅供高手使用)

关于串/值信息的首尾标志
首标志总是使用;
尾标志只在首为/的对比行上出现,而不在待修改行的串/值尾出现(以方便翻译编辑)。
关于串长方面的限制:
字符串或16进制值串若超长,多余部分抛弃;
若不足,则对字符串后补齐空格,16进制值串因为危险未作补足。

英文字符界面见截图。

另:运行
HH2
HH2 /S
HH2 /T
分别获得英文、简体中文和繁体中文帮助屏。

最新附件请见http://www.cn-dos.net/forum/attachment.php?aid=271&checkid=bd5c5&download=1

[ Last edited by 本是 on 2005-10-14 at 14:30 ]
附件
HH2E.JPG
my major is english----my love is dos----my teacher is the buddha----my friends--how about U
论坛跳转: