脱壳方法总结
- 格式:doc
- 大小:22.50 KB
- 文档页数:2
常见的脱壳方法范文脱壳是指将一个已经加密或保护的程序反编译或解密成原始的可执行文件或源代码的过程。
常见的脱壳方法主要包括静态脱壳和动态脱壳两种方法。
1.静态脱壳方法静态脱壳是指将已经加密或保护的程序文件保存到硬盘,然后通过一些工具进行反编译或解密。
常见的静态脱壳方法有:(1) IDA Pro:IDA Pro是一种功能强大的交互式反汇编软件,可以将二进制文件转换成可读的汇编代码,从而方便进行分析和修改。
(2) OllyDbg:OllyDbg是一种强大的动态调试工具,可以在运行时跟踪程序的执行过程,并在关键处设置断点和查看内存状态,从而找到程序解密和脱壳的关键函数。
(3)PEiD:PEiD是一种可携带的工具,能够识别和解析PE文件,包括可执行文件、动态链接库和驱动程序。
PEiD可以检测程序中使用的加密算法和保护措施,并提供脱壳插件。
2.动态脱壳方法动态脱壳是指通过调试程序的运行过程,找到加密和解密函数的位置和参数,从而在运行过程中直接提取出原始可执行文件或源代码。
常见的动态脱壳方法有:(1) API hooking:API hooking是指通过拦截和替换程序使用的API 函数,来修改程序的行为。
通过在API函数前插入脱壳代码,可以截获加密和解密过程中的数据和密钥,从而得到原始的可执行文件或源代码。
(2)内存转储:内存转储是指将程序在运行时的内存状态保存到文件中,然后利用其他工具对内存进行分析。
通过分析内存中的数据和代码,可以找到加密和解密函数的位置和参数,从而得到原始的可执行文件或源代码。
(3)运行时调试:运行时调试是指通过调试工具在程序运行过程中设置断点、查看内存和寄存器状态,来跟踪程序的执行过程。
通过查看程序的执行流程和数据变化,可以找到加密和解密函数的位置和参数,从而得到原始的可执行文件或源代码。
总结:脱壳方法主要包括静态脱壳和动态脱壳两种方法。
静态脱壳是将已经加密或保护的程序保存到硬盘,然后通过反编译或解密工具进行分析或修改。
脱壳或去皮的方法一、脱壳常用的脱壳有碾搓法、撞击法、剪切法及挤压法外,剥壳方法还有摩擦法。
值得注意的是,任何剥壳机往往是一种剥壳方法为主而几种剥壳方法为辅的综合作用的结果。
摩擦法:利用摩擦形成的剪切力使皮壳沿其断裂而产生撕裂破坏,除下的皮壳整齐,便于选除,适用于韧性皮壳。
前述的脱壳法都是利用机械对农作物籽粒产生机械力的作用而实现脱壳的,以下是非机械式的脱壳方法。
能量法:利用籽粒在一个特殊环境中经受一定时间的高温高压作用,使得大量热量或气体聚集于籽粒壳内,并使籽粒内外达到气压平衡,然后让籽粒瞬间脱离高温高压环境,此时,聚集在籽粒壳与仁间的压力瞬时爆破,从而实现脱壳目的。
真空法:利用壳内外产生的压力差进行脱壳。
它与能量法脱壳的不同之处在于它不是使气体进入籽粒壳内,而是在一定的范围内,在真空泵的抽吸作用下使壳外压力降低,壳内部处于相对较高压力状态,当压力差达到一定数值时,使外壳爆裂。
一般采用单真空源与多个装料爆壳室相结合的配置。
微波爆壳法:利用电磁场的作用力对籽粒进行破壳。
当微波作用于需脱壳的籽粒时,籽仁内水分子在交变电磁场的作用下将电磁能转化为热能。
这种转变使籽仁在短时间内具有很高的能量,并迅速向外扩散,水分也沿着能量传递的方向迅速外迁,籽仁组织内部的部分结合水分转变为自由水分汽化逸出,导致籽仁失水而收缩。
汽化逸出的自由水分以一定的压力作用于外壳,破坏了籽仁与外壳的贴合。
同时,外壳在微波的作用下,组织内结合水分减少使纤维组织韧性下降、强度降低。
由于籽仁与外壳在微波作用下的变形不一致,导致籽仁与外壳的分离,使脱壳成为可能。
二、去皮用于去除果蔬表皮的去皮机,按去皮对象可分为: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等。
几种用OD脱壳方法OD是反编译软件的一种,可以将可执行文件转换为可读的源代码。
脱壳是指从已经加密或保护的软件中提取出原始的未加密或未保护的代码。
下面是几种常见的OD脱壳方法:1.静态分析法:静态分析是指对二进制文件进行分析,了解其结构、函数调用和控制流程等信息。
通过对逆向工程的分析,可以分析出加密算法和解密函数的位置。
使用静态分析法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用各种OD工具,如IDA Pro,OllyDbg等,显示可执行文件的汇编代码。
-通过分析代码和调试程序,找到加密算法和解密函数的位置。
-根据找到的位置,修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
2.动态调试法:动态调试是指在运行时对程序进行调试和分析。
使用动态调试法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用动态调试工具,如OllyDbg或GDB等,在程序执行期间跟踪和记录函数调用和内存访问。
-通过分析函数调用和内存访问,找到加密算法和解密函数的位置。
-在找到的位置上下断点,执行程序并使用OD工具查看解密后的代码。
3.内存镜像法:内存镜像法是指通过将程序加载到内存中,并对内存进行镜像和分析来脱壳。
使用内存镜像法脱壳的主要步骤如下:-运行加密的可执行文件。
- 使用内存镜像工具,如DumpBin或WinDBG等,将程序的内存镜像保存到磁盘上。
-使用OD软件加载内存镜像文件。
-通过分析内存镜像文件,找到加密算法和解密函数的位置。
-修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
这些方法都可以用于将加密的可执行文件转换为可读的源代码,从而进行进一步的分析和修改。
脱壳过程需要进行深入的逆向工程和对程序的理解,因此需要具备一定的技术和知识。
此外,需要注意的是,脱壳过程可能涉及到破解和侵犯版权的行为,应遵守法律规定,并仅限于安全研究和个人学习的目的使用。
个人总结的一个VMP脱壳步骤第一篇:个人总结的一个VMP脱壳步骤个人总结的一个VMP脱壳步骤个人在学习脱VMP加壳的过程中总结的一个步骤。
按照这个步骤,包括VMP1.6—2.0在内应该有70%-80%能脱壳。
脱不了的也别问我,我也刚开始学习。
我还想找人问呢。
想要脱VMP的壳,首要工作当然是要找一个强OD啦!至于是什么版本的OD自己多试验几个,网上大把大把的,一般来说只要加载了你想脱的VMP加壳程序不关闭都可以。
其次就是StrongOD.dll这个插件了,现在用的比较多的就是海风月影,同样网上也是大把大把的。
下载回来后复制到你的OD程序所在的文件夹里面的plugin里。
StrongOD的设置选项搞不懂就全部打钩。
接下来要做的工作就是搞清楚我们要脱壳的程序编程的语言了,可以用PEID或者fastscanner查看,如果在这里看不到也可以在OD载入以后通过里面的字符串判断了。
例如VB的程序会出现MSVB----/VC的会出现MSVC---等等。
这些都是程序运行所需要的windows链接文件。
做完这些预备工作接下来当然是用OD载入文件啦。
文件载入后在反汇编窗口CTRL+G搜索VirtualProtect(注意V跟P要大写,至于为什么要搜索这个别问我)。
一般来说搜索的结果会出现以下的类似:7C801AE3 E8 75FFFFFF call kernel32.VirtualProtectEx 我们在这里下F2断点。
然后F9运行到我们下的这个断点。
接下来我们就要注意观察堆栈窗口了。
一般来说当我们F9运行到我们上面下的断点的时候在堆栈窗口会出现以下类似: 0012F66C 00401000 |Address = TradeCen.00401000 0012F670 000280D1 |Size = 280D1(164049.)0012F674 00000004 |NewProtect = PAGE_READWRITE 0012F678 0012FF98 pOldProtect = 0012FF98 我们要注意观察的就是在接下来我们F9运行的时候,ADDRESS和NEWPROTECT这两行的变化。
普通壳的脱壳方法和脱壳技巧脱壳是指将普通壳(通常指硬壳类)从内部原材料中取出的过程。
这个过程既需要一定的方法,也需要一些技巧。
下面我将详细介绍普通壳的脱壳方法和技巧。
脱壳主要分为以下几个步骤:准备工作、撬开壳体、去除壳体和整理内部原材料。
首先,准备工作是非常重要的。
需要准备好必要的工具,例如锤子、螺丝刀、剪刀、塑料袋等,以及切割和清洁壳体的材料,如剪刀、刀片、洗涤剂等。
接下来,需要撬开壳体。
首先,要检查壳体是否有任何阻挡物,如胶水、胶带或其他附着物。
如果有,需要小心地切除或剥离它们。
然后,可以用螺丝刀或剪刀等工具轻轻撬开壳体的缝隙,逐渐将缝隙扩大,直到可以插入手指或其他工具。
使用锤子轻轻敲击壳体,有时会使壳体裂开,从而更容易打开。
脱壳之后,要去除壳体。
根据壳体的类型和材料,不同的方法和技巧可以选择。
例如,对于较薄的塑料壳体,可以用手指轻松地撕裂或剥离。
对于较厚的金属壳体,可能需要使用剪刀或刀片进行切割。
切割时要小心不要损坏内部的原材料,以及不要让手指受伤。
最后,需要整理内部原材料。
脱壳后,可能会有一些残留的胶水、胶带或其他附着物,需要用洗涤剂和水或其他清洁剂擦拭清除。
同时,还要注意保持内部原材料的完整和安全。
如果壳体中还有其他零部件或线路,要小心保护它们,以免损坏。
在脱壳的过程中,还有一些技巧可以使用。
首先,要注意避免使用过大的力量,以免损坏壳体或内部原材料。
其次,可以选择从壳体的较薄、较弱的部位开始撬开,比如角落或接缝处,这样更容易开启壳体。
另外,使用锤子时,要轻轻敲击,以避免壳体破裂或内部原材料受损。
最后,选择适当的工具非常重要。
根据壳体的类型和特性,选择合适的工具可以更有效地完成脱壳过程。
总的来说,普通壳的脱壳方法和技巧在于准备工作的细致、撬开壳体的谨慎、去除壳体的适当、整理内部原材料的细致和使用合适的工具等。
希望以上的介绍对您有所帮助!。
几种用OD脱壳方法OD(Object Dump)即对象转储,是指将内存中的对象转化为文件或其他形式的过程。
脱壳是指从被加壳/保护的程序中提取可执行代码的过程。
以下是几种常见的用OD脱壳方法:1.静态脱壳:静态脱壳是指在未运行程序的情况下进行脱壳。
这种方法适用于一些简单的壳或保护机制。
静态脱壳一般包括以下步骤:-分析被加壳程序的文件结构,确定壳的类型和解密算法。
-定位加密/保护的代码段和目标程序的入口点。
-提取加密的代码段并进行解密。
-删除或替换壳代码,将解密的代码插入到目标程序的入口点。
2.动态脱壳:动态脱壳是指在运行被加壳程序的过程中进行脱壳。
这种方法更加复杂,但可以应对一些更强大的保护机制。
动态脱壳的步骤如下:- 使用调试器(如OllyDbg、IDA Pro等)加载被加壳程序,并设置断点。
-运行程序并观察其行为。
一般可以通过跟踪内存或执行流来确定代码解密、动态链接等操作。
-当程序执行到解密/动态链接等关键点时,暂停程序并检查相关内存中的加密数据。
-通过观察内存数据的变化和算法的操作,找出解密算法、关键数据等。
-使用调试器的功能(如修改内存、暂停/恢复执行等)来修改和恢复解密的数据,最终达到脱壳的目的。
3.虚拟机检测:有时候,加壳程序会在运行时检测是否在虚拟机中执行。
如果发现运行在虚拟机中,则不会执行解密操作。
因此,一种常见的脱壳方法是绕过虚拟机检测。
这可以通过修改虚拟机检测函数的返回值来实现。
通过调试器可以定位到虚拟机检测的相关代码,并修改相应的变量或寄存器值。
4.内存脱壳:部分加壳程序并不是一次性将整个程序都解密并运行,而是采用内存加载的方式,将加密的代码段逐步解密到内存中执行。
这种情况下,可以使用内存脱壳来获取完整的可执行文件。
内存脱壳的步骤如下:-使用调试器加载被加壳程序。
-执行程序,观察其行为并找到解密/加载代码的操作。
-在解密/加载代码执行前暂停程序,此时可使用调试器的内存修改功能,在内存中找到加密的代码段,并修改为解密后的代码。
脱壳教程标题:脱壳教程引言:脱壳是指将软件或应用程序的包装层(也称为保护壳或加密层)移除,以便对其进行更深入的分析、修改或逆向工程。
脱壳过程可以帮助软件开发人员或安全研究人员理解程序的内部运行机制,发现其中的漏洞或者进行优化改进。
本文将介绍脱壳过程的基本原理和几种常见的脱壳工具以及其使用方法。
一、脱壳的基本原理脱壳的基本原理是通过破解或绕过软件的保护机制来移除保护壳。
保护机制通常包括各种检测和防御技术,如代码混淆、加壳、逆向工程等。
常见的保护壳有UPX、ASProtect、Enigma等。
脱壳的过程涉及对程序进行调试、分析和修改。
二、脱壳工具介绍及使用方法1. OllyDbgOllyDbg是一款著名的逆向工程和调试工具,也是脱壳过程中经常使用的工具之一。
它具有强大的调试和反汇编功能,可以帮助分析程序的执行流程、内存变化等。
使用OllyDbg进行脱壳时,首先需要加载待脱壳的程序,然后设置断点,跟踪程序执行,找到关键的保护机制的位置,最终移除保护壳。
2. IDA ProIDA Pro是一款功能强大的反汇编和逆向工程工具。
它可以将程序转换为易读的汇编代码,并提供强大的导航和分析功能。
脱壳时可以使用IDA Pro来分析和修改程序的内存和代码。
它可以帮助找到程序的入口点、解密过程等,从而移除保护壳。
3. x64dbgx64dbg是一款开源的调试器工具,适用于32位和64位的Windows系统。
它具有用户友好的界面和丰富的调试功能,并支持脱壳过程中的动态调试和反调试技术。
使用x64dbg进行脱壳时,可以跟踪程序的执行流程、查看内存变化,找到关键代码并进行修改。
三、脱壳过程示例以某款加壳的软件为例,介绍基本的脱壳过程。
1. 加载待脱壳的程序到脱壳工具中,并设置断点。
2. 运行程序,在断点处停下来,观察程序的状态和执行流程。
3. 跟踪程序的执行,查找关键的保护机制位置,例如解密函数、保护壳的入口等。
4. 分析并修改程序的内存和代码,移除保护壳。
压缩壳脱法:------------------方法一:单步跟踪法------------------介绍:这是最通用的方法,对于未知壳,基本都用这种方法,这种方法过程比较麻烦,要一步一步的跟踪分析,要有一定的耐心.1.用OD载入,选"不分析代码"2.单步向下跟踪按F8,实现向下的跳.不让程序往回跳.3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易运行.5.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入.6.一般遇到很大的跳转(跨段跳),比如 jmp XXXXXX 或 JE XXXXXX 或有RETN的一般很快就会到程序的OEP。
-----------------方法二:ESP定律法-----------------介绍: 这种方法可以脱大部的压缩壳和少数加密壳,操作起来比较简单,脱壳速度也相对比较快.1.开始就点F8向下走,注意观察OD右上角的寄存器中ESP有没突现(变成红色)2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者hrXXXXXXXX),按回车!3.选中下断的地址,断点--->硬件访--->WORD断点。
4.按一下F9运行程序,直接来到了跳转处,按下F8向下走,就到达程序OEP。
-----------------方法三:内存镜像法-----------------介绍:也是一种比较好用的脱壳方法,大部分的压缩壳和加密壳用内存镜像法能快速脱掉.非常实用.1.用OD打开,设置选项——调试选项——异常,忽略所有异常(也就是把里面的忽略全部√上),然后CTRL+F2重载下程序!2.按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点.3.接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE,按F2下断点!然后按SHIFT+F9,直接到达程序OEP!----------------方法四:一步到OEP----------------介绍:这是一种巧方法,脱壳速度最快,前提是要知道这个壳的特征,利用这种壳的共性快速找到程序的OEP.这种方法只用于少数壳.1.开始按Ctrl+F,输入:popad,然后按下F2下断,按F9运行到此处.2.很快来到大跳转,按F8向下走,来到OEP.----------------------方法五:最后一次异常法:----------------------介绍:这种方法一般用于加密壳,这是脱加密壳的一种通用方法.第一步:用OD打开程序,点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序.第二步:接着我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数n.第三步:重载程序,再按SHIFT+F9,这次按的次数为上次让程序运行时的次数的n-1次.第四步:此时观察OD的右下角有一个"SE 句柄",这时我们按CTRL+G,输入SE 句柄前的地址!来到这个地址.第五步:在这里,按F2下断点!然后按SHIFT+F9来到断点处!第六步:这时候我们已经跳过了所有异常,然后去掉断点,按F8慢慢向下跟踪很快就到达OEP 了.----------------------模拟跟踪法----------------------1.运行程序,确定是否有暗桩。
加密壳的一般脱壳步骤:
介绍:这种方法一般用于加密壳,这是脱加密壳的一种通用方法.
第一步:用OD打开程序,点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序.
第二步:接着我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数n.
第三步:重载程序,再按SHIFT+F9,这次按的次数为上次让程序运行时的次数的n-1次.
第四步:此时观察OD的右下角有一个"SE 句柄",这时我们按CTRL+G,输入SE 句柄前的数值!来到这个地址.
第五步:在这里,按F2下断点!然后按SHIFT+F9来到断点处!
第六步:这时候我们已经跳过了所有异常,然后去掉断点,按F8慢慢向下跟踪很快就到达OEP 了.
修复----重建PE
压缩壳
方法一:单步跟踪法:
方法二:esp定律快速脱所有北斗壳:
方法三:巧方法脱所有北斗壳:
入口关键字特征:
pushfd
pushad
popad
popfd
一.ESP定律原理:
二.ESP定律脱壳步骤:
1.开始就点F8向下走,注意观察OD右上角的寄存器中ESP有没突现(变成红色)
2.在命令行下:dd XXXX(指在当前代码中的ESP地址,或者是hr XXXXX),按回车!
3.选中下断的地址,断点--->硬件访问--->WORD断点。
4.按一下F9运行程序,直接来到了跳转处,按下F8向下走,就到达程序OEP
三.特殊ESP定律的运用:
00400154 > 8725 2C794100 xchg dword ptr ds:[41792C],esp
0040015A 61 popad
0040015B 94 xchg eax,esp ----单步到这里注
0040015C 55 push ebp 数值
0040015D A4 movs byte ptr es:[edi],byte ptr ds:[esi] 0040015E B6 80 mov dh,80。