·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 特殊汉化 >> 汉化提高课─UPXPR 的脱壳方法    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

汉化提高课─UPXPR 的脱壳方法

作者: 飞鹰 来源:汉化教学 时间:2003-08-06 点击:15911

汉化提高课─UPXPR 的脱壳方法

作者:汉化新世纪成员飞鹰

在汉化软件的过程中,我想大家一定都碰到过这样的问题,要汉化的软件被加了壳,没法找到需要汉化的资源,障碍了我们的汉化工作。但我想做为一名汉化人手头一定会有很多对付特定壳(比如Aspack、PE Compact等)类型的脱壳工具,只要检测软件被加了何种壳,就利用相应的脱壳工具要脱光它身上的壳,下面就可以开始我们的汉化工作了。不过,这只是对于一般情况有用,如果大家遇到诸如AsProtect、tElock、UPXPR之类的壳,那么一般利用上面提到的这些工具来脱壳的话,大多数情况下都是以失败告终,不能使用现成的脱壳工具的处理,只能手动调试修改了。

今天,我不与大家讨论AsProtect、tElock等的脱壳方法,因为这需要有一定的基础,不是靠一两篇文章就能说的清楚;所以,我今天想与大家共同讨论一下UPXPR的脱壳方法,既然这篇文章是汉化提高篇,其中肯定有一些比较难理解的地方,还请大家细细琢磨。

想必大家在汉化过程中一定遇到过用 UPX 加壳的软件(可能会遇到很多,毕竟 UPX 很有名),通常 UPX 的脱壳方法是要查看加壳 UPX 的版本号(查看方法:用16进制编辑器打开加壳软件后往右边看并向下翻即可看到版本号,如:1.20 如图一所示) ,了解清楚版本号后,再用相应版本的 UPX 软件(或者可以用比当前版本号高的 UPX 软件)进行脱壳,命令为:UPX -D 文件名。

(图一)

那么 UPXPR 又是什么壳呢?UPXPR是修改了一些被UPX认为是自己加壳的标志(包括各种标志),这时用 UPX -D 命令就无法脱壳,但只要我们手动修复好这些被改动过的加壳标志后即可重新用 UPX -D 命令来脱壳了。下面我就来讲一下用这种保护方式加壳的软件的脱壳方法。

1、手工处理方法:加壳软件 Accent Office Password Recovery 2.00 Beta3。首先,我们知道它是被 UPX 1.20+UPXPR 保护,用UPX 1.20脱壳出现“CantUnpackException: cannot unpack UPX ;-)”错误。怎么处理呢?我们用 LodePE 打开该软件,操作步骤:单击“PE Editor”按钮-->选择文件后打开-->单击“Sections”按钮-->进入“Section Table”窗口,如图二所示。一般被 UPXPR 处理过,在该图中第一、二个块的块名都是一些其它字符,如:.code、.data,都不是UPX0和UPX1,所以要处理 UPXPR 的保护方式,第一步就是把这两块的名称改为:第一个块名改为:UPX0,第二个块名改为UPX1,如图二中红色框所示;修改方法是:先选中块-->单击鼠标右键选择“edit section header”项目-->在“Name:”框中输入新的块名(如UPX0)后,单击“OK”按钮保存后返回;但该软件没有对这两个块名进行过处理,还算比较友好。改好这里以后,再用 WinHex 打开该软件,并查找16进制 0C09,找到后把它前面的4个字节改为UPX!(如图一中红色框所示)。为什么要这样查找修改呢?因为,从 UPX 0.9x-1.20 在标志UPX!后面的4个字节均为0C 09 ?? ??(如图一中蓝色框所示),所以可以就此做为判断的标志,找到后再把它前面的4个字节改为UPX!,因为如果没有UPX!和前面提到的两个块名(UPX0和UPX1)这三个标志,UPX就无法解压了。还有就是在 0C 09 ?? ?? 这4个字节之后还有24个字节(如图一中品红色框所示),改掉其中的任何一个字节都会使UPX无法解压,所以如果不知道这些正确的数值就会无法恢复了,但UPXPR的保护方式一般都没有修改这24个字节的值,这就给了我们恢复的可能性。对于这个软件有点特殊,我们找到 0C09 这个标志是在偏移地址246E处,但一般UPX!这个标志会出现在偏移地址3E0附近(如图一中绿色框所示),就此判断查找找的地方不对,最后我查找UPX!,找到后发现它后面的4个字节是FF09050A,根据前面总结的经验很容易知道只要把FF改为0C就可以用 UPX 1.20 来解压了。

(图二)

2、软件处理方法:加壳软件 金山毒霸“求职信”专杀工具。首先,我们知道它是被 UPX 1.20+UPXPR 保护,用UPX 1.20脱壳出现“CantUnpackException: file is modified/hacked/protected; take care!!!”错误。怎么处理呢?该软件更是特殊,用 WinHex 打开软件后发现 3E0 处没有UPX!、0C09????与其后面的24个字节大部分都是00(如图三所示),显然该软件用 UPXPR 保护的很好,用上面我们讲的第一处方法处理肯定行不通,下面我就教大家用 UPXFIX 这个软件来处理这种特殊的UPXPR保护方式。操作步骤:用 UPXFIX 打开软件-->“Decompress method”选项先选中2(共有7种解压方法,我们先选中第2种,如果不行再选择其它种解压方法)-->单击“Fix”按钮,UPXFIX会自动帮你修正三个地方,分别是UPX0、UPX1、UPX!与它后面的28个字节-->之后就可以 UPXFIX 自带的 UPX 软件来解压了,如果解压过程中出现“compressed data violation”错误,你可以再在“Decompress method”选项中选择其它的解压方法再试,这七种解压方式的不同点如图四中红色框所示,如果选择“Decompress method”为2,则红色框中值分别为02、8E;为 3 是03、8F;为 4是04、90;为 5是05、91;为 6是06、92;为 7是07、93;发现没有它们会随着“Decompress method”的值增1而自动增1。对于该软件当我选择“Decompress method”为5时,用它自带的 UPX 成功解压。通过,我的大量的测试发现一般只要把“Decompress method”选项设为5,都可以成功对付UPXPR保护方式,包括上面的 Accent Office Password Recovery 2.00 Beta3 这个软件也可以用这种方法来处理,当然也有特例,下面我会讲到。对于 UPXFIX 这个软件,它能处理除 UPX 1.20+UPXPR 之外的其它UPXPR保护方式,但前提条件是UPX!与其后28个字节必须是从偏移地址3E0处开始,UPXFIX 才能帮你自动修正,否则 UPXFIX 将会出现“It's not a UPX file.”错误,就算你手工伪造从3E0处开始的这32个字节也不会成功。

 (图三)

(图四)

3、特殊处理方法:加壳软件 庄家杀手 1.800。首先,我们用16进制修改器(WinHex)打开软件后无法查找到加壳 UPX 的版本号,那么我就用 UPX 1.20 来脱壳,脱壳时出现“CantUnpackException: file is modified/hacked/protected; take care!!!”错误;该软件也无法用 UPXFIX 来进行自动修正,因为该软件从偏移地址3E0处开始没有 0C09 这个标志。怎么处理呢?操作步骤与前面我讲过的‘手工处理方法’类似,先用 LodePE 修改头两个块名为UPX0和UPX1(原先是.code和.data),之后在WinHex中查找16进制 0C09,找到后将它前面的4个字节改为UPX!(原先是...!)偏移地址是 1F5,改完这三处后再用 UPX 1.20 进行解压即可成功;为什么不知道该软件加壳的 UPX 的版本号会可以用 UPX 1.20来脱壳?因为,现在 UPX 的最高版本 1.20,记得在这篇文章开始时我讲过可以用比当前版本号高的 UPX 软件来进行脱壳,所以,将该软件修正好后用 UPX 1.20 来脱壳完全可以成功,这也证明了前面我所提出的可以用比当前版本号高的 UPX 软件来进行脱壳的经验是完全正确可行的;但用 UPX 0.72 压缩的软件,即使不加 UPXPR 保护,也不可以用 UPX 0.72 的 UPX -d 命令来脱壳,这种现象好象在一些低版本的 UPX 中存在(我没有仔细测试过),对于这些情况不在本文的讨论范围内,如果有兴趣的朋友可以发Email到flithawk@sina.com与我一起研究。

在文章的最后,我衷心感谢 真.hp 大哥写的几篇关于UPXPR的脱壳方法,这几篇文章给了我很多的启发和经验。同时,我也希望我们汉化新世纪能早日走上商业网站的正轨,成为真正的中国汉化软件站。

这篇文章中涉及到的所有修改工具,你都可以到汉化新世纪网站上去下载。

飞鹰山庄汉化天地飞鹰    写于2002年4月21日

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): 脱壳

·上一篇: 汉化提高课─解除软件自检验 ·下一篇: 再战非标准字体块-让 File Shredder 3.3 完美显示中文

· 版权申明: 本文引自《汉化教学》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《汉化教学》[ 作者: 飞鹰],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号