(转)加壳

加壳

求助编辑百科名片
加壳   
加壳

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

目录

概述
详细信息
展开

编辑本段概述

  加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段。
  加壳过的程序可以直接运行,但是不能查看源代码.要经过 脱壳才可以查看源代码。
  加壳的另一种常用的方式是在 二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。
  加壳的程序经常想尽办法阻止对程序的反汇编分析或者动态分析,以达到它不可告人的目的。这种技术也常用来保护 软件版权,防止被软件破解。

编辑本段详细信息

概念

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

解压原理

  是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。现在的CPU都很快,所以这个解压过程你看不出什么东西。 软件一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别。当你加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内存中运行的。通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对程序的压缩或者不压缩。因为有的时候程序会过大,需要压缩。但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。加密代码和数据,保护你的程序数据的完整性。不被修改或者窥视你程序的内幕。
  加“壳”虽然增加了CPU负担但是减少了硬盘读写时间,实际应用时加“壳”以后程序运行速度更快(当然有的加“壳”以后会变慢,那是选择的加“壳”工具问题)。
  一般软件都加“壳”这样不但可以保护自己的软件不被破解、修改还可以增加运行时启动速度。
  加“壳”不等于 木马,我们平时的绝大多数软件都加了自己的专用“壳”。
  RAR和ZIP都是 压缩软件不是加“壳”工具,他们解压时是需要进行磁盘读写,“壳”的 解压缩是直接在内存中进行的,用RAR或者ZIP压缩一个病毒你试试解压缩时 杀毒软件肯定会发现,而用加“壳”手段封装老木马,能发现的杀毒软件就剩不下几个。
  木马加壳的原理很简单,在 黑客营中提供的多数木马中,很多都是经过处理的,而这些处理就是所谓的加壳。当一个EXE的程序生成好后,很轻松的就可以利用诸如资源工具和反汇编工具对它进行修改,但如果 程序员给EXE程序加一个壳的话,那么至少这个加了壳的EXE程序就不是那么好修改了,如果想修改就必须先脱壳。

分类

  加壳工具通常分为压缩壳和加密壳两类。
  压缩壳的特点是减小软件体积大小,加密保护不是重点。
  加密壳种类比较多,不同的壳侧重点不同,一些壳单纯保护程序,另一些壳提供额外的功能,如提供注册机制、使用次数、时间限制等。
扩展阅读:

转自:http://baike.baidu.com/view/705197.htm
引用\[1\]:  脱最重要的三步:找原始OEP,存文件,修复文件   压缩按照这三步就可以完成脱,而加密因为对PE文件的信息进行了加密处理,找到OEP只是刚开始,还需要将加密之后的代码、数据进行还原才能够完成脱。\[1\]对于dotPeek加壳,可以采取以下步骤进行破解: 1. 配置包名:首先需要配置待脱的app包名,生成config文件。可以使用adb shell命令将包名写入配置文件,例如:adb shell "echo cn.youlor.mydemo >> /data/local/tmp/unpacker.config"。\[2\] 2. 启动APP:启动被加壳的APP,并等待一段时间,每隔一定时间将自动重新脱。\[3\] 3. 提取数据:从手机中提取数据,使用adb pull命令将dump文件拉取到本地,dump文件的路径通常为 /data/data/包名/unpacker。 4. 导出jar包:使用dex2jar工具将dump文件换为jar包,这样可以方便地查看和分析加壳后的代码。 5. 查看jar包:使用jd-gui等反编译工具打开导出的jar包,可以查看加壳后的代码,并进行进一步的分析和破解。 需要注意的是,破解加壳是一项技术活,具体的步骤和工具可能会因加壳方式的不同而有所差异。以上提供的步骤仅供参考,具体操作还需要根据实际情况进行调整和优化。 #### 引用[.reference_title] - *1* [脱之简单加密](https://blog.csdn.net/qq_37771728/article/details/122208336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [脱工具:Youpk的使用详解](https://blog.csdn.net/cui_yonghua/article/details/126694457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值