《金蝉脱壳》中哪些“壳”读qiào,哪些“壳”读ké?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《金蝉脱壳》中哪些“壳”读qiào,哪些“壳”读ké?相关的知识,希望对你有一定的参考价值。


壳 #ké
【释义】物体坚硬的外皮:外壳|贝壳|脑壳|蛋壳。
===================关于这个字的更多的信息=================
壳 ke
壳 qiao
蠃蚌脱壳。――
又如:躯壳;甲壳;地壳;金蝉脱壳;介壳;外壳;躯壳;枳壳
壳(壳)ké
⒈坚硬的外皮:螺蛳~。鸭蛋~儿。荔枝~儿。
⒉见qiào。
壳(壳)qiào
⒈坚硬的外皮:皮~。地~。甲~。
PE(Portable Executable,也就是EXE和DLL)文件所具有的起压缩、加密、保护作用的东西。可以用PEiD等软件查壳。
加壳通过修改程序入口点等压缩、加密、保护EXE和DLL。
在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑。自然界中植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。
(一)壳的概念
作者编好软件后,编译成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
(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脱壳就行了
(2)ASProtect+aspack:次之,国外的软件多用它加壳,脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识,但最新版现在暂时没有办法。
(3)Upx: 可以用UPX本身来脱壳,但要注意版本是否一致,用-D 参数
(4)Armadill: 可以用SOFTICE+ICEDUMP脱壳,比较烦
(5)Dbpe: 国内比较好的加密软件,新版本暂时不能脱,但可以破解
(6)NeoLite: 可以用自己来脱壳
(7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE来脱壳
(8)Pecompat: 用SOFTICE配合PEDUMP32来脱壳,但不要专业知识
(9)Petite: 有一部分的老版本可以用PEDUMP32直接脱壳,新版本脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识 。
(10)WWpack32: 和PECOMPACT一样其实有一部分的老版本可以用PEDUMP32直接脱壳,不过有时候资源无法修改,也就无法汉化,所以最好还是用SOFTICE配合 PEDUMP32脱壳
我们通常都会使用Procdump32这个通用脱壳软件,它是一个强大的脱壳软件,他可以解开绝大部分的加密外壳,还有脚本功能可以使用脚本轻松解开特定外壳的加密文件。另外很多时候我们要用到exe可执行文件编辑软件ultraedit。我们可以下载它的汉化注册版本,它的注册机可从网上搜到。ultraedit打开一个中文软件,若加壳,许多汉字不能被认出 ultraedit打开一个中文软件,若未加壳或已经脱壳,许多汉字能被认出 ultraedit可用来检验壳是否脱掉,以后它的用处还很多,请熟练掌握例如,可用它的替换功能替换作者的姓名为你的姓名注意字节必须相等,两个汉字替两个,三个替三个,不足处在ultraedit编辑器左边用00补。
常见的壳脱法:
1.aspack壳 脱壳可用unaspack或caspr 1.unaspack ,使用方法类似lanuage,傻瓜式软件,运行后选取待脱壳的软件即可. 缺点:只能脱aspack早些时候版本的壳,不能脱高版本的壳 2.caspr第一种:待脱壳的软件(如aa.exe)和caspr.exe位于同一目录下,执行windows起始菜单的运行,键入 caspr aa.exe脱壳后的文件为aa.ex_,删掉原来的aa.exe,将aa.ex_改名为aa.exe即可。使用方法类似fi 优点:可以脱aspack任何版本的壳,脱壳能力极强缺点:Dos界面。第二种:将aa.exe的图标拖到caspr.exe的图标上***若已侦测出是aspack壳,用unaspack脱壳出错,说明是aspack高版本的壳,用caspr脱即可。
2.upx壳 脱壳可用upx待脱壳的软件(如aa.exe)和upx.exe位于同一目录下,执行windows起始菜单的运行,键入upx -d aa.exe。
3.PEcompact壳 脱壳用unpecompact 使用方法类似lanuage傻瓜式软件,运行后选取待脱壳的软件即可。
4.procdump 万能脱壳但不精,一般不要用 使用方法:运行后,先指定壳的名称,再选定欲脱壳软件,确定即可脱壳后的文件大于原文件由于脱壳软件很成熟,手动脱壳一般用不到。

“壳”在汉英词典中的解释(来源:百度词典):
1.a shell; a hard surface
1.a shell
2.[Mechanics] a housing; a casing; a case
参考技术A 金蝉脱壳
(qiào)
开始脱壳了(ké)
刚出壳的蝉除了背上那一层保护甲(ké)
参考技术B 拼音】qiào

【注音】ㄎㄜˊ
ㄑㄧㄠˋ
田字格中的“壳”字
【仓颉】
g
b
h
n
【部首】士[1]
读音:ké
1、〈口〉[名]坚硬的外皮:蛋~‖贝~‖脑~‖驳~枪。[2]
2、亦称“壳体”。工程结构的一种常见形式。由两个曲面所限定的厚度(即两曲面之间的距离)较物体的其他尺寸为小。当壳的厚度与其曲面率半径的比值小于0.5时,称为“薄壳”,反之称为“厚壳”。根据薄壳的性质,通过简化弹性力学的基本方程而建立起来的求解方法称为“薄壳理论”。
3、注音时为:ké。
读音:qiào
1、义同“ké”,用于书面语词:甲~‖地~‖躯~‖金蝉脱~。[2]

脱壳系列_0_FSG壳_详细版

1 查看信息

  • 使用ExeInfoPe查看此壳程序

技术图片

  • 可以看出是很老的FSG壳。

分析:

Entry Point : 000000154,熟悉PE结构的知道,入口点(代码)揉进PE头去了。

在WIN10 以来在(被限制了)PE 头中不能有执行代码,只有在WIN7 及其以前的机器上,此程序才能执行。所以用虚拟机来脱这个很老的壳,在目前(本人)win10的机器上无法运行。

2 使用LordPE 观察以下PE结构

  • 点击查看区段 信息:

技术图片

  • 分析:

发现区段有两个,都把区段名抹去了;且第一个区段的虚拟大小虽然0x17000 但是实际大小(文件中的大小)是0

3 使用OD调试此程序尝试找OEP

3.1 打开OD定位壳

技术图片

  • 用Nop 破坏花指令使得反汇编正确解析后,添加注释、标签 - "FSG壳"

分析: 我们发现一进来,壳早就准备好了全部寄存器数据在地址0x4219D8的位置,把当前位置保存环境的地址放到当前的ESP寄存器,那就能POP栈操作,操作壳保存好的数据了。为啥我们看不到它之前的操作? 之后写壳的时候再分析

3.2 尝试找 OEP

  • 单步运行
  • 遇到第一个call (字符操作核心部分)

0x000400160:

CALL DWORD PTR DS:[EBX]
;此时EBX是 0x4219dc --- [EBX]:是0x4001e8

进入 0x4001e8:

技术图片

结合 call 的下一句 大致理解这个算法

技术图片

分析:

这个字符串拷贝的算法,(浅淡的观测下)不可逆的拷贝,而且信息不全,所以可能不重要。

我们可以先忽略这个拷贝循环 -----》 跳过这个拷贝算法: 我们在后面的每个 jmp/call 鼠标点过去一下看会不会跳回去之类的,直到找到了。

或者你安装了高亮插件(asmHighLight.dll):由于我们分析出这个拷贝的核心调用函数是 地址为 0x400160 这句opcode,那鼠标点在上面查看后面在哪里没有该高亮色,就大致找一下就能跳过这个算法部分了。

 技术图片

然后我们在壳代码后面部分找到了最后一个高亮。其实这个无条件跳转流这就是我们这个算法部分的最后一句了。

  • 跳出字符串拷贝算法之后,我们发现代码只有10来行了。直接断点关键的跳转行,我们直接找OEP。

技术图片

 

  • 然后我们发现跳转到 OEP的是这一句:

技术图片

4 Dump

  • 进入入口函数后,我们点几个跳转点数据等 并没有发现有异常数据(异常数据)等。直接使用OD提供的插件ollyDump ,dump到本地。

技术图片

 

技术图片

 

分析:

         观察其实地址 、入口点这些 头没有错。如果没有就点击脱壳

5 修复IAT

  • 这里使用impREC 来修复IAT

技术图片

 

我们发现这里查找出来的IAT信息不完全,那就需要观察IAT表是否有异常了。

分析:

          通过这里找到的函数偏移,可以迅速定位到IAT表。

技术图片

 

比如这里的rva为B000。那么再虚拟空间中的地址就是40B000,在OD中观察如下:

技术图片

  • 我们向下滑动,发现:

技术图片

这两个异常值阻止了impREC的解析:我们该为正常的0000000间隔:

技术图片

 

我们修改后再次用impREC解析 得到的IAT表目前来看貌似完成了

  • 最后点击修复转储到我们刚才用OD,dump出来的的程序

技术图片

 

6 检测我们的脱壳之后的程序

技术图片

 

yes!!!

 

---恢复内容结束---

以上是关于《金蝉脱壳》中哪些“壳”读qiào,哪些“壳”读ké?的主要内容,如果未能解决你的问题,请参考以下文章

常见android app加固厂商脱壳方法研究

常见android app加固厂商脱壳方法研究

手工脱壳之 PESpin加密壳SHE链硬件反调试IAT重定向混淆+花指令

脱壳系列_0_FSG壳_详细版

简单脱壳教程笔记---手脱EZIP壳

手工脱壳之 未知IAT加密壳 IAT加密+混淆+花指令哈希加密OD脚本