陷阱技術(shù)探秘──動態(tài)漢化Windows技術(shù)的分析

字號:

"陷阱"技術(shù)探秘
    ──動態(tài)漢化Windows技術(shù)的分析
     四通利方(RichWin)、中文之星(CStar)是大家廣為熟知的漢化Windows產(chǎn)品,"陷阱"技術(shù)即動態(tài)修改Windows代碼,一直是其對外宣稱的過人技術(shù)。本文從Windows的模塊調(diào)用機制與重定位概念著手,介紹了"陷阱"技術(shù)的實現(xiàn),并給出了采用"陷阱"技術(shù)動態(tài)修改Windows代碼的示例源程序。
     一、發(fā)現(xiàn)了什么?
     筆者多年來一直從事Windows下的軟件開發(fā)工作,經(jīng)歷了Windows 2.0 、 3.0 、3.1 ,直至Windows 95、NT的成長過程,也遍歷了長青窗口、長城窗口、DBWin、CStar、RichWin等多個Windows漢化產(chǎn)品。從現(xiàn)在看來,影響也最為成功的,當(dāng)推四通利方的RichWin;此外,中文之星CStar與RichWin師出一門,其核心技術(shù)自然也差不多。其對外宣傳采用獨特的"陷阱"
     技術(shù)即動態(tài)修改Windows代碼,一直是筆者感興趣的地方。
     EXEHDR是Microsoft Visual C++開發(fā)工具中很有用的一個程序,它可以檢查NE(New-Exe cutable)格式文件,用它來分析RichWin的WSENGINE.DLL或CStar的CHINESE.DLL,就會發(fā)現(xiàn)與眾不同的兩點(以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 )