程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 動態漢化Windows技術原理分析

動態漢化Windows技術原理分析

編輯:vc教程

陷阱"技術探秘──動態漢化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

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved