杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2810|回复: 0

判断资源的位置和资源类型

[复制链接]
发表于 2015-1-23 16:04:47 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x

作者: 伟乾

源地址:http://teach.hanzify.org/article/71-1060185600.html   


   现在软件开发工具很多,编译出来的软件的资源类型也是各种各样。用一种方法、一个工具来汉化不同类型的软件是不现实的。我们必须根据不同的资源类型,采用不同的方法进行汉化。
  (一)资源的类型
      通常软件中需要汉化的资源,是放在.exe和.dll格式的文件中,有些软件的资源放在专门的语言文件中,一般都是文本文件,扩展名五花八们,随作者喜欢。     
  个别软件的资源,作者在编译时就隐藏起来,根本无法找到。碰到这样的软件,除了反编译,没有别的方法了,不过这种情况比较罕见。找到需要汉化的资源位置后,还需查清楚资源的类型。
      从汉化的角度看,资源的类型可分为 6种:
  ①VC类标准资源(包括Menu、Dialog、String、message table资源);
  ②Delphi类标准资源(Rcdata资源);
  ③非标准的Unicode字符(主要是一些VB编译的程序,程序的Unicode字符不出现在Menu、Dialog、String等资源中,有少数VC、Delphi编译的程序含有少量这样的字符);
  ④非标准的Ascii字符(指的是不出现在String、Rcdata等资源中Ascii字符);
  ⑤语言文件(一般指包含语言资源的文本文件,扩展名多由作者随意取);
  ⑥其它(包括Batmap资源中的文字等等)。
  这里的资源分类,纯粹是从汉化的角度,所谓的标准资源,只是我们汉化起来比较方便而已:-)
       下面,我们通过具体的软件汉化实战讲解如何判断资源的位置和类型。
       准备工具:eXeScope 5.12 或 Resource Hacker 2.4.0.2
                 Hex WorkShop 3.02
      由于大多数软件的资源都放在exe或dll文件中,我们查找资源一般都是先看看在exedll文件中是否存在需要汉化的资源和资源的具体类型:-)
      我们可以使用exe资源查看修改软件:eXeScope 或 Resource Hacker ,将软件目录的所有的exe
  dll文件打开,一一查看里面的资源,看看是否有我们需要汉化的资源(Nenu、Dialog、String或Rcdata等)。


       (1) 实战一:判断程序 Opera 的资源      
  运行eXescope,选择菜单"文件|打开"或工具栏的打开按钮,出现"打开"对话框,在"搜索"标签项选择Opera程序的目录,Opera目录的所有exe、dll文件和子目录都显示了。(如图 1)

exe-wq1.gif

      一一选择当前目录和子目录所有的exe、dll文件打开,查看是否有需要汉化的资源。我们首先选择打开文件  "Opeay32.dll",在eXeScope的信息列表窗口显示"Opeay32.dll"的文件头、导入、导出等信息,没有汉化需要的资源(resourse)信息(如图 2),表明在这个文件中没有我们要找到东西,pass。

exe-wq2.gif

      打开下一个文件"Opera.exe",在信息列表窗口显示有"Resource"资源项。单击"Resource"资源项左边的标志 + ,显示文件"Opera.exe"的具体资源项。其中 Menu、Dialog、String和Rcdata 属于前面说过的第 1、2类资源。(如图 3)

exe-wq3.gif

      查看这几个资源的具体内容,单击"Menu"资源左边的标志 + ,出现很多子项。单击选择任一子项,在eXeScope右边的信息显示窗口显示这"Menu"子项的资源内容(如图 4)。我们现在证实了这个文件里有我们需要汉化的资源,你可以直接在这里修改汉化,也可以使用其它汉化工具汉化。

exe-wq4.gif

      按照以上方法,继续把其它的exe,dll文件打开,区分那些有资源的,那些没有资源的。我们另建一个目录,把需要汉化的文件全部复制过去,就可以进行下一步的汉化工作了。     
      我们举的例子Opera,是标准的VC资源,里面的rcdata资源非常简单,与标准的delphi资源里面的rcdata资源差别很大。下面,我们再举一个标准的delphi资源例子。

     (2)   实战二:判断程序 browsermaster 的资源     
     打开文件"bmstrj.exe",显示只有String、Rcdata资源项,而没有Menu、Dialog资源项。这个就是典型的delphi/c++Build编译程序的资源特点,需要汉化的资源主要在Rcdata中。选择具体Rcdata子项,在信息显示窗口显示具体Rcdata子项(窗体)的内容(如图 5)。同样,可以在这里修改汉化,也可以用其它汉化工具汉化。

exe-wq5.gif

      注意:1.有时使用eXeScope打开文件时,会出现以下的错误信息(如图 6)。可能程序正运行或文件设了只读属性,此时关闭该程序或把该文件去掉只读属性即可!

exe-wq6.gif

           2.打开文件正常,可以看到具体的资源项和资源子项,但单击资源子项,想查看子项的内容时,出现这样的信息窗口(如图7),无法查看资源子项内容。这是因为文件使用了一些压缩加壳软件加密过,这就需要对文件进行解压脱壳处理后,才能汉化。这样的程序很多,如Acdsee,Winxfile等等。

exe-wq7.gif

      (3) 实战三:判断程序 Vopt99 的资源

      Vopt99是用VB编译的程序,资源类型与上面两个例子不同。我们打开Vopt99目录的exe,dll文件,都找不到menu、Dialog、
  String或Rcdata之类的资源。(如图 8)

exe-wq8.gif

      在Vopt99的运行界面(如图 9),记下&Defrag 和 Files and Folders 两个字符串。你一定奇怪:菜单显示的是Defrag,为何在前面加一个'&'?这是Windows标准菜单的一种默认的快捷方式,你看到Defrag菜单的D字母下面有下划线,表示用户同时按下Alt和带下划线的字母时,就可以选择相应的菜单项。表现在资源字符中,就是在字母前面加“&”。

exe-wq9.gif

      使用16进制编辑软件 Hex WorkShop  打开Vopt程序的主文件Vopt99.exe,选择菜单“编辑|查找”,出现“查找”对话框,在类型标签选择“文本字符串”,值标签填写“&Defrag”,选项标签选择“ASCII 字符串”,按“确定”。(如图 10)

exe-wq10.gif

      程序找到一个“&Defrag”字符串,高亮显示。按“F3”继续查找下一个,我们找到两个“&Defrag”字符串。(如图11,图12)

exe-wq11.gif
exe-wq12.gif

      分别选改这两个字符串为“&Defra1”“&Defra2”,保存。运行Vopt99程序,会看到修改后的效果,证实这两个字符串是需要汉化的资源。(如图 13) 

exe-wq13.gif

      按以上方法,搜索字符串“Files and Folders ”,没有找到字符串。我们在选项标签改选择Unicode 字符串,按“确定”按钮。(如图 14)

exe-wq14.gif

      程序找到一个“Files and Folders ”字符串,高亮显示。按“F3”继续查找下一个,文件只有这个字符。(如图 15)

exe-wq15.gif

      注意:1.在Vopt99这个例子中,需要汉化的资源有“非标准的Unicode字符”和“ASCII 字符”两种;           
            2.一般查找文件的汉化资源,发现没有①VC类标准资源(包括Menu、Dialog、String资源)和②Delphi类标准资源(Rcdata资源),只需要使用Hex  WorkShop 打开程序的主文件,查找有没有界面出现的字符,而不用一一打开所有的exe和 dll文件,因为一般程序的“非标准的Unicode字符”和“ASCII 字符”都在主文件中。           
            3.汉化时,发现有些程序VC类标准资源和Delphi类标准资源这两类都进行了汉化,运行时还是有英文出现,这是因为文件里存在少量的“ASCII 字符”资源需要汉化,个别情况下,是因为存在少量的“非标准的Unicode字符”资源需要汉化。

      (4) 实战四:判断程序 CompuPic 的资源
      我们首先看看程序CompuPic是否是第 1或 2种资源,用 eXeScope打开程序CompuPic目录的文件,只发现有一个Dialog子项(如图  16)。但这个程序不可能只有这点资源,一定还有其它资源类型。

exe-wq16.gif

       运行CompuPic程序(如图 17),选取菜单出现的字符串,我们这次选取复杂一点的“D&isconnect Network Drive”。使用16进制编辑软件 Hex WorkShop 打开CompuPic程序的主文件,查找“D&isconnect Network Drive”。在选项标签不论选择Unicode 字符串或ASCII 字符,都没有找到字符串“D&isconnect Network Drive”。打开其它exe,dll文件,结果都一样,没有找到字符串“D&isconnect Network   Drive”。说明这个程序存在其它的资源类型,我们继续找。

exe-wq17.gif

      这里可使用Windows的查找功能,选择“开始|查找|文件或文件夹”。(如图 18)

exe-wq18.gif

      出现“查找对话框”后,在“包含文字”标签下填写“D&isconnect Network Drive”,搜索标签选择CompuPic所在的目录,注意“包含子文件夹”标签要选定,按“开始查找”。发现在子目录ENGLISH中 main.msg文件包含这个字符串(如图 19)。打开这个文件,发现是文本格式的文件,就是我们前面说的第⑤中资源类型:语言文件。

exe-wq19.gif

(5) 其它资源类型

有些软件的英文字符比较特别,不是出现在以上的几种资源类型中,而是在图片中。对于VC编译的程序来说,是存在Bitmap 资源中。如程序Ember的工具栏按钮(如图 20),Remove IT99的其中一个界面(如图 21)

exe-wq20.gif

exe-wq21.gif

对于delphi编译的程序来说,这种图片资源是内嵌在Rcdata子资源项中的,eXeScope程序是无法看到和修改这种资源类型的,只能用另一汉化工具 Language localizator 查看和修改。
程序winace的sfxlib.dll文件的资源比较特别(如图 22),有个SFX资源项,SFX的资源子项导出来,再用 eXeScope打开(如图 23),可以看到好像一般的exe文件的资源。汉化时,我们先导出来,汉化后再导进去。这个程序的SFX资源子项都用 Petite压缩程序加了密,首先需要脱壳后,才能进行汉化。

exe-wq22.gif

exe-wq23.gif

    一般来说,汉化的资源就是以上这几种,只要你按照以上方法,一般都可以找到需要汉化的资源。不过我不能保证你一定能找到需要汉化的资源,因为有些程序编译时,就对资源进行了处理,将资源隐藏起来,根本无法用上述方法找到。

疑难解答:
    ①有朋友问,如果软件的文件很多,用eXeScope一个个打开,你想要了我的老命?有没有简便的方法?
   
其实迅速排除无关的文件的方法还是有的,你运行程序,然后打开程序的目录,选择全部文件,删除。程序正在调用的文件,是无法删除的,我们有时就是这样做某某程序的精简版。不过这个方法不太保险,在少数情况下,某些程序暂时没有调用的文件被删除,造成某些功能丧失,也使某些汉化资源遗漏。
    还有一种方法,可以快速找到某些汉化的资源在那个(些)文件中。如果资源类型是VC标准资源格式的菜单、对话框、字符串、信息表,我们可以使用 PASS Resource Finder 工具,可以在指定目录中查找含有指定字符串的资源的文件,是在进行汉化之前用来定位资源所在的辅助汉化工具。如果是delphi标准格式的汉化资源,上述方法无能为力。因为Radata资源是  ASCII字符,所以我们可以使用上文说的“使用Windows的查找功能”查找文本资源的方法,在指定目录查找含有指定字符串的资源的文件。

   ②有汉化人问:汉化某个软件,主要的界面、对话框都汉化了,发现运行时还是有少数英文字符,我按照你说的上述方法查找,把程序目录里的文件都打开检查,排除是非标准的unicode、ascii字符或文本文件。
   
出现这种情况,在排除汉化人遗漏了ascii、unicode等原因。我们都知道,程序安装时,有时会往注册表、windows的system目录下放文件或写东西。有时候,某些个别汉化资源就在这些地方,你可以到这些地方找找。有一些软件的安装后,会往系统的右键菜单添加命令,这些命令菜单的汉化资源的文件,往往在system目录里。


    我们找到资源、了解了资源的类型,就可以使用不同的汉化工具进行汉化了。汉化并不是很困难的事情,需要的是你的认真态度、“咬文嚼字”的细心、耐心与责任心!仅此而已……在以后的教程中,我们将由简入深,系统讲解汉化知识。为了使更多的计算机用户掌握这门技术,我们把长期收集汉化教学资料和自己汉化心得重新总结,将通过大量的实例,以步步为营、手把手的教学方式,让读者轻松快速地掌握软件汉化的技术和基本技巧。在本教学中引用了大量的他人的成果。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-16 12:09 , Processed in 0.135865 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表