跳到主要内容

别壳、脱壳和分析

在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑。自然界中植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的 “ 壳中带籽 ” 的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为 “壳” 了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密 …… 。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的 OEP (入口点,防止被破解)。

处理加壳或加密的二进制文件是逆向工程中的一个常见挑战。加壳通常用于保护程序免受未授权分析和修改,使得逆向工程变得更加困难。使用 IDA Pro 打开和分析这类文件通常需要几个步骤,包括识别壳、脱壳和分析:

壳的概念

作者编好软件后,编译成 exe 可执行文件。

  1. 有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
  2. 需要把程序搞的小一点,从而方便使用。于是,需要用到一些软件,它们能将 exe 可执行文件压缩,
  3. 在黑客界给木马等软件加壳脱壳以躲避杀毒软件。实现上述功能,这些软件称为加壳软件。

加壳软件最常见的加壳软件

ASPACK,UPX, PEcompact 不常用的加壳软件 WWPACK32;PE-PACK; PETITE NEOLITE

侦测壳和软件所用编写语言的软件

因为脱壳之前要查他的壳的类型。

  1. 侦测壳的软件 fileinfo.exe 简称 fi.exe (侦测壳的能力极强)。
  2. 侦测壳和软件所用编写语言的软件 language.exe (两个功能合为一体,很棒),推荐 language2000 中文版(专门检测加壳类型)。
  3. 软件常用编写语言 Delphi , VisualBasic ( VB ) --- 最难破, VisualC ( VC )。

脱壳软件

软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。软件脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。

加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。

现在脱壳一般分手动和自动两种,手动就是用 TRW2000、TR 、SOFTICE 等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。

而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如 UPX ;有些不提供这功能,如: ASPACK ,就需要 UNASPACK 对付,好处是简单,缺点是版本更新了就没用了。另外脱壳就是用专门的脱壳工具来对付,最流行的是 PROCDUMP v1.62 ,可对付目前各种压缩软件的压缩档。在这里介绍的是一些通用的方法和工具,希望对大家有帮助。

我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考:

  • 脱壳的基本原则就是单步跟踪,只能往前,不能往后。
  • 脱壳的一般流程是:查壳 -> 寻找 OEP -> Dump -> 修复

找 OEP 的一般思路如下:

  • 先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常,找到对应的 popad 后就能到入口,跳到入口的方式一般为。

我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。

常用脱壳工具

  1. 文件分析工具(侦测壳的类型): Fi , GetTyp , peid , pe-scan
  2. OEP 入口查找工具: SoftICE , TRW , ollydbg , loader , peid
  3. dump 工具: IceDump , TRW , PEditor , ProcDump32 , LordPE
  4. PE 文件编辑工具 PEditor , ProcDump32 , LordPE
  5. 重建 Import Table 工具: ImportREC , ReVirgin
  6. ASProtect 脱壳专用工具: Caspr ( ASPr V1.1-V1.2 有效), Rad (只对 ASPr V1.1 有效), loader , peid
    • Aspack : 用的最多,但只要用 UNASPACK 或 PEDUMP32 脱壳就行了
    • ASProtect+aspack :次之,国外的软件多用它加壳,脱壳时需要用到 SOFTICE+ICEDUMP ,需要一定的专业知识,但最新版现在暂时没有办法。
    • Upx : 可以用 UPX 本身来脱壳,但要注意版本是否一致,用 -D 参数
    • Armadill :可以用 SOFTICE+ICEDUMP 脱壳,比较烦
    • Dbpe : 国内比较好的加密软件,新版本暂时不能脱,但可以破解
    • NeoLite : 可以用自己来脱壳
    • Pcguard : 可以用 SOFTICE+ICEDUMP+FROGICE 来脱壳
    • Pecompat :用 SOFTICE 配合 PEDUMP32 来脱壳,但不要专业知识
    • Petite : 有一部分的老版本可以用 PEDUMP32 直接脱壳,新版本脱壳时需要用到 SOFTICE+ICEDUMP ,需要一定的专业知识 。
    • WWpack32 :和 PECOMPACT 一样其实有一部分的老版本可以用 PEDUMP32 直接脱壳,不过有时候资源无法修改,也就无法汉化,所以最好还是用 SOFTICE 配合 PEDUMP32 脱壳

References