Reverse | 使用UPX对软件进行加壳

1、相关知识:

(1)加壳

      加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码.要经过脱壳才可以查看源代码。

      加壳的程序经常想尽办法阻止对程序的反汇编分析或者动态分析,以达到保护源码的目的。这种技术也常用来保护软件版权,防止被软件破解。

(2)加壳软件

      加壳软件可分为两类:一类是压缩,一类是保护。压缩的目的是减少程序体积,如ASPack、UPX、PECompact等。保护是为了防止程序被跟踪和调 试,如ASProtect、幻影。壳的存在会让我们找不到程序的真实入口点,从而不能正确的分析反汇编程序,也就对程序起到了一定的保护作用。

(3)加壳原理

      加壳是利用特殊的算法,对EXE、DLL文件里的资源进行压缩、加密。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。它们附加在原程序上通过Windows加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。加上外壳后,原始程序代码在磁盘文件中一般是以加密后的形式存在的,只在执行时在内存中还原,这样就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序被静态反编译。

      加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。现在的CPU都很快,所以这个解压过程你看不出什么东西。软件一下子就打开了,只有你机 器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别。当你加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当你执行这 个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内 存中运行的。通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对程序的压缩或者不压缩。因为有的时候程序会 过大,需要压缩。但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。加密代码和数据,保护你的程序数据的完整 性。不被修改或者窥视你程序的内幕。

      加“壳”虽然增加了CPU负担,但是减少了硬盘读写时间,实际应用时加“壳”以后程序运行速度更快(当然有的加“壳”以后会变慢,那是选择的加“壳”工具问题)。

      一般软件都加“壳”这样不但可以保护自己的软件不被破解、修改还可以增加运行时启动速度。

      加“壳”不等于木马,我们平时的绝大多数软件都加了自己的专用“壳”。

      RAR和ZIP都是压缩软件,不是加“壳”工具,他们解压时是需要进行磁盘读写,“壳”的解压缩是直接在内存中进行的。用RAR或者ZIP压缩一个病毒你试试,解压缩时杀毒软件肯定会发现。而用加“壳”手段封装木马,能发现的杀毒软件就少得多。

      木马加壳的原理很简单,在黑客营中提供的多数木马中,很多都是经过处理的,而这些处理就是所谓的加壳。当一个EXE的程序生成好后,很轻松的就可以利用诸 如资源工具和反汇编工具对它进行修改,但如果程序员给EXE程序加一个壳的话,那么至少这个加了壳的EXE程序就不是那么好修改了,如果想修改就必须先脱 壳。

4)UPX简介

      UPX (the Ultimate Packer for eXecutables)是一个著名的压缩壳,主要功能是压缩PE文件(比如exe,dll等文件),有时候也可能被病毒用于免杀。壳upx是一种保护程 序。一般是EXE文件的一种外保护措施,主要用途:

      1、让正规文件被保护起来,不容易被修改和破解。

      2、使文件压缩变小。

      3、保护杀毒软件安装程序,使之不受病毒侵害。

      4、木马,病毒的保护外壳,使之难以为攻破。

      利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才 能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开 后,以后的就交给真正的程序。

2、安装步骤:

下载地址:http://upxshell.sourceforge.net/download.html

Dowload:UPXShell-3.2.5.2006

下载后双击exe程序:

根据引导安装程序,完成安装后打开:

3、了解UPX功能及界面

Open  File(打开)按钮功能为打开需要加壳的目标文件。

在Compress(压缩)标签中有一Go(执行)按钮”,其功能为对打开的目标文件进行压缩,在Go按钮下方有一下拉列表,可选择压缩时的UPX版本,右框显示压缩进度与压缩后文件大小。

 在Options(选项)标签中,可以选择压缩操作的属性,如:创建备份文件、载入后自动压缩、完成后自动退出、压缩完成后测试文件等,在Compression level(压缩级别)中可在更快与更好之间进行选择。

4、使用UPX对文件进行压缩

找了一个dll文件复制到桌面,使用UPX打开:

打开后会跳转到Compress标签,单击GO按钮:

压缩后,检测文件大小,如果是程序测试是否正常运行。

如果在压缩过程中报错,说明不支持,换其他软件加壳。

5、使用PEiD对压缩文件进行探测

PEiD下载地址:https://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml

打开PEiD,在文件中打开加壳后的文件,可看到加壳类型:

 

 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值