动态汉化Windows技术原理分析

陷阱"技术探秘──动态汉化Windows技术的分析

四通利方(RichWin)、中文之星(CStar)是大家广为熟知的汉化Windows产品,"陷阱"技术即动态修改Windows代码,一直是其对外宣称的过人技术。本文从Windows的模块调用机制与重定位概念着手,介绍了"陷阱"技术的实现,并给出了采用"陷阱"技术动态修改Windows代码的示例源程序。

一、发现了什么?

笔者多年来一直从事Windows下的软件开发工作,经历了Windows 2.0 、 3.0 、3.1 ,直至Windows 95、NT的成长过程,也遍历了长青窗口、长城窗口、DBWin、CStar、RichWin等多个Windows汉化产品。从现在看来,影响最大也最为成功的,当推四通利方的RichWin;此外,中文之星CStar与RichWin师出一门,其核心技术自然也差不多。其对外宣传采用独特的"陷阱" 技术即动态修改Windows代码,一直是笔者感兴趣的地方。

EXEHDR是Microsoft Visual C++开发工具中很有用的一个程序,它可以检查NE(New-Exe cutable)格式文件,用它来分析RichWin的WSENGINE.DLL或CStar的CHINESE.DLL,就会发现与众不同的两点(以CStar 1.20为例):

C:\CSTAR>exehdr chinese.dll /v

..................................
6 type  offset target
  BASE  060a seg  2 offset 0000
  PTR   047e imp GDI.GETCHARABCWIDTHS
  PTR   059b imp GDI.ENUMFONTFAMILIES
  PTR   0451 imp DISPLAY.14 ( EXTTEXTOUT )
  PTR   0415 imp KEYBOARD.4 ( TOASCII )
  PTR   04ba imp KEYBOARD.5 ( ANSITOOEM )
  PTR   04c9 imp KEYBOARD.6 ( OEMTOANSI )
  PTR   04d8 imp KEYBOARD.134( ANSITOOEMBUFF )
  PTR   05f5 imp USER.430  ( LSTRCMP )
  PTR   04e7 imp KEYBOARD.135( OEMTOANSIBUFF )
  PTR   0514 imp USER.431  ( ANSIUPPER )
  PTR   0523 imp USER.432  ( ANSILOWER )
  PTR   05aa imp GDI.56   ( CREATEFONT )
  PTR   056e imp USER.433  ( ISCHARALPHA )
  PTR   05b9 imp GDI.57   ( CREATEFONTINDIRECT )
  PTR   057d imp USER.434  ( ISCHARALPHANUMERIC )
  PTR   049c imp USER.179  ( GETSYSTEMMETRICS )
  PTR   0550 imp USER.435  ( ISCHARUPPER )
  PTR   055f imp USER.436  ( ISCHARLOWER )
  PTR   0532 imp USER.437  ( ANSIUPPERBUFF )
  PTR   0541 imp USER.438  ( ANSILOWERBUFF )
  PTR   05c8 imp GDI.69   ( DELETEOBJECT )
  PTR   058c imp GDI.70   ( ENUMFONTS )
  PTR   04ab imp KERNEL.ISDBCSLEADBYTE
  PTR   05d7 imp GDI.82   ( GETOBJECT )
  PTR   048d imp KERNEL.74  ( OPENFILE )
  PTR   0460 imp GDI.91   ( GETTEXTEXTENT )
  PTR   05e6 imp GDI.92   ( GETTEXTFACE )
  PTR   046f imp GDI.350   ( GETCHARWIDTH )
  PTR   0442 imp GDI.351   ( EXTTEXTOUT )
  PTR   0604 imp USER.471  ( LSTRCMPI )
  PTR   04f6 imp USER.472  ( ANSINEXT )
  PTR   0505 imp USER.473  ( ANSIPREV )
  PTR   0424 imp USER.108  ( GETMESSAGE )
  PTR   0433 imp USER.109  ( PEEKMESSAGE )
35 relocation
s

时间: 2024-09-17 20:56:33

动态汉化Windows技术原理分析的相关文章

基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]

前面几篇给大家系统讲解的有关xmpp openfire smack asmack相关的技术和使用,大家如果有所遗忘可以参考 基于xmpp openfire smack开发之openfire介绍和部署[1] 基于xmpp openfire smack开发之smack类库介绍和使用[2] 基于xmpp openfire smack开发之Android客户端开发[3]   顺便也一起回顾下xmpp的历程 xmpp协议起源于著名的Linux即时通讯服务服务器jabber,有时候我们会把xmpp协议也叫j

汉化Windows XP/2003的磁盘扫描工具

用过Windows XP的用户都知道,Windows XP的磁盘扫描只能在开机时进行,可是面对满屏的英文,你是否一筹莫展?其实,Windows 2000/XP/2003的磁盘扫描完全可以显示中文. 1. 只扫描不修复 我们在资源管理器中右击任意驱动器名称,选择"属性",进入"工具"选项卡,单击"开始检查"按钮,可打开如图所示的对话框.如果不勾选任何修复选项,即使是对系统分区的扫描也可以在Windows环境中进行,出现的也都是中文提示.这相当于在&

巧妙汉化Windows XP/2003的磁盘工具_WindowsXP

用过Windows XP的用户都知道,Windows XP的磁盘扫描只能在开机时进行,可是面对满屏的英文,你是否一筹莫展?其实,Windows 2000/XP/2003的磁盘扫描完全可以显示中文. 1.只扫描不修复 我们在资源管理器中右击任意驱动器名称,选择"属性",进入"工具"选项卡,单击"开始检查"按钮,可打开如图所示的对话框.如果不勾选任何修复选项,即使是对系统分区的扫描也可以在Windows环境中进行,出现的也都是中文提示.这相当于在&q

J2ME手机游戏汉化技术基础

对国外手机游戏进行的汉化,使用该技术甚至可以辅助换皮技术,对公司已有手机游戏进行技术处理,替换掉游戏中的故事介绍.公司名称.公司标示,一切和原游戏有关的文字信息. 技术分析: 汉化分以下几种情况,分别详细说明. 1. 从内容上说 (1)对国外游戏的汉化.对国外游戏进行汉化,就是将非汉语翻译过来,转化为汉语. (2)国内游戏的"汉化".对国内游戏,就是更改游戏相关信息,配合换皮使用. 2. 从存储方式说 (1)相关信息存储在.class文件中.游戏相关信息存储在程序中. (2)相关信息存

解决Windows 8系统安装Photoshop CS5以及汉化等问题的方法

1.一直从Windows 8的预览版关注体验知道现在,Windows 8发布已经有半年之久了!终于下决心从Win7彻底的转移到Windows 8,而不是在双系统中某乱的切换! 2.之所以现在才要从Win7转换到Windows 8是因为Win7系统上有很多大大小小的软件和工具.有些安装还颇有些麻烦,所以才一拖再拖直到现在. 3.今天在Windows 8系统上安装了Adobe Photoshop CS5和Adobe Dreamweaver CS5.考虑到有Photoshop所以Fireworks C

Ajax技术组成与核心原理分析_AJAX相关

本文主要为大家分析了Ajax技术组成原理,供大家参考,具体内容如下 1.Ajax特点:局部刷新.提高用户的体验度,数据从服务器商加载  2.AJax的技术组成不是新技术,而是之前技术的整合 Ajax: Asynchronous Javascript And Xml;(异步的JavaScript和XML) 包括的技术:JavaScript.XML.CSS.XMLHttpRequest 异步:发送请求以后,不等结果,由回调函数处理. JavaScript:向服务器发送请求,获得返回结果,更新页面 X

【技术贴】如何汉化 myeclipse 中的svn插件

在Eclipse的configuration文件下找到config.ini文件,用写字板打开,在最后面添加上如下代码即可: 英文配置: 1. 下面配置是设置SVN插件为英文菜单:Java代码 # Set Subversion English Version osgi.nl=en_US # Set Subversion English Versionosgi.nl=en_US  汉化配置:(一般我们只做这一步即可完成汉化) 2. 下面配置是摄自SVN插件为中文菜单:Java代码  # Set Su

从汉化到国际化

摘要: 1 按照JAVA的国际化设计框架规范:如何通过Linux系统的本地化设置让JAVA应用支持中文 2 按照Java Webapp设计框架规范:通过web.xml设置解决URLEncoder.encode()方法和系统缺省编码方式相关的问题 3 以GOOGLE的搜索引擎为例:说明如何将国际化和本地化应用到自己的应用设计中(Unicode inside Locale outsite) 通过Linux系统的本地化设置让JAVA应用支持中文 Java 编程技术中汉字问题的分析及解决 这篇文章很不错

超简单的debian安装及汉化-- knoppix

KNOPPIX是由德国程式设计师克劳斯(Klaus Knopper)设计的,他把他的姓Knopper和Linux结合在一起称为「KNOPPIX」.在最近两年来,Linux系统的X-Window介面已经设计得非常完善与实用,而且在介面的美化上并不输给Windows系统,例如目前知名的Red Hat Linux.Mandrake Linux,由於Linux系统在安装上并不像Windows系统那么方便,外人总是误解「Linux安装不方便.介面不好用」而排拒Linux,因此Klaus特别把KDE版的Li