一、壳的概念

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

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

二、什么是加壳和脱壳技术?

加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。加壳一般是指保护程序资源的方法。
脱壳,一般是指除掉程序的保护,用来修改程序资源。马甲”能穿也能脱。相应的,有加壳也一定会有解壳(也叫脱壳)。
脱壳主要有两种方法:硬脱壳和动态脱壳。
第一种,是硬脱壳,这是指找出加壳软件的加壳算法,写出逆向算法,就像压缩和解压缩一样。由于,目前很多“壳”均带有加密、变形的特点,每次加壳生成的代码都不一样。硬脱壳对此无能为力,但由于其技术门槛较低,仍然被一些杀毒软件所使用。
第二种,是动态脱壳。由于加壳的程序运行时必须还原成原始形态,即加壳程序会在运行时自行脱掉“马甲”。目前,有一种脱壳方式是抓取(Dump)内存中的镜像,再重构成标准的执行文件。相比硬脱壳方法,这种脱壳方法对自行加密、变形的壳处理效果更好。

三、加壳的解压原理

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

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

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

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

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

黑客逆向破解基础-1:壳、加壳和脱壳分别是什么?加壳的解压原理介绍。相关推荐

  1. 黑客逆向破解基础-3:如何识别程序加的什么壳

    目前来说windows程序状态大体可以分为以下几种类型:未加壳.压缩壳.传统加密壳.代码虚拟化保护..Net程序加密. 识别程序加的什么壳目前常用的方法有以下两个: 1.使用查壳工具:如PEiD.Ex ...

  2. upx壳的一些简单脱壳,望大牛勿喷。

    下面是我的脱壳. 手动脱壳 1.ESP定律法查看通用寄存器ESP,数据窗口跟踪.F8单步步入,F4禁止向上跳转 2.单步跟踪法F8单步跟踪,遇CALL F7进入.直到到达OEP,经过多次F8,F4终于 ...

  3. 技术分享:逆向破解华为路由器第三部分

    技术分享:逆向破解华为路由器第三部分 引文 在前面两个部分(1,2)已经介绍了UART,BusyBox等部分的逆向调试,而这篇将会开始在流量分析方面下手,来逆向出更多的信息. 正文 请看下图,数据存储 ...

  4. 逆向破解程序脱壳篇-压缩壳

    一.普及 What?壳 所谓"壳"就是专门压缩的工具. 这里的压缩并不是我们平时使用的RAR.ZIP这些工具的压缩,壳的压缩指的是针对exe.com.和dll等程序文件进行压缩,在 ...

  5. 【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )

    文章目录 一.加壳特征识别 1.函数抽取 与 Native 化加壳的区分 2.VMP 加壳与 Dex2C 加壳的区分 一.加壳特征识别 1.函数抽取 与 Native 化加壳的区分 函数抽取 与 Na ...

  6. 【吾爱破解第一期】破解基础知识之认识壳与程序的特征

    [顶部按钮] l:日志 e:模块 m:  内存  t:线程  w:窗口 h:句柄 c:反汇编窗口 p: 修改过的信息 k:调用堆栈 b:断点 一,常见基本壳的特征: ①,vc6编译的软件: PEID查 ...

  7. [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向破解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. 安卓应用加固壳判断java厂商_Android APK加固(加壳)工具

    之前一篇文章Android proguard代码混淆,我们讲解了如何实现APK的代码混淆,让反编译者不那么容易阅读我们的源代码.虽然我们混淆,做到native层,但是这都是治标不治本的.反编译的技术在 ...

  9. 第一课时(下):破解基础之常见加壳程序特征

    文章目录 一.压缩壳 1.1 UPX 1.1.a 使用查壳工具 1.1.b 分析区段信息 1.2 ASPack 1.2.a 使用查壳工具 1.2.b 分析区段信息 1.2.c 分析入口特征 二.保护壳 ...

  10. [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向破解

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.上一篇文章分享了IDA Pro反汇编工具的基础用法,并简单讲解一个EXE逆向工程解 ...

最新文章

  1. inux 软件编译、安装、删除
  2. 使用Python,OpenCV构建透明的叠加层
  3. oracle索引中丢失in或out参数,oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1...
  4. 使用jedis实现Redis消息队列(MQ)的发布(publish)和消息监听(subscribe)
  5. CI集成 ckeditor 配置
  6. js 文件上传进度条
  7. 圣诞节插画素材|设计师再忙也要看一看,没准可以帮助到你!
  8. 初识php的笔记(基础知识)
  9. Android自定义View的构造函数
  10. css_02 | CSS——CSS 选择器详解
  11. galton板matlab,Matlab实现Galton板的动画演示
  12. Linux上查找最大文件的 3 种方法
  13. win10系统的qq无网络连接网络连接到服务器,Win10能上qq打不开网页_Win10能上qq不能上网怎么办?-192路由网...
  14. C++C++ 编写GoFGoF设计模式里Lexi样例
  15. 32 --> 详解 OpenWRT系统框架基础软件模块之netifd
  16. ubuntu12.04 GX编译环境搭建
  17. symbian学习转载
  18. BUCK启动和停止工作的波形
  19. 假如你收到了一封来自Twoo的邮件...
  20. 中国医科大学2021年12月《临床营养学》作业考核试题

热门文章

  1. Unity全新的版本发布计划(2018)【转自游戏蛮牛】
  2. Jetson-TX2双声卡TLV320AIC32x4 alsa实现同时录音与播放
  3. ZigBee空气质量监测系统设计
  4. android 空气质量代码,Android-Json数据解析之空气质量检测
  5. Elasticsearch:部署 ECE (Elastic Cloud Enterprise)
  6. java soap_Java使用SOAP协议访问webservice接口
  7. OFDM系统中的信道估计基础知识
  8. mybatis批量更新报错问题解决
  9. 多任务学习 Multi-task learning
  10. ThinkPad Z61t系统重装