chemcad帮助文件汉化

上传人:xiao****1972 文档编号:84136713 上传时间:2019-03-02 格式:DOC 页数:5 大小:138KB
返回 下载 相关 举报
chemcad帮助文件汉化_第1页
第1页 / 共5页
chemcad帮助文件汉化_第2页
第2页 / 共5页
chemcad帮助文件汉化_第3页
第3页 / 共5页
chemcad帮助文件汉化_第4页
第4页 / 共5页
chemcad帮助文件汉化_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《chemcad帮助文件汉化》由会员分享,可在线阅读,更多相关《chemcad帮助文件汉化(5页珍藏版)》请在金锄头文库上搜索。

1、CHEMCAD的汉化及其帮助文件在线功能的恢复戴 斌徐 宏1(南京化工职业技术学院化学工程系南京 210048)摘要:本文介绍了CHEMCAD的汉化技术及其帮助文件在线功能恢复,探索出了一条CHM格式帮助文件汉化后恢复在线帮助功能的技术路线:使用Microsoft HtlmHelp Workshop反编译原帮助文件,翻译网页格式的帮助文档,使用反向工程工具IDA pro或OllyDbg追踪出原帮助文件的帮助主题ID,重新编写预定义别名和ID的头文件,连同汉化后的网页,重新使用Microsoft HtlmHelp Workshop编译成CHM格式的帮助文件,即可恢复汉化后帮助文件的在线帮助功能。

2、关键词 汉化在线帮助反向工程CHEMCADIDA proOllyDbgLocation of CHEMCAD and Recovery of Its On-line Help FunctionDai Bin1 Xu Hong1 1(Department of Chemical Engineering, NanJing College of Chemical Technology, 210048,China) Abstract: A technical route about recovering the function of on-line help which is chm format

3、file after it is localized is explored: first, using Microsoft HtlmHelp Workshop to decompile the original help file and then translating the web pages; second, using reverse engineering tool, IDA pro or OllyDbg, to trace the help topic ID of original file; finally, rewriting the alias and ID in the

4、 header file, along with the localized web pages, to be compiled into chm format help file by Microsoft HtlmHelp Workshop again. So the on-line help function is restored after location. Key words: Localizion on-line help reverse engineering CHEMCADIDA proOllyDbg0 引言 化工流程模拟软件CHEMCAD作为辅助教学软件被引入到课程教学中,

5、极大的提高师生专业知识融会贯通和应用能力;但是CHEMCAD一直是英文版的,这使得只有既懂化工流程模拟的原理又具有很强的英语水平的人才能正常的学习和使用它。随着化工生产要求的进一步提高,对化工流程模拟软件的使用普及是大势所趋,然而具有大量专业词汇的流程模拟软件对广大非英语语种的工程师及高职层次的学生来说,是一个难以逾越的障碍。英文软件的汉化,网上有不少资源介绍,笔者也是在学习了这些资料后,汉化了CHEMCAD;采用的技术如下:使用SDL Passolo 汉化CHEMCAD的主窗口和菜单,使用CHEMCAD自身的二次开发工具如Dialog Editor汉化各个单元操作设备的窗口,汉化如ctalk

6、.xml、ctalk.msg等的外挂文件,这些文件主要用于显示消息框和结果报表,针对结果报表中的中文乱码,使用UltraEdit32修改CHEMCAD中相关动态链接库文件中有关字体字号的反汇编代码,汉化帮助文件。使用Wise Installation System制作中英文版的补丁包。但是当笔者汉化了帮助文件之后,却发现无法实现其原有的在线帮助功能,着实是一个很大的遗憾,网络上也鲜有解决此问题的帖子。下面就以笔者汉化的帮助文件CC6.CHM为例,讨论一下以在线帮助功能实现机制为基础,应用反向工程来恢复在线帮助功能的技术路线。1 研究方法与实现1.1 选用编译和反编译CHM格式帮助文件的软件反编

7、译帮助文件,可以将帮助文件的各个章节离解成一个个的网页文件,然后逐个翻译即可;翻译好的网页再通过编译,制作成帮助文件。编译和反编译CHM格式帮助文件的软件有很多,但是考虑到今后在线功能的恢复,最好是用Microsoft HtlmHelp Workshop,因为它可以提供映射表的制作,这是实现在线功能所必须的步骤。1.2 Htmlhelp帮助系统的接口收稿日期: 2011-12-28。作者简介:戴斌,硕士,讲师,主研领域:化工流程模拟与优化。调用CHM格式的帮助文件需要用HtmlHelpAPI函数HtmlHelp(),这个函数驻留在HtmlHelp ActiveX控件Hhctrl.ocx中1。函

8、数HtmlHelp()语法如下2:HWND HtmlHelp(HWND hwndCaller, LPCSTR pszFile, UNIT uCommand, DWORD dwData)参数hwndCaller为调用HtmlHelp()的窗口句柄,pszFile为文件、URL,或是经过编译的帮助文件的路径,uCommand指定了要执行的动作,dwData是uCommand所需要的参数。1.3 实现在线帮助的机制3,4所谓在线帮助,就是当应用程序弹出某一个人机交互窗口的情况下,按下F1键,将直接弹出该窗口所对应的帮助页面。例如在CHEMCAD中,双击流程图中某一个单元设备图标,弹出该设备操作参数窗

9、口,点击该窗口左下方的帮助按钮,或按F1,即可调出帮助文件CC6.CHM所对应的该设备的帮助页面。要实现程序的在线帮助,从MFC提供的帮助函数来看,要直接调用HTMLHelp,则需要提供给按钮“帮助”一个执行函数。使用ClassWizard增加按钮“帮助”的单击消息处理函数。以CHEMCAD中“简捷精馏塔”的窗口实现在线帮助为例,“帮助”按钮单击消息处理代码可能如下:ON_BN_CLICKED(ID_HELP, OnHelp)void CVchelpDlg:OnHelp()/ TODO: Add your control notification handler code hereHtmlHe

10、lp(NULL, cc6.chm, HH_HELP_CONTEXT,3002); 上述HtmlHelp函数中的 3002这个数值,就是程序员为“简捷精馏塔”的在线帮助页面指定的帮助主题ID。大型的帮助文件通常包含许多在线帮助页面,程序员分别为它们分配一个唯一的ID,并编写一个.h格式的头文件,预定义在线帮助页面的别名和ID;没有这样的头文件就无法实现在线帮助功能。1.4 恢复在线帮助的功能要想恢复汉化后帮助文件的在线帮助功能,关键是获得预定义在线帮助页面的别名和ID的头文件,如果程序的作者不能直接提供给你,那就只能通过反向工程跟踪主程序调用HtmlHelp函数的动态过程。笔者主要使用了汇编级工

11、具IDA pro和OllyDbg,前者以静态分析分析为主,后者以动态跟踪分析为主5。通过对调用函数HtmlHelp()实现在线帮助功能的机制分析可知,函数的第一个参数NULL;函数的第二个参数是文件名 “*.CHM”;第三个参数是HH_HELP_CONTEXT,这个参数在Microsoft HtlmHelp Workshop文件夹下的“HtmlHelp.h”头文件中被预定义为0F,即第三个参数是数值0F;如果在反汇编代码中找到以上信息,那么就容易找到第四个参数帮助主题ID的数值了。下面以笔者恢复汉化后的帮助文件cc6.chm为例,分别应用IDA pro和OllyDbg追踪到帮助主题ID的过程。

12、(1) IDA pro 追踪法用IDA pro 5.0打开CHEMCAD的运行程序,在“strings”窗口查找“cc6.chm”,共计6个,逐个双击找到的字符串,返回到反汇编窗口“IDA View-A”,字符串处于“初始化的数据块”,通过“跳转”菜单下的“跳转到操作数”或“跳转到交叉参考”查看在“指令代码”区块中参数传递的代码,如果在该代码附近有“push 0F”,可以初步判断为函数HtmlHelp()对四个参数的读取和传递,如图1所示;图1 函数HtmlHelp读取参数的反汇编代码区在图1显示的“push 0Fh”之后,有三个“call”,尽管“sub_4A6C11”没有被IDA pro分

13、析出是函数“HtmlHelp”,把鼠标放在“sub_4A6C11”上面,显示出这个函数有5个指针参数,符合调用函数HtmlHelp时参数压入内存堆栈的情况。跳转到地址“4A6C11”,在这一段代码中有字符串“hhctrl.ocx”,更加证明了“sub_4A6C11”就是函数“HtmlHelp”。接着在该地址处设定断点,然后按“F9”开始跟踪调试,IDA pro打开CHEMCAD后,按下“F1”调用帮助文件,IDA pro调试窗口“IDA View-EIP”停止在地址004A6C11处,同时在“IDA View-ESP”窗口中显示了四个参数的传递,如图2所示; 图2 IDA pro的调试窗口其中

14、第三个参数是“0Fh”,第四个参数“unk_37EA8”,是帮助主题ID的数值,点击“查看”菜单下的“计算器”命令,可查看到该数值是229032,如图3所示;图3不同进制的数值转换的计算器窗口(2) OllyDbg 追踪法用OllyDbg(汉化第三版)打开CHEMCAD的运行程序,该版本有丰富的插件和右键菜单,应用起来极其简单方便。通过右键菜单的“超级字串参考”命令,弹出“超级字串参考”窗口,通过字符串“cc6.chm”或“hhctrl.ocx”,按照上述方面,同样可以找到函数HtmlHelp()所在的地址004A6C11,用右键菜单“断点 切换”或直接用“F2”按键设定该处断点。按下“F9”

15、键,由OllyDbg调试运行CHEMCAD,在打开的CHEMCAD主窗口中拖放一个简捷精馏塔图标,双击该图标,弹出“简捷精馏塔”操作界面,按下“F1”键,OllyDbg的“CPU-主线程”窗口停止在地址004A6C11处;OllyDbg右下方的“堆栈”窗口,如图4所示,从第二行起就是HtmlHelp的四个参数,通过右键菜单“Extra”的下拉菜单,看到帮助主题ID的数值是3002。图4 OllyDbg右下方的“堆栈”窗口1.5 重新编译帮助文件3逐一找出帮助主题ID,编写预定义别名和ID的头文件,连同Microsoft HtlmHelp Workshop工程下的帮助页面文档一起编译,即可恢复汉化后帮助文件的在线帮助功能。2 结论笔者探索出了一条CHM格式帮助文件汉化后恢复在线帮助功能的技术路线:使用Microsoft HtlmHelp Workshop反编译原帮助文件,翻译网页格式的帮助文档,使用反向工程工具IDA pro或OllyDbg追踪出原帮助文件的帮助主题ID,重新编写预定义别名和ID的头文件,连同汉化后的网页,重新使用Microsoft HtlmHelp Workshop编译成CHM格式的帮助文件,即可恢复汉化后帮助文件的在线帮助功能。参考文献1 冯慧军. 跟我学HtmlHelp Workshop.chmJ/OL.(1999-11-06). http:/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号