壳的介绍以及是常用脱壳方法

合集下载

(完整版)常见几种脱壳方法

(完整版)常见几种脱壳方法

----------------<小A分>----------------一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北斗)" ... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。

当然加密壳的保护能力要强得多!-----------<小A分割线>-------------二、工具的认识OllyDBG ring3 shell层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0级别调试工具-------------<小A分割>-------------------三、常见手动脱壳方法预备知识1.PUSHAD (入栈/压栈)代表程序的入口点,2.POPAD (弹栈/出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。

------------<小A分割线>--------------------方法一:单步跟踪法1.用OD载入,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。

也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就会到程序的OEP。

脱壳名词解释

脱壳名词解释

脱壳名词解释一、什么是脱壳?脱壳,又称解壳,指的是去除软件或程序的保护机制,使其可以被逆向分析、修改或运行的过程。

脱壳是逆向工程领域中的一个重要技术,常用于软件破解、恶意代码分析等领域。

二、脱壳的原因和意义1. 加密与保护机制软件开发者为了保护自己的知识产权和软件安全,通常会对程序进行加密和保护。

这些保护机制可以包括如下措施: - 程序代码的加密,使其难以被阅读和修改;- 阻止程序在非授权环境下运行的授权机制; - 检测到程序被篡改后自动停止运行的完整性检查等。

2. 逆向工程然而,逆向工程者通过脱壳可以破解这些软件保护机制,恢复原始的程序代码,甚至修改其功能。

脱壳技术的应用广泛,包括以下几个方面的内容:•软件破解:通过脱壳可以去除软件的加密和授权机制,使得盗版发布和使用成为可能。

这对于某些无法购买正版软件或者有特定需求的用户来说可能是一种选择。

•恶意代码分析:恶意软件通常会采用各种保护机制来避免被分析和检测,并隐藏其真正的目的和行为。

通过脱壳恢复出原始的恶意代码,可以帮助安全研究人员分析其行为和制定相应的防护措施。

•安全评估:软件开发者或者安全顾问可能会使用脱壳技术来评估一个软件的安全性,以发现其中的潜在漏洞或者授权机制的薄弱点,为后续的加固工作提供依据。

三、脱壳技术的分类1. 静态脱壳静态脱壳是指在不执行被保护程序的情况下,通过静态分析技术将程序的保护解除。

常见的静态脱壳技术有如下几种:•反汇编与分析:逆向工程者使用反汇编工具将程序的机器码转换为汇编代码,然后通过分析汇编代码来恢复源代码。

这一过程可以帮助理解程序的结构和算法,从而有助于脱壳。

•调试与跟踪:逆向工程者通过调试器来运行程序,并对其进行跟踪和观察。

通过检查程序的内存、寄存器和栈等状态变化,可以帮助分析和理解程序的执行过程。

•代码修复与修改:通过修改保护机制相关的代码,或者修复被加密或者损坏的代码,来达到解除保护的目的。

2. 动态脱壳与静态脱壳不同,动态脱壳是在程序运行过程中实时脱去保护机制。

压缩壳和低强度加密壳的脱壳小结及简易脱壳法

压缩壳和低强度加密壳的脱壳小结及简易脱壳法

三、OEP内存断点万能脱壳法简化变形的OD脚本
OEP内存断点万能脱壳法经过简化变形后其操作变得非常简单机械,我们可以用一个很简单的ollydbg脚本来使其自动执行脱壳,脚本如下:
/*
//////////////////////////////////////////////////
All Compress packer Unpacking script
Dasm : 6A 00 E8 C5
BC++ : EB 10
7、取消内存断点,反汇编窗口Ctrl+G填入PEiD侦测到OEP,在OEP处下断,F9运行,到达OEP
8、Dump it 运行,出错的话用ImportREC修复即可,一般都可修复的。
二、OEP内存断点万能脱壳法脱壳机理
我们知道的,壳如果要把原来加密或压缩的代码运行起来的话就必须要解压和解密原来的代码,这一个过程我们可以将他看做是代码的内存写入当我们用ollydbg载入目标程序,数据窗口Ctrl+G转到OEP地址时往往看到的数据全部是0,这说明OEP处的代码被压缩或加密了。(有些时候可以看到有代码,但这些代码不是6种常见语言的入口特征代码,这说明OEP处肯定是被加密了,被壳的加密代码替换了。)基于这样的理解我们可以在数据窗口OEP处设置内存访问断点,F9运行,观察内存数据窗口OEP处数据变化,内存数据变化说明OEP处代码在被解密,当我
Author: sxssl
Email : sxssl@
OS : WinXP sp2,Ollydbg 1.1,OllyScript v0.92
Date : 2008-1-20
Config: Ignore all exceptions

脱壳或去皮的方法

脱壳或去皮的方法

脱壳或去皮的方法一、脱壳常用的脱壳有碾搓法、撞击法、剪切法及挤压法外,剥壳方法还有摩擦法。

值得注意的是,任何剥壳机往往是一种剥壳方法为主而几种剥壳方法为辅的综合作用的结果。

摩擦法:利用摩擦形成的剪切力使皮壳沿其断裂而产生撕裂破坏,除下的皮壳整齐,便于选除,适用于韧性皮壳。

前述的脱壳法都是利用机械对农作物籽粒产生机械力的作用而实现脱壳的,以下是非机械式的脱壳方法。

能量法:利用籽粒在一个特殊环境中经受一定时间的高温高压作用,使得大量热量或气体聚集于籽粒壳内,并使籽粒内外达到气压平衡,然后让籽粒瞬间脱离高温高压环境,此时,聚集在籽粒壳与仁间的压力瞬时爆破,从而实现脱壳目的。

真空法:利用壳内外产生的压力差进行脱壳。

它与能量法脱壳的不同之处在于它不是使气体进入籽粒壳内,而是在一定的范围内,在真空泵的抽吸作用下使壳外压力降低,壳内部处于相对较高压力状态,当压力差达到一定数值时,使外壳爆裂。

一般采用单真空源与多个装料爆壳室相结合的配置。

微波爆壳法:利用电磁场的作用力对籽粒进行破壳。

当微波作用于需脱壳的籽粒时,籽仁内水分子在交变电磁场的作用下将电磁能转化为热能。

这种转变使籽仁在短时间内具有很高的能量,并迅速向外扩散,水分也沿着能量传递的方向迅速外迁,籽仁组织内部的部分结合水分转变为自由水分汽化逸出,导致籽仁失水而收缩。

汽化逸出的自由水分以一定的压力作用于外壳,破坏了籽仁与外壳的贴合。

同时,外壳在微波的作用下,组织内结合水分减少使纤维组织韧性下降、强度降低。

由于籽仁与外壳在微波作用下的变形不一致,导致籽仁与外壳的分离,使脱壳成为可能。

二、去皮用于去除果蔬表皮的去皮机,按去皮对象可分为:1.块状根茎类原料去皮机;2.果蔬去皮机。

除常用的机械去皮和化学去皮还有一些其他方法。

蒸汽加热去皮法:用于马铃薯、胡萝卜等块状茎类作物去皮前表面爆裂处理作业,特别适合外形凹凸不平且不规则的物料去皮。

辐射去皮:利用辐射波被物料表皮的水分吸收、蒸发、使入射的辐射波被物料表皮的水分吸收、蒸发、使入射的辐射波刚进入受热体浅表层即引起强烈的共振。

脱壳方法总结

脱壳方法总结

脱壳方法总结1. 引言在软件开发和逆向分析领域,脱壳(Unpacking)是指将一个已经被加密或保护的可执行文件还原到其原始状态的过程。

通过脱壳,分析人员可以获取被加密或保护的文件的源代码、算法、关键函数等信息,从而进行后续的逆向工程分析。

本文将总结几种常见的脱壳方法,并介绍它们的原理和使用场景。

2. 静态脱壳方法静态脱壳方法是指在不运行程序的情况下,通过对加密或保护的文件进行静态分析,还原出原始的可执行文件。

2.1. 字节码分析字节码分析是通过对加密或保护的文件进行二进制分析,识别出不同的加密算法或保护机制,从而还原出原始文件。

常见的字节码分析工具有IDA Pro、Radare2等。

2.1.1. IDA ProIDA Pro是一款功能强大的反汇编工具,可以用于对二进制文件进行逆向分析。

通过加载被加密或保护的文件,IDA Pro可以在图形界面下显示程序的反汇编代码。

通过对代码进行分析,可以识别出不同的加密算法或保护机制,从而编写相应的解密脚本。

2.1.2. Radare2Radare2是另一款强大的反汇编工具,它以命令行形式提供了一系列功能,可以对二进制文件进行静态分析。

通过使用Radare2的命令,可以查看程序的反汇编代码,识别出加密或保护机制,并编写相应的解密脚本。

2.2. 调试器调试器是一种用于运行和调试程序的工具,通过对加密或保护的文件进行动态分析,可以观察程序的行为,从而还原出原始文件。

常见的调试器有OllyDbg、GDB等。

2.2.1. OllyDbgOllyDbg是一款运行在Windows平台上的调试器,它可以用于对可执行文件进行动态分析。

通过加载被加密或保护的文件,OllyDbg可以以汇编代码的形式显示程序的执行过程。

通过逐步执行程序,并观察寄存器、堆栈等信息的变化,可以找到解密过程中使用的关键函数和算法。

2.2.2. GDBGDB是一款开源的调试器,可以运行在多种平台上,如Linux、macOS等。

普通壳的脱壳方法和脱壳技巧

普通壳的脱壳方法和脱壳技巧

普通壳的脱壳方法和脱壳技巧脱壳是指将普通壳(通常指硬壳类)从内部原材料中取出的过程。

这个过程既需要一定的方法,也需要一些技巧。

下面我将详细介绍普通壳的脱壳方法和技巧。

脱壳主要分为以下几个步骤:准备工作、撬开壳体、去除壳体和整理内部原材料。

首先,准备工作是非常重要的。

需要准备好必要的工具,例如锤子、螺丝刀、剪刀、塑料袋等,以及切割和清洁壳体的材料,如剪刀、刀片、洗涤剂等。

接下来,需要撬开壳体。

首先,要检查壳体是否有任何阻挡物,如胶水、胶带或其他附着物。

如果有,需要小心地切除或剥离它们。

然后,可以用螺丝刀或剪刀等工具轻轻撬开壳体的缝隙,逐渐将缝隙扩大,直到可以插入手指或其他工具。

使用锤子轻轻敲击壳体,有时会使壳体裂开,从而更容易打开。

脱壳之后,要去除壳体。

根据壳体的类型和材料,不同的方法和技巧可以选择。

例如,对于较薄的塑料壳体,可以用手指轻松地撕裂或剥离。

对于较厚的金属壳体,可能需要使用剪刀或刀片进行切割。

切割时要小心不要损坏内部的原材料,以及不要让手指受伤。

最后,需要整理内部原材料。

脱壳后,可能会有一些残留的胶水、胶带或其他附着物,需要用洗涤剂和水或其他清洁剂擦拭清除。

同时,还要注意保持内部原材料的完整和安全。

如果壳体中还有其他零部件或线路,要小心保护它们,以免损坏。

在脱壳的过程中,还有一些技巧可以使用。

首先,要注意避免使用过大的力量,以免损坏壳体或内部原材料。

其次,可以选择从壳体的较薄、较弱的部位开始撬开,比如角落或接缝处,这样更容易开启壳体。

另外,使用锤子时,要轻轻敲击,以避免壳体破裂或内部原材料受损。

最后,选择适当的工具非常重要。

根据壳体的类型和特性,选择合适的工具可以更有效地完成脱壳过程。

总的来说,普通壳的脱壳方法和技巧在于准备工作的细致、撬开壳体的谨慎、去除壳体的适当、整理内部原材料的细致和使用合适的工具等。

希望以上的介绍对您有所帮助!。

普通壳的脱壳方法和脱壳技巧

普通壳的脱壳方法和脱壳技巧

普通壳的脱壳方法和脱壳技巧脱壳是指将一个已经打包的可执行文件(通常是二进制文件)恢复为原始的、可以读取和修改的形式。

这在软件逆向工程、安全审计和病毒分析等领域都是非常常见的操作。

下面我将为你介绍普通壳的脱壳方法和脱壳技巧。

一、普通壳的脱壳方法1.静态脱壳静态脱壳是指对目标文件进行分析,找到壳的解密和载入代码,然后将其解密出来,恢复原始的可执行文件。

- 调试器脱壳:使用调试器(如OllyDbg、IDA Pro等)来单步执行目标程序,找到壳的解密代码,并通过调试器的内存分析功能来寻找待解密的数据。

一旦找到解密的算法和密钥,就可以将目标文件完全解密出来。

- 静态分析脱壳:通过静态分析工具(如IDA Pro、Hopper等)来逆向目标文件,找到壳的解密算法和密钥,然后将其解密出来。

2.动态脱壳动态脱壳是指在目标程序运行时,通过对程序的运行过程进行监控和分析,找到壳的解密和载入代码,并将其解密出来,恢复原始的可执行文件。

-API钩取脱壳:通过使用一个DLL注入到目标程序的地址空间中,然后使用API钩子来监控API函数的调用,找到壳解密代码的入口点。

一旦找到壳解密代码的起始地址,就可以通过调试器执行目标程序,并在合适的时机将解密出来的代码或数据导出。

- 内存转储脱壳:通过在目标程序的执行过程中,使用内存转储工具(如winhex、ollydump等)将目标程序的内存转储出来,然后使用静态脱壳的方法对内存转储文件进行分析。

二、普通壳的脱壳技巧1.加载器分析在进行脱壳之前,首先要分析目标文件中的加载器。

加载器是壳程序的一部分,用于解压和载入真正的可执行文件。

通过分析加载器,可以确定载入代码和解密算法的位置,并推导出解密算法的密钥。

2.寻找壳代码的入口点在进行脱壳时,需要找到壳代码的入口点,即壳程序开始执行的位置。

可以通过调试器或者静态分析工具来寻找入口点,并标记下来以备后续使用。

3.内存和断点设置通过内存和断点设置,在目标程序运行过程中定位到关键的内存位置。

常见几种软件脱壳方法

常见几种软件脱壳方法

常见⼏种软件脱壳⽅法⼀、概论壳出于程序作者想对程序资源压缩、注册保护的⽬的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北⽃)" ..."ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减⼩程序体积对资源进⾏压缩,加密壳是程序输⼊表等等进⾏加密保护。

当然加密壳的保护能⼒要强得多!⼆、⼯具的认识OllyDBG ring3 shell层级别的动态编译⼯具、PEid、ImportREC、LordPE、softIce ring0级别调试⼯具三、常见⼿动脱壳⽅法预备知识1.PUSHAD (⼊栈/压栈)代表程序的⼊⼝点,2.POPAD (弹栈/出栈)代表程序的出⼝点,与PUSHAD想对应,⼀般找到这个OEP就在附近3.OEP:程序的⼊⼝点,软件加壳就是隐藏了OEP(或者⽤了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以⽴刻脱壳。

⽅法⼀:单步跟踪法1.⽤OD载⼊,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。

也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下⼀句代码处按F4(或者右健单击代码,选择断点——>运⾏到所选)4.绿⾊线条表⽰跳转没实现,不⽤理会,红⾊线条表⽰跳转已经实现!5.如果刚载⼊程序,在附近就有⼀个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运⾏到某个CALL程序就运⾏的,就在这个CALL中F7进⼊7.⼀般有很⼤的跳转(⼤跨段),⽐如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的⼀般很快就会到程序的OEP。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、概论
壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种
UPX ASPCAK TELOCK PELITE NSPACK ...
ARMADILLO ASPROTECT ACPROTECT EPE SVKP ...
顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。

当然加密壳的保护能力要强得多!
二、常见脱壳方法
预备知识
1.PUSHAD (压栈)代表程序的入口点,
2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近
3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。

方法一:单步跟踪法
1.用OD载入,点“不分析代码!”
2.单步向下跟踪F8,实现向下的跳。

也就是说向上的跳不让其实现!(通过F4)
3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)
4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!
5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP
6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入
7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。

在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。

一般情况下可以轻松到达OEP!
方法二:ESP定律法
ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)
1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。

(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)
2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!
3.选中下断的地址,断点--->硬件访--->WORD断点。

4.按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP。

方法三:内存镜像法
1:用OD打开软件!
2:点击选项——调试选项——异常,把里面的忽略全部√上!CTRL+F2重载下程序!3:按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点,接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE(也就是00401000处),按F2下断点!然后按SHIFT+F9(或者是在没异常情况下按F9),直接到达程序OEP!
方法四:“SFX”法
1:设置OD,忽略所有异常,也就是说异常选项卡里面都打上勾
2:切换到SFX选项卡,选择“字节模式跟踪实际入口(速度非常慢)”,确定。

3:重载程序(如果跳出是否“压缩代码?”选择“否”,OD直接到达OEP)
技术总结:
1,要掌握壳的概念。

理解加密壳和压缩壳的区别
2,熟悉我给大家介绍的几种脱壳方法
3,多练习多实践!。

相关文档
最新文档