"陷阱"技术探秘──动态汉化Windows技术的分析 ^<]'?4m]
`i{d"H0E
四通利方(RichWin)、中文之星(CStar)是大家广为熟知的汉化Windows产品,"陷阱"技术即动态修改Windows代码,一直是其对外宣称的过人技术。本文从Windows的模块调用机制与重定位概念着手,介绍了"陷阱"技术的实现,并给出了采用"陷阱"技术动态修改Windows代码的示例源程序。 B`tq*T%
y48]|%73
一、发现了什么? a|ft l&uk
笔者多年来一直从事Windows下的软件开发工作,经历了Windows 2.0 、 3.0 、3.1 ,直至Windows 95、NT的成长过程,也遍历了长青窗口、长城窗口、DBWin、CStar、RichWin等多个Windows汉化产品。从现在看来,影响最大也最为成功的,当推四通利方的RichWin;此外,中文之星CStar与RichWin师出一门,其核心技术自然也差不多。其对外宣传采用独特的"陷阱" 技术即动态修改Windows代码,一直是笔者感兴趣的地方。 KaIKb=4L|
EXEHDR是Microsoft Visual C++开发工具中很有用的一个程序,它可以检查NE(New-Exe cutable)格式文件,用它来分析RichWin的WSENGINE.DLL或CStar的CHINESE.DLL,就会发现与众不同的两点(以CStar 1.20为例): V>$( N/1
"SF0b jG9C
C:\CSTAR>exehdr chinese.dll /v Y~ ~Dg?e
.................................. 9#LMK 1ge
,OZ
6 type offset target h\RX/C!+
BASE 060a seg 2 offset 0000 D6SUzI1+H
PTR 047e imp GDI.GETCHARABCWIDTHS |1tKQ0jg
PTR 059b imp GDI.ENUMFONTFAMILIES FU|brSt
PTR 0451 imp DISPLAY.14 ( EXTTEXTOUT ) npP C;KD
PTR 0415 imp KEYBOARD.4 ( TOASCII ) uL'f8Pqg
PTR 04ba imp KEYBOARD.5 ( ANSITOOEM ) N_t,n^i9>*
PTR 04c9 imp KEYBOARD.6 ( OEMTOANSI ) (1/Sf&2i
PTR 04d8 imp KEYBOARD.134( ANSITOOEMBUFF ) OhF55,[
PTR 05f5 imp USER.430 ( LSTRCMP ) DF%d/a{]
PTR 04e7 imp KEYBOARD.135( OEMTOANSIBUFF ) 3)OZf{D[
PTR 0514 imp USER.431 ( ANSIUPPER ) #86N
!&x
PTR 0523 imp USER.432 ( ANSILOWER ) #ydold{F
PTR 05aa imp GDI.56 ( CREATEFONT ) #J5BHY~
PTR 056e imp USER.433 ( ISCHARALPHA ) :]"5UY?oF
PTR 05b9 imp GDI.57 ( CREATEFONTINDIRECT ) OY*y<