软件教程
看到⽹上经常有⼈问⽅⾯的东西,我今天也来灌⽔⼀篇,来个扫盲教程。写的不好的地⽅欢迎⼤家指正!OK,现在我们进⼊正题。我这⾥所说的,是指Windows 下的 PE ⽂件,把其他语⾔界⾯的程序翻译为中⽂界⾯。要⼀个软件,⼀般的流程是这样:
⼀、检测软件是否加了壳。
⼀个软件前我们⾸先要做的就是要看看软件是否加了壳。因为程序加了壳后,⼀般情况下资源也被压缩了,使⽤普通的⼯具是⽆法的。这时⼀般有两种办法:⼀种是完全脱壳后再,这种⽅法可以的⽐较彻底;另⼀种是壳太猛,不好脱,只好退⽽求其次,⽤ freeRes 这样的⼯具来释放⼀下资源,再来。这种⽅法只能标准资源,⼀般就是主界⾯看到的部分,⾮标准资源因为未脱壳,还是⽆法,所以这种⽅式的不彻底。平常我们看到的软件⼀般都是完整的,就是有壳的脱了壳,标准资源和⾮标准资源都了。这⾥脱壳后的⽂件优化也要注意,平常我们分析软件的时候,只要脱了壳,程序能正常运⾏,没有功能丢失就可以了,但要能的话要求要严格⼀些。因为要使⽤⼀般的⼯具来程序的话,最好脱壳后程序的资源段(⼀般区段名称是 .rsrc)要放在最后,这可以使⽤ FixRes 或 freeRes 这样的⼯具来重建资源。另外,平常我们把脱壳后的程序优化时可以⽤ LordPE 删除垃圾区段,再重建⼀下。但若要⽤⼯具来这种⽤ LordPE 优化重建后的程序,
罗生门事件很可能⽣成的程序运⾏时会出错。如果你要会⼿⼯优化的话那是最好,可以删除垃圾区段,根据⽂件对齐粒度和区段对齐粒度等来优化⽂件,这样⼿⼯优化后的⽂件⼀般时不会出错。关于优化脱壳后⽂件这⽅⾯也有相关⽂章,我就不多说了。改天若有空我会专门写⼀篇这样的⽂章,不过不要过于期待,我向来喜欢开空头⽀票的
如果不会⼿⼯优化,可以在脱完壳重建资源后就⽤⼯具来,完成后再⽤ LordPE 这样的⼯具来优化⼀下后的程序就可以了。
⼆、检测程序资源类型。
检测程序资源类型我们同样可以⽤ PEiD、FI 这样的⼯具,主要是看程序是⽤什么开发⼯具写的。各个开发⼯具编译出来的程序标准资源类型是不同的。⼀般可以分以下⼏种:
1、VC、MASM 这样的开发⼯具做出来的程序要的标准资源主要在 Menu、Dialog、String 等中。
2、Delphi、C++Builder 这样的 Borland 公司开发⼯具做出来的东西要的标准资源主要在 Rcdata 和 String 中。
林志颖儿子kimi3、VB 开发的程序,这种程序我们⼀般所说的标准资源是指 Form 中的资源,这种 VB 编的程序⽬前
还没有可以可视化编辑界⾯资源的⼯具,相⽐较⽽⾔起来不是很痛快;)
4、上⾯说的主要是标准资源,再说⼀下⼀般定义的⾮标准资源。⾮标准资源⼀般简称为⾮标,指在程序中出现,但⼜不在标准资源中的 UNICODE 字串或 ASCII 字串,这类字串需要其他的⼯具。
判断完程序是什么开发⼯具做的,我们就对资源类型⼤致有数了。下⾯就可以开始着⼿了。
三、使⽤合适的⼯具
这⾥⾸先要说明⼀下,像什么 eXeScope、ResScope、ResHacker、PE Explorer 这样的⼯具严格来讲都不是⼯具,只能说是资源修改⼯具。⼀般所说的⼯具是指如Visual Localize、PASSOLO、Multilizer、Alchemy CATALYST 这样的⼯具。这些⼯具都是可以可视化调整调整界⾯的,不过这些⼯具都不能⽤来 VB 编的程序,关于VB 编的程序要使⽤其他的⼯具。现在针对上⾯所说的资源类型来谈谈⼯具的选⽤:
1、VC、MASM 类程序:这种程序可以⽤上⾯提到的任何⼀款⼯具,就我个⼈来讲,我⽐较喜欢⽤ PASSOLO,Visual Localize 也是个很不错的选择。
2、Delphi、C++Builder 类程序:这种程序可以使⽤ PASSOLO、Multilizer 来,⼀般⽤ PASSOLO 时应该选择 PASSOLO 的 UNICODE 版本。对这类程序,还可以采⽤外挂语⾔包的⽅式来
标准资源。这种外挂语⾔⽂件的⽅法对⼀些加了猛壳,且⼜不想脱壳或不好脱壳的程序⾮常有⽤。因为 Borland 公司的编译器编译出来的程序默认对语⾔⽂件⽀持,编译好的程序会⾃动检测是否有语⾔⽂件。⼀般的未加壳的此类程序,要采⽤语⾔⽂件标准资源的话,只需⽣成对应的语⾔⽂件放到原程序⽬录就可以了。对于加了猛壳的此类程序,如果只是标准资源的话,不需要脱壳,只要⽤ freeRes 这样的⼯具释放⼀下压缩资源,再释放资源后的程序,⽣成语⾔⽂件后放到原程序⽬录下就可以让主界⾯显⽰对应语⾔了。⽤ PASSOLO、Multilizer 来这样的程序,还有⼀些区别的地⽅:
张靓颖新恋情曝光(1)、PASSOLO,这类程序时选⽬标为简体中⽂时默认⽣成的⽬标是后缀名为 CHS 的⽂件。不过⽣成的⽂件其实只是改了后缀名的后的 EXE 或 DLL 等可执⾏⽂件。这可以预先设置⼀下⽬标⽂件的后缀名,使⽣成的后的⽂件后缀名为 EXE 或 DLL 等这样的可执⾏⽂件。如果只是想⽣成语⾔⽂件,最好在⽣成⽬标⽂件的⾼级选项中设置⼀下,把⽣成纯资源 DLL 的选项选上,再把⽣成的CHS⽂件的和资源⽆关的项如图标、位图等删掉,减⼩体积。
(2)、Multilizer,这个⼯具此类的程序时,默认⽣成的就是语⾔⽂件,要想⽣成后的可执⾏⽂件,要在⼯程选项中把输出⽂件中的“已本地化的⽂件”选项选上。⽽⽣成的简体中⽂语⾔⽂件⼀般也使以 CHS 为后缀名。
人事专员工作职责采⽤语⾔⽂件⽅式的话,只要把完标准资源的语⾔⽂件和原程序放在同⼀⽬录就可以让主界⾯显⽰中⽂了,不受主程序是否加壳的影响。这⾥要注意的是语⾔⽂件名要与原程序名称⼀致,如你要 ,语⾔⽂件名就要是 test.CHS,同样,你要是把 改名为 ,语⾔⽂件名也相应要改为 test1.CHS。
3、VB 类程序:这种程序⽬前可以⽤来的⼯具有 VB 窗体器、GetVBRes、新出的 VBLocalize 等。缺点就是没有可以可视化调整后界⾯的⼯具。
4、⾮标准资源:这类⾮标资源的主要采⽤的⼯具有点睛字符串替换器、CXA、枫叶字符替换器等。主要功能是把原程序需要的⾮标字串提取出来,完后再写⼊。⾮标资源要求程序必须没有加壳,且这个地⽅不当的话容易让程序出现问题,⽐如不能的字串了等等这样的情况,会让程序运⾏出错,也就是常说的过度。所以⾮标资源时要特别注意,要多测试,防⽌出现因引起的 bug。
四、标准资源中的字串
⼀般的⼯具都⽀持字典及导⼊导出功能,字典主要靠⾃⼰积累,你的软件越多,⽣成的字典越多,起其他程序来就越快。因为很多内容都可以直接⽤字典来完成。如果是⼀个新的程序,且⼜没有什么可⽤的字典怎么办?我⼀般的做法是采⽤⼯具的导出功能,把没翻译的源英
⽂字串直接导出(这⾥注意如果是⽤ Multilizer 导出的话,需要把⽬标翻译语⾔栏全选,再粘贴原始语⾔,这样导出的采⽤ TAB 分隔的 ASCII ⽂本才好转换为对照⽂本),再⽤字典转换⼯具如 Fantasy Editor 或开⼼字典转换⼯具把导出的⽂件转换为对照⽂本,这样就可以采⽤ SeaTools 这样的⼯具来进⾏机器翻译,机器翻译完后再进⾏⼿⼯修改,全部翻译好后再⽤上⾯说的字典转换⼯具转换为对应⼯具的字典⽂件,现在就可以⽤这样的字典⽂件来翻译原程序了。
五、调整界⾯,设置对话框字体,其他内容
设置字体⼀些⼯具在创建⼯程时就可以完成,如⽤ Visual Localize 的话需要在⼯程中设置⼀下对话框字体。字串完后要做的⼯作就是调整界⾯,因为后有些对话框的
字串会显⽰不全,按钮过⼤或过⼩,对话框⼤⼩不合适等等都要调整。如果还有什么其他的资源如图⽚等要的,可以导出后修改了再导⼊。
周慧敏刘锡明六、⾮标资源中的字串
关于教师节的由来标准资源完成后就要开始⾮标准资源字串了。⽅法与标准资源类似,⽤我上⾯所说的⾮标资源提取⼯具先把⾮标字串提取出来,删除不需要翻译的,再做⼀下字
典转换(对于点睛字符串替换器、CXA 这样的⼯具,如果有当前的程序以前的⾮标字串翻译,可
以直接作为字典导⼊),先机器翻译,再⼿⼯修改后导⼊。⾮标字串如果有经验的话⽐较好,⼀般可以看出那些东西是需要翻译的哪些是不需要翻译的,哪些翻译后字串长度⽐原字串短时补 0 还是空格。如果没什么经验,就要多测试了。
七、后程序测试及字体调整
这个地⽅是⽐较繁琐的,因为后有可能造成程序出错,这⾥就要重点检测⾮标部分。另外后有些地⽅的字体⽐较难看,这些地⽅是⽆法通过在标准资源中设置字体来修改的,这时就要通过调试来设置字体了。设置字体在 OD 中主要断这⼏个函数:CreateFontA(W)、CreateFontIndirectA(W)、GetStockObject。到地⽅再作修改。
说到这⼤致差不多了,其他的还有⼀些⾮标字串后字串长度超过原字串长度,需挪移修改、后有程序有⾃校验需去除、字串加密后的等等,我就不再这⾥说了,⼤家可以⾃⾏参考新世纪的相关⽂章。此外还有⼀些图形界⾯游戏的是不能采取我上⾯说的这样的⽅法的,如你要 StarCraft,⽤我这种⽅法是不⾏的。这样的游戏可能要你分析程序,采⽤外挂⽅式来,这⾥不作讨论。
现在的软件和补丁是越来越多了,你肯定也想⾃⼰⼀些软件试试吧。肯定你⼜会以为这是很⿇烦或者很难的事情,只有⾼⼿才会做,其实并不是这样,你也完全可以⾃⼰⼀些软件,有
些⽅法还是很简单的,不需要设计到编程的知识。不相信,不相信就听我下⾯给你介绍三种⽅法,保证你看完后,你也能⼀些平常见的软件了。(哎,我把胸⼝都拍痛了)
第⼀种⽅法:
直接修改源⼆进制的代码,不要紧张,也不要被吓倒,很简单的。这⾥需要⽤到⼀个⼆进制代码查看器,如果你没有,我推荐你⽤⼀个名字为Ultra Edit的编辑器,相信你已经⽤过这个编辑器,(没有⽤过?没有⽤过也不要紧,往下看!)这个软件⽐Windows⾃带的记事本的功能强⼤许多,⽤法上倒没有什么复杂的地⽅,⾄于具体好在哪⾥,我就不说了,呵呵,可以⾃⼰看看专门介绍它的软件。⽐如说,我们要⼀个英⽂软件,就⽐如Turbo C吧,把菜单中的“File”成中⽂的“⽂件”。⽤此编辑器打开TC的可执⾏⽂件tc.exe,当然啦,在做这之前,你要先备份好你要操作的⽂件,免得到时候没有成功,倒弄坏了⽂件,回不来了。打开以后,就可以看到它的原⼆进制代码⽂件。这时候,你选择查功能。从⼆进制中查到“file”,倒后,将它修改成“⽂件”,然后关闭,执⾏这个⽂件,看看是不是已经了。当然,这次你到的不⼀定就是你要的菜单,不⼀定会成功。这就需要反复实验了。
这类⽅法⽐较累,并且也不⼀定准确。这种⽅法现在也基本没有⼈使⽤了。
第⼆种⽅法:
这种⽅法是⽐较简单的⼀种,但这种⽅法只能适⽤于带有语⾔选择的软件,这样的软件不是很多,只能是偶尔逮着⼀个,⽅法很简单,到它的语⾔选择⽂件夹,⾥⾯会有各个语⾔的选择⽂件,⽐如FlashGet的language⽬录下⾯有三⼗⼏个国家的语⾔版本。这⾥⾯已经有中国的了,假如你想新建⼀个的话,则也可以⽤记事本按照它的格式建⽴⼀个语⾔版本。提供给⼤家的⼀个思路就是将它的原语⾔版本复制⼀个后,⽤记事本打开,然后按照它的格式修改,将它的内容换成你的内容,注意要⼀⾏⼀⾏地换,如果你把两⾏弄到⼀⾏去了,这就可能会产⽣错误了。换完后,你也就已经了这个软件了。
这种⽅法⽤途不是很⼤,⼀般的多语⾔版本的程序都有中⽂的语⾔版本,不需要你的了。
第三种⽅法:
好的⽅法当然留在最后讲,这种⽅法是者们经常⽤的⼀种,那就是修改⽂件的资源⽂件。我们知道,⽤VC和DEPHI编译成的软件都有资源⽂件。⾼⼿呢,就是打开VC,直接修改内核,⽽我们嘛,就不必掌握这些复杂的⽅法了,这⾥给⼤家介绍⼀个简单的⽅法,⽤eXeScope软件修改,特别的简单。(没有听说过?那没有关系,⽹络学院⾥⾯有教程的)像这类的软件还有很多,不过这个历史⽐较长,使⽤也⾮常的简单。就给⼤家介绍它了。⽐如我们要OICQ,当然这本来就是中⽂版了,不需要,没有关系,这⾥只是给⼤家演⽰⼀下的过程⽽已。(要详细了解eXeScope,有专门的⽂章介绍)
启动eXeScope,选择⽂件菜单,再选择打开,打开QQ的可执⾏⽂件。这时候左边的资源栏⽬⾥⾯就会出现该⽂件的全部资源,包括什么头部⽂件,导⼊的动态连接库,以及它所⽤到的资源⽂件。⽽资源⽂件,就是我们时要终点修改的内容。从资源中间选择菜单(⼀般就是菜单和对话框)当菜单栏⽬展开以后,你可以看到右边的栏⽬⾥⾯有该菜单的全部内容了,这时候,只需要你⾃⼰改动就可以了,将各个菜单的名字都改成你所要的名字就可以了,⽐如说要是“File”,你讲它改成“⽂件”就可以了。注意的是“&”这个符号,编过程序的⼈应该知道,这个是不能动的,如果你不知道意思,只要记住,这个符号的意义是:这个符号后⾯紧跟的字母是这个菜单的快捷键,就像记事本的菜单“⽂件(F)”那么这个F就是快捷键,最好不要删除掉。⽐如说有个菜单为:“&Edit”,那么你换的时候,就不能把快捷键去掉,把它写成“(&E)编辑”,就可以了。这是⼀个要注意的地⽅。
还包括对话框,同样从左边资源树中点开对话框,从右边就可以看到各个具体的标签与空间的名称了,只需要将各控件显⽰的⽂字改过来就可以了,按下F8键,就可以可视化地进⾏修改了。将修改后的⽂件保存就可以了(在编辑菜单中有“保存修改”项)。你运⾏⼀下你刚才修改过的⽂件,可以看到修改后的效果了。
当然啦,eXeScope的功能远不⽌这⼀些,但是⾮常好的⼀个功能。*_*
软件要注意的⼏点是:
1. 前的备份,如果失败,还可以还原回来。切记!
2. 软件的时候,最好就不要做别的事情了,因为我们都是刚学的⼈,有可能某个错误,⽽使软件运⾏后死机,如果你别的⽂档没有存盘,可不要说我没有预先通知你了。呵呵。
3. 习惯问题,为了软件的通⽤性,⼀般都把“File”成“⽂件”,把“Edit”成“编辑”,最好遵守⼀下这个规则。
4. 软件版权问题,还是尊纪守法的好,打官司了,不要说是我害了你哟。
希望上⾯的⽅法会对⼤家有⼀点帮助,谢谢。
发布评论