朱航宇-20112878-应用程序加壳与脱壳

合集下载

这是二哥的教程

这是二哥的教程
0040D066 8B30 mov esi, dword ptr ds:[eax]
0040D068 66:81C7 8007 add di, 780
0040D06D 8D7406 08 lea esi, dword ptr ds:[esi+eax+8]
0040D071 8938 mov dword ptr ds:[eax], edi
0040D047 68 4C584000 push Notepad.0040584C 填充ERR结构的Hander,当发生异常时系统会自动调用这里。
0040D04C 64:FF35 0000000>push dword ptr fs:[0] 填充ERR结构的Prev
0040D053 64:8925 0000000>mov dword ptr fs:[0], esp 建立SEH链,呵,异常后就会到40584C处的代码继续运行。
0040D05A 66:9C pushfw 关键字1
0040D05C 60 pushad 关键字2
0040D05D 50 push eax
0040D05E 68 00004000 push Notepad.00400000
0040D063 8B3C24 mov edi, dword ptr ss:[esp]
0040D0C3 83C2 0C add edx, 0C
0040D0C6 FC cld
0040D0C7 ^ EB E2 jmp short Notepad.0040D0AB 循环。
0040D0C9 83C2 10 add edx, 10 F4到这里。
0040D0CC 8B5A F4 mov ebx, dword ptr ds:[edx-C]

脱壳入门----脱ASPack壳保护的DLL

脱壳入门----脱ASPack壳保护的DLL

脱壳⼊门----脱ASPack壳保护的DLL前⾔结合脱dll壳的基本思路,对看雪加密解密⾥的⼀个ASPack壳保护的dll进⾏脱壳分析。

脱壳详细过程寻找程序的OEP先将⽬标DLL拖⼊OD,来到壳的⼊⼝处。

然后利⽤堆栈平衡原理在pushad后,对栈顶下硬件访问断点。

之后我们直接运⾏程序,当程序popad后会被断下,观察得出OEP的RVA为0x1240。

找到壳的重定位代码我们在来到程序真正的⼊⼝点后可以看到⼀些会被重定位的代码,我们选择最近的⼀个会进⾏重定位的代码记住其RVA。

本例⼦中我们选的是RVA为0x1253的代码。

然后我们重新加载dll,我们先对刚刚记住的那个RVA下内存写⼊断点,程序会先断在壳代码解压区块处我们需要在壳代码将所有的区段解压缩后对刚刚记住的那个RVA再下内存访问断点,然后程序会断在壳的重定位代码处。

跳过重定位代码并dump程序我们只需要将修正重定位数据的代码nop去就可以让重定位代码⽆法发挥作⽤。

nop去重定位代码后我们继续运⾏程序,程序会停在我们寻找OEP时设置的断点处。

然后我们就可以⽤LordPE来dump⽂件了,将dump的⽂件命名为ASP.dll重建输⼊表在重建输⼊表前我们需要知道原程序IAT表的位置,我们可以在OD中Alt + M查看内存然后我们在主模块可以看到各个区块,⼀般IAT表都是在.rdata区块处。

我们在此处右击然后选择在cpu数据窗⼝查看,然后将cpu数据窗⼝的显⽰形式调为地址。

我们可以看到在区块⼀开始就是IAT表。

此IAT表的RVA为0x7000。

在查找IAT表⽰还要注意,不要将原程序的IAT表与壳的IAT表搞混。

在区块.aspack处也存在⼀个IAT,这个IAT是壳代码的。

获取IAT的RVA后我们可以打开ImportRE⼯具重建输⼊表,我们在OEP处填写1240,在IAT 的RVA处填写7000,⼤⼩尽量填⼤点。

然后点击获取输⼊表。

获取输⼊表后我们发现有好多⽆效的这是因为我们IAT的⼤⼩填的过⼤,我们只需点击显⽰⽆效函数,然后右击剪切/删除指针数据即可去除⽆效数据。

常见的脱壳方法范文

常见的脱壳方法范文

常见的脱壳方法范文脱壳是指将一个已经加密或保护的程序反编译或解密成原始的可执行文件或源代码的过程。

常见的脱壳方法主要包括静态脱壳和动态脱壳两种方法。

1.静态脱壳方法静态脱壳是指将已经加密或保护的程序文件保存到硬盘,然后通过一些工具进行反编译或解密。

常见的静态脱壳方法有:(1) IDA Pro:IDA Pro是一种功能强大的交互式反汇编软件,可以将二进制文件转换成可读的汇编代码,从而方便进行分析和修改。

(2) OllyDbg:OllyDbg是一种强大的动态调试工具,可以在运行时跟踪程序的执行过程,并在关键处设置断点和查看内存状态,从而找到程序解密和脱壳的关键函数。

(3)PEiD:PEiD是一种可携带的工具,能够识别和解析PE文件,包括可执行文件、动态链接库和驱动程序。

PEiD可以检测程序中使用的加密算法和保护措施,并提供脱壳插件。

2.动态脱壳方法动态脱壳是指通过调试程序的运行过程,找到加密和解密函数的位置和参数,从而在运行过程中直接提取出原始可执行文件或源代码。

常见的动态脱壳方法有:(1) API hooking:API hooking是指通过拦截和替换程序使用的API 函数,来修改程序的行为。

通过在API函数前插入脱壳代码,可以截获加密和解密过程中的数据和密钥,从而得到原始的可执行文件或源代码。

(2)内存转储:内存转储是指将程序在运行时的内存状态保存到文件中,然后利用其他工具对内存进行分析。

通过分析内存中的数据和代码,可以找到加密和解密函数的位置和参数,从而得到原始的可执行文件或源代码。

(3)运行时调试:运行时调试是指通过调试工具在程序运行过程中设置断点、查看内存和寄存器状态,来跟踪程序的执行过程。

通过查看程序的执行流程和数据变化,可以找到加密和解密函数的位置和参数,从而得到原始的可执行文件或源代码。

总结:脱壳方法主要包括静态脱壳和动态脱壳两种方法。

静态脱壳是将已经加密或保护的程序保存到硬盘,然后通过反编译或解密工具进行分析或修改。

加壳与脱壳应用及实现

加壳与脱壳应用及实现

加壳与脱壳的应用与实现一、加壳 (2)1.什么是壳 (2)2.加壳原因 (2)3.壳的加载过程 (3)4.压缩引擎 (5)5.常见的加壳工具 (6)a.常用压缩壳介绍 (6)b.加密保护壳介绍 (7)二、脱壳 (10)1.侦壳 (10)2.脱壳 (13)a.查找程序的真正入口点(OEP) (13)b.抓取内存映像文件 (15)c.输入表重建 (15)附:视频“加壳与脱壳(软件)”和“手动脱壳” (17)加壳与脱壳一、加壳1.什么是壳在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。

它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。

由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。

图1.12.加壳原因就把这样的程序称为“壳”了。

作者编好软件后,编译成exe可执行文件。

1)有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。

2)需要把程序搞的小一点,从而方便使用。

于是,需要用到一些软件,它们能将exe可执行文件压缩。

3)在黑客界给木马等软件加壳脱壳以躲避杀毒软件。

实现上述功能,这些软件称为加壳软件。

3.壳的加载过程1)获取壳自己所需要使用的API地址如果用PE编辑工具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API 函数。

壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳的代码中用显式链接方式动态加载这些API函数2)解密原程序的各个区块(Section)的数据壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。

在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。

壳一般按区块加密的,那么在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位置。

《Armadillo1.xx-2.xx-SiliconRealmsToolworks脱壳分析》

《Armadillo1.xx-2.xx-SiliconRealmsToolworks脱壳分析》

脱壳过程:OD载入程序,老规矩插件隐藏OD,忽略所有异常,再添加以下几个异常C0000005(ACCESS VIOLATION)、C000001D(ILLEGAL INSTRUCTION)、C000001E(INVALID LOCK SEQUENCE)、C0000096(PRIVILEGED INSTRUCTION)入口代码:0105A000 N> 60 pushad0105A001 E8 00000000 call NOTEPAD.0105A0060105A006 5D pop ebp0105A007 50 push eax0105A008 51 push ecx0105A009 0FCA bswap edx0105A00B F7D2 not edx0105A00D 9C pushfd下bp OpenMutexA断点shift+F9运行,77E62391 k> 55 push ebp---------中断在这里77E62392 8BEC mov ebp,esp77E62394 51 push ecx77E62395 51 push ecx77E62396 837D 10 00 cmp dword ptr ss:[ebp+10],077E6239A 56 push esi77E6239B 0F84 C2E30100 je kernel32.77E8076377E623A1 64:A1 18000000 mov eax,dword ptr fs:[18]看堆栈0006F710 0103229B /CALL 到OpenMutexA 来自NOTEPAD.010322950006F714 001F0001 |Access = 1F00010006F718 00000000 |Inheritable = FALSE0006F71C 0006FDA0 \MutexName = "52C:A9EEE0AC4"------注意0006fda0,等下会用到0006F720 000000040006F724 000000000006F728 010476B3 NOTEPAD.010476B3Ctrl+G 01001000 键入以下代码:为什么是Ctrl+G 01001000呢?很多教程里都是Ctrl+G 401000,在本例Ctrl+G 401000是无法写入调式程序中的,而且401000处有代码(大家可以试一试),那么如何知道是用Ctrl+G 01001000的呢?个人认为是根据载入口的代码来确定的,形式是入口代码地址的前3位+01000,如本例中的入口代码是:0105A000 N> 60 pushad,取其地址中的前3位010,再加上01000,合起来就是01001000。

第2课用相应工具软件为软件自动脱壳(非手动脱壳)

第2课用相应工具软件为软件自动脱壳(非手动脱壳)

第二课用相应工具软件为软件自动脱壳(非手动脱壳)欲破解一个软件,我们首先应根据前面的内容侦测它的壳,然后我们要把它的壳脱去,还原软件的本来面目。

如果软件是一个PLMM,我们不喜欢穿衣服的MM,我们不喜欢艺术照的MM,我们迫不及待地想把MM脱光,想把MM骗上床。

带壳的软件以后很难分析,带壳的穿衣的MM很难调教,壳是一个拦路虎,我们却不知武松醉在何处。

这就如同我们要吃糖炒栗子,必须先剥掉栗子壳一样。

这一课就教给你如何用自动剥壳机去掉花生壳、栗子壳之类的东东。

若侦测出它根本没加壳,就可省掉这一步了(现在没加壳的软件已经很少很少了,除非软件作者缺乏最基本的加密解密常识)。

脱壳成功的标志是脱壳后的文件能正常运行,功能没有任何损耗。

一般来说,脱壳后的文件长度大于原文件长度;即使同一个文件,当采用不同脱壳软件进行脱壳的时候,由于脱壳软件机理不同,脱出来的文件大小也不尽相同。

但只要能够运行起来,这都是正常的,就如同人的体重,每次上秤,份量都有所不同。

但只要这个人是健康的,就无所谓,合乎情理。

一、脱壳软件的两大类别(两个门派――少林、武当)脱壳软件主要分两大类:专用脱壳软件(武当派)和通用脱壳软件(少林派,源自“全民皆武,天下英雄出少年”)。

每个专用脱壳软件只能脱掉特定的一种或两种加壳软件所加的壳,也就是说它是专门针对某种加壳软件的某个版本而制作的。

通用脱壳软件则具有通用性,可以脱掉许多种不同类型的壳。

根据“以一当一”的原则,专用类此门派为“武当”派。

大家可能会有这样的疑问?既然有通用脱壳软件,为什么还要专用脱壳软件呢?所谓“术业有专攻”,通用的脱壳程序往往不能精确地适用于某些软件,而专用的脱壳程序适用面虽窄,对付特定的壳却极为有效。

因此,少林派和武当派缺一不可,相辅相成。

均掌握了武术之精髓,能置“壳”以死地,打得壳满地找牙,第一时间以迅雷不及掩耳之势极速脱掉壳MM的衣衫。

二、专用脱壳软件的四大类别根据壳的流行程度,常用的脱壳软件主要有三类:脱Aspack类(叉A)、脱UPX类(叉U)、脱pecompact类(叉P,怎么又跟微软搞到一块儿了),分别针对前面提到的3个加壳软件。

脱壳工具文档

脱壳工具文档

脱壳工具什么是脱壳工具?脱壳工具是一种程序分析工具,用于去除软件中的保护机制,使其可以被逆向工程分析。

在软件开发中,开发者通常会对其软件进行保护,以防止其他人对其进行盗版或反编译等非法行为。

然而,逆向工程师可能需要分析软件的内部结构和算法,以提取有用的信息或进行安全评估。

脱壳工具就是帮助逆向工程师去除保护机制的工具。

脱壳工具的原理脱壳工具的原理是通过分析加密算法、解密函数以及其他保护措施,识别和破解软件的保护机制。

通常,软件保护机制包括代码加密、调试检测、内存保护等。

脱壳工具会通过静态分析或动态调试的方式对软件进行分析,找到并去除这些保护机制,使软件恢复到未加密或未保护的状态。

脱壳工具的应用场景脱壳工具在软件逆向工程和安全评估领域有广泛的应用。

以下是一些应用场景的例子:逆向工程分析逆向工程师可以使用脱壳工具来去除软件保护机制,以便深入分析软件的内部结构和算法。

通过分析软件的源代码或二进制代码,逆向工程师可以了解软件的工作原理,并可能发现其中的漏洞或安全风险。

测试安全漏洞安全评估人员可以使用脱壳工具来测试软件系统中的安全漏洞。

通过去除保护机制,他们可以更深入地分析软件的内部结构,并寻找可能的漏洞或弱点。

这有助于提高软件的安全性和可靠性,并预防恶意攻击。

开发自定义插件或扩展脱壳工具可以帮助开发人员去除软件保护机制,并进行定制化开发。

开发人员可以通过插件或扩展的方式添加自己的功能,以满足特定需求。

例如,他们可以编写自己的脚本或插件来对脱壳后的软件进行进一步的分析或改进。

软件修复和升级在某些情况下,企业可能需要修复或升级他们的旧软件。

但由于遗失了源代码或相关文档,这变得困难。

脱壳工具可以帮助企业去除旧软件的保护机制,使其可以进行修复或升级。

脱壳工具的挑战和限制尽管脱壳工具在逆向工程和安全评估方面有很多应用优势,但它们也面临一些挑战和限制:更新保护机制的挑战软件开发者在保护软件时,通常会采取多种保护措施。

黑盒脱壳教学设计

黑盒脱壳教学设计

黑盒脱壳教学设计黑盒脱壳是指通过逆向工程的方法,对未知或加密的程序进行分析和破解,以获取内部的源代码、算法、私有协议等信息。

黑盒脱壳是计算机安全领域的一个重要研究方向,对于软件安全评估、恶意代码分析、漏洞利用等都具有重要意义。

下面我将为你设计一个黑盒脱壳的教学。

一、教学目标:1. 了解黑盒脱壳的基本原理和步骤;2. 学会使用常用的黑盒脱壳工具和技术;3. 掌握分析和破解加壳程序的方法;4. 能够应对一些常见的脱壳防护措施。

二、教学内容:1. 黑盒脱壳的基本原理和步骤(30分钟):- 介绍黑盒脱壳的定义、意义和应用领域;- 解释黑盒脱壳的基本流程,包括动态分析和静态分析两个阶段;- 介绍常用的黑盒脱壳工具和技术。

2. 基于动态分析的脱壳技术(60分钟):- 介绍动态调试工具的基本原理和使用方法,如OllyDbg、IDA Pro等;- 讲解动态脱壳的具体步骤,包括找到目标程序的入口点、跟踪程序的执行流程等;- 演示使用动态调试工具进行脱壳的实例。

3. 基于静态分析的脱壳技术(60分钟):- 介绍静态分析工具的基本原理和使用方法,如IDA Pro、Hopper Disassembler等;- 讲解静态脱壳的具体步骤,包括分析目标程序的文件格式、反汇编、符号重建等;- 演示使用静态分析工具进行脱壳的实例。

4. 脱壳防护的对策和破解方法(30分钟):- 介绍常见的脱壳防护技术,如代码加壳、虚拟机脱壳、反调试等;- 分析脱壳防护的原理和方法;- 演示使用特定工具和技术进行防护破解的实例。

三、教学方法和手段:1. 理论讲解结合实例演示:通过讲授理论知识,配合实际案例进行演示,加深学生对黑盒脱壳的理解和应用能力。

2. 小组合作学习:将学生分成小组,让他们合作完成一些案例分析和实验,提高学生的问题解决能力和团队合作能力。

3. 开放式问题讨论:在课程中设立讨论环节,让学生提出问题和解决方案,并引导他们进行深入思考和探索。

[原创]手工脱壳实例演示

[原创]手工脱壳实例演示

[原创]手工脱壳实例演示适合读者:破解爱好者、程序员前置知识:汇编语言阅读能力,基本破解工具的使用方法手工脱壳实例演示文/图 wast我们通常在汉化软件和解密软件的时候都需要脱壳,因为大部分的软件都有加壳。

“壳”是一段专门负责保护软件不被非法修改或反编译的程序。

它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。

经过加壳的软件在跟踪时已无法看到其真实的十六进制代码,因此可以起到保护软件的目的。

给软件加壳的主要目的有两点:第一就是达到压缩EXE文件的目的,现在虽然说硬盘的容量已经很大了,但是程序“减肥”还是一个很好的节约空间的办法,还有就是方便网络传输;其二就是加密目的,有一些版权信息需要保护起来,不能让别人随意更改,如作者的姓名、软件的名称等。

大部分的程序加壳是为了防止反跟踪,防止程序被人跟踪调试,防止程序算法被别人静态分析。

给软件加壳的实质,其实就是给可执行文件加上个外衣。

用户执行的只是这个外壳程序,也就是当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后的工作就交给真正的程序了。

所以,所有的工作都是在内存中进行的,而用户是无法知道程序具体是怎么样在内存中运行的。

正是出于保护自己的软件的目的,许多软件都给自己披上了一层坚固的“壳”,使我们无法直接找到其中的资源,如果要汉化这样的软件,就必须给它脱壳,如果不给它脱壳,则无法完成汉化工作。

可以这样说,如果你想汉化软件,却不会脱壳的话,那将寸步难行!所以我们很有必要了解加壳/脱壳技术。

常用加壳软件及其特点为了加密,会用到一些软件。

它们能将可执行文件压缩和对信息加密,实现“壳”的两个功能,这类软件称为加壳软件。

在软件上加上的东东也就是我们讨论的“壳”了。

但是有一点大家得搞明白就是加壳软件是不同于一般的Winzip、Winrar等压缩软件的,加了壳后的文件能够直接运行,也就是加壳后还是一个可执行文件,它们的解压在内存中完成;Winzip等软件只能是把文件解压到硬盘中,只是将压缩后的文件还原成原文件。

软件加壳脱壳技术教程

软件加壳脱壳技术教程
附加一点内容
一.壳的概念
作者编好软件后,编译成exe可执行文件
1.有一些版权信息需要保护起来,不想让别人
随便改动,如作者的姓名等
2.需要把程序搞的小一点,从而方便使用
于是,需要用到一些软件,他们能将exe可执行文件压缩,
实现上述两个功能,这些软件称为加壳软件或压缩软件.
它不同于一般的winzip,winrar等压缩软件.
好,我们先从一个基本的Upx壳入手。
本地下载
首先必须的工具要准备好,
查壳工具
Peid0.91,Fileinfo,Language2000,File Scanner等。
查入口工具。
Peid0.91首推,冲击波(9X)系统专用,Asloader,自己的感觉,程序跨段跳跃点。
脱壳工具。
Ollydbg首选,LoadPe,PEditor,ProcDump等,够用了。
傻瓜式软件,运行后选取待侦测壳的软件即可(open)
脱壳教程2:手动脱壳入门第一篇
【使用工具】Ollydbg1.10b,ImportREC1.6F
【破解平台】Win2000/XP
前言,作者写这篇文章只是举个例子,希望读者能够举一反三,看清思路.
本论坛中破解高手很多,不会手动脱壳者人数仍然不少。有人会说,我有Unaspack,Caspr,ProcDump等众多脱壳工具,不会手动脱壳用工具脱就可以了。但有部分壳如Asprotect1.23Rc4,本论坛高手仙剑(将自己加密壳伪装成C++),有漏洞,用Peid查壳,Ep区段写有Xj,用Od载入提示有壳,更有甚一些软件如大嘴日语加了四层壳,这些都是工具无法脱壳的。随着加密壳的不断出现,基本壳都不会,高版本的加密壳以后脱壳盲根本无从入手。所以,手动脱壳Crack必修。

加壳 脱壳代码

加壳 脱壳代码

加壳和脱壳通常是在软件工程中使用的术语,它们涉及到对二进制代码进行加密和解密。

加壳:这是将代码进行加密的过程。

当代码被加壳时,它变得难以阅读和理解。

这可以防止未经授权的人查看或修改代码。

加壳后的代码通常会以一种特殊的方式执行,这使得原始代码在运行时才能被解密并执行。

脱壳:这是将加壳的代码进行解密的过程。

当你想查看或修改加壳的代码时,你需要进行脱壳。

脱壳后的代码通常是原始代码,可以被阅读和理解。

以下是一个简单的Python加壳和脱壳的示例:加壳:```pythondef obfuscate_code(code):encrypted_code = ""for char in code:encrypted_code += chr(ord(char) ^ 42) # XOR with 42 to encrypt the codereturn encrypted_codeoriginal_code = "print('Hello, World!')"encrypted_code = obfuscate_code(original_code)exec(encrypted_code) # This will run the encryptedcode```脱壳:```pythondef deobfuscate_code(encrypted_code):decrypted_code = ""for char in encrypted_code:decrypted_code += chr(ord(char) ^ 42) # XOR with 42 to decrypt the codereturn decrypted_codeencrypted_code = "print('Hello, World!')" # This is the encrypted code from the previous exampledecrypted_code = deobfuscate_code(encrypted_code)exec(decrypted_code) # This will run the decrypted code, which will print "Hello, World!"```请注意,这只是一个简单的示例,实际的加壳和脱壳技术要复杂得多,并且可以包括更高级的加密和混淆技术。

软件加壳、脱壳基础介绍

软件加壳、脱壳基础介绍

软件加壳、脱壳基础介绍什么是加壳加壳的全称应该是可执⾏程序资源压缩,压缩后的程序可以直接运⾏。

加壳,顾名思义,就是给⼀个东西加上⼀个壳,只不过这⾥是程序。

就好⽐这⼤⾃然中的种⼦⼀样,为了保护⾃⼰,有⼀层壳,要想看到⾥⾯的东西,就要剥开这层壳。

加壳的另⼀种常⽤的⽅式是在⼆进制的程序中植⼊⼀段代码,在运⾏的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的⽬的是隐藏程序真正的OEP(⼊⼝点,防⽌被破解)。

⼤多数病毒就是基于此原理。

加壳的程序需要阻⽌外部程序或软件对加壳程序本⾝的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运⾏。

这种技术也常⽤来保护软件版权,防⽌软件被破解。

但对于病毒,加壳可以绕过⼀些杀毒软件的扫描,从⽽实现它作为病毒的⼀些⼊侵或破坏的⼀些特性。

加壳的⼯具分为压缩壳和加密壳:* UPX ASPCAK TELOCK PELITE NSPACK … ** ARMADILLO ASPROTECT ACPROTECT EPE SVKP …*什么是脱壳 脱壳就是将外⾯的保护程序脱掉,看到⾥⾯的程序。

对于有壳的程序,每次程序的⼊⼝点总是从壳开始,,这个⼊⼝点是EP,那么源程序的⼊⼝点是OEP,壳将真正的OEP隐藏了,我们脱壳就是修改程序的⼊⼝点。

如何脱壳 如果没有基础的汇编知识,那就查出相应的壳,⽤相应的脱壳机进⾏脱壳,那如果,脱壳机⽆法脱呢?⼿动脱壳!基础知识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。

第2课用相应工具软件为软件自动脱壳(非手动脱壳)解析

第2课用相应工具软件为软件自动脱壳(非手动脱壳)解析

第二课用相应工具软件为软件自动脱壳(非手动脱壳)欲破解一个软件,我们首先应根据前面的内容侦测它的壳,然后我们要把它的壳脱去,还原软件的本来面目。

如果软件是一个PLMM,我们不喜欢穿衣服的MM,我们不喜欢艺术照的MM,我们迫不及待地想把MM脱光,想把MM骗上床。

带壳的软件以后很难分析,带壳的穿衣的MM很难调教,壳是一个拦路虎,我们却不知武松醉在何处。

这就如同我们要吃糖炒栗子,必须先剥掉栗子壳一样。

这一课就教给你如何用自动剥壳机去掉花生壳、栗子壳之类的东东。

若侦测出它根本没加壳,就可省掉这一步了(现在没加壳的软件已经很少很少了,除非软件作者缺乏最基本的加密解密常识)。

脱壳成功的标志是脱壳后的文件能正常运行,功能没有任何损耗。

一般来说,脱壳后的文件长度大于原文件长度;即使同一个文件,当采用不同脱壳软件进行脱壳的时候,由于脱壳软件机理不同,脱出来的文件大小也不尽相同。

但只要能够运行起来,这都是正常的,就如同人的体重,每次上秤,份量都有所不同。

但只要这个人是健康的,就无所谓,合乎情理。

一、脱壳软件的两大类别(两个门派――少林、武当)脱壳软件主要分两大类:专用脱壳软件(武当派)和通用脱壳软件(少林派,源自“全民皆武,天下英雄出少年”)。

每个专用脱壳软件只能脱掉特定的一种或两种加壳软件所加的壳,也就是说它是专门针对某种加壳软件的某个版本而制作的。

通用脱壳软件则具有通用性,可以脱掉许多种不同类型的壳。

根据“以一当一”的原则,专用类此门派为“武当”派。

大家可能会有这样的疑问?既然有通用脱壳软件,为什么还要专用脱壳软件呢?所谓“术业有专攻”,通用的脱壳程序往往不能精确地适用于某些软件,而专用的脱壳程序适用面虽窄,对付特定的壳却极为有效。

因此,少林派和武当派缺一不可,相辅相成。

均掌握了武术之精髓,能置“壳”以死地,打得壳满地找牙,第一时间以迅雷不及掩耳之势极速脱掉壳MM的衣衫。

二、专用脱壳软件的四大类别根据壳的流行程度,常用的脱壳软件主要有三类:脱Aspack类(叉A)、脱UPX类(叉U)、脱pecompact类(叉P,怎么又跟微软搞到一块儿了),分别针对前面提到的3个加壳软件。

(完整版)常见几种脱壳方法(可编辑修改word版)

(完整版)常见几种脱壳方法(可编辑修改word版)

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

当然加密壳的保护能力要强得多!-----------<小 A 分割线>-------------二、工具的认识OllyDBG ring3 shell 层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0 级别调试工具-------------<小 A 分割>-------------------三、常见手动脱壳方法预备知识1.P USHAD (入栈/压栈)代表程序的入口点,2.P OPAD (弹栈/出栈)代表程序的出口点,与 PUSHAD 想对应,一般找到这个OEP 就在附近3.O EP:程序的入口点,软件加壳就是隐藏了 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。

用Ollydbg手脱HASP Protection V1X加壳的EXE和DLL

用Ollydbg手脱HASP Protection V1X加壳的EXE和DLL

用Ollydbg手脱HASP Protection V1.X加壳的EXE和DLLUnPacKed By : fly软件下载: /Store/MTB14_StandardSetup.exe软件下载:ftp:///pub/hasp/hl/windows/installed/VendorTools/HASP_HL_Envelope .zip驱动下载:ftp:///pub/hasp/hl/windows/installed/redistribute/drivers/HASP_HL _driver_setup.zip软件简介: HASP HL protection and licensing software tools make up the Vendor Center program suite. HASP HL Envelope is one of the three programs included in the Vendor Center. The HASP HL Envelope is a tool that wraps your applications within a protective shield. The tool offers advanced protection features to enhance the overall level of security of your software. Implementing HASP HL Envelope protection is the fastest way to secure your software, and does not require you to alter any source code. You simply use the HASP HL Envelope graphical interface to apply protection parameters to an executable file. In addition, you can modify all protection parameters and customize messages displayed to end-users running the protected applications.【作者声明】:只是感兴趣,没有其他目的。

鸟儿学破解系列文章之二软件脱壳打回原形

鸟儿学破解系列文章之二软件脱壳打回原形

网络上还没出现铁甲这个壳的脱壳机,所以我们只有手工来搞了,拿出我们菜鸟喜欢用的OllyDbg加载程序,忽略所有的异常。程序停留在0040A000处。
=800)window.open('../images/10_6_45494b8555f664f.gif');"onload="if(this.width>'800')this.width='800';if(this.height>'800')this.height='800';">
这里是软件的第二次代码解密的地方,我们和上面一样,单击popad处按下F4,让程序直接解密,这个时候程序已经解密好了,现在我们就是要找OEP了,我们按下CTRL+F,调出查找命令对话框,将整个段块前面的钩去掉,输入popad来查找。经过6次的查找我们来到了如下地方
=800)window.open('../images/10_6_26581a589348103.gif');"onload="if(this.width>'800')this.width='800';if(this.height>'800')this.height='800';">
手工脱壳基本步骤:
1. 寻找OEP
2. DUMP文件
3. 修复输入表
我们用PeiD查到我们现在要脱的壳是铁甲。
=800)window.open('../images/10_6_cfd4ecb068008aa.gif');"onload="if(this.width>'800')this.width='800';if(this.height>'800')this.height='800';">

加壳与脱壳的原理

加壳与脱壳的原理

加壳与脱壳的原理
加壳的原理是将原始程序代码进行压缩、加密等处理,再添加一层壳代码。

当加壳后的文件执行时,壳代码先于原始程序运行,将压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。

加壳的目的是隐藏程序真正的OEP(入口点,防止被破解),保护原始程序不被外部程序破坏,同时也可以防止软件被破解。

而脱壳则是加壳的逆过程,通过技术手段将加壳后的程序中的壳代码去除,还原出原始程序代码。

脱壳的过程需要克服壳代码对程序的保护和干扰,对技术要求较高。

总的来说,加壳和脱壳是一对相互对立的技术,前者用于保护程序,后者用于破解保护。

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

应用程序加壳与脱壳
计算机与信息学院 信息安全专业11级1班
朱航宇 20112878
(1)实验目的
通过对灰鸽子自带的加壳程序,实现对改程序的加壳操作,并对加壳前后作出相应比较。

从而了解什么是加壳,什么是脱壳,以及加壳的原理、作用。

(2) 实验内容
使用灰鸽子黑防专版生成加壳和未加壳程序;使用PEID测试加壳程序;使用UPXUnpack汉化版(利用OD脱壳)对已加壳的程序进行脱壳操作。

(3) 实验步骤
1. 加壳
1. 打开灰鸽子黑防专版。

2. 配置服务程序,生成不加壳程序。

点击工具栏上的“配置服务程序”按钮,自动上线设置中,ip设置为127.0.0.1;选择“高级选项”,选择 不加壳,设置保存路径保存路径当前文件夹,保存文件名称为 Server.exe ,然后点击 生成服务器。

此时在系统桌面上将生成该程序。

这个程 序即为没有加壳的灰鸽子程序。

3.配置服务程序,生成加壳程序。

在主界面点击配置服务程序,打开服务器配置对话框设置好IP地址为127.0.0.1,然后点击“高级选项”选择:使用UPX加壳,保存路径当前文件夹,保存文件名设置为Server_jiake.exe ,并点击生成服务器按钮。

生成的程序如图1所示。

图1.灰鸽子生成加壳和不加壳的server
4.打开PEID程序;将这两个文件分别拖到PEiD程序界面。

分别查看检测结果 ,以下两个图分别是未加壳和加了壳的检测结果,如图2,图3,可以看出,未加壳程序所检测出来的是文件开发工具,而加了壳的文件检测出来的是加壳信息。

图2.未加壳的检测
图3.加壳的检测
2. 脱壳
1、打开UPXUnpack汉化版程序,主界面如下;直接拖动
Server_jiake.exe文件到程序内,显示如图4所示,生成脱壳文件Server_tuoke。

图4.加壳server脱壳
2. 再次打开PEID程序,检测Server_tuoke.exe文件的加壳信息,如图5
所示。

可以看到它的信息和未加壳server是相同的。

图5.脱壳后的server
(4) 实验结果
使用灰鸽子黑防专版成功的生成加壳和未加壳程序;使用PEID成功测试加壳程序和脱壳程序;使用UPXUnpack汉化版(利用OD脱壳)成功对已加壳的程序进行脱壳操作。

(5) 实验总结及思考
经过本次实验了解了灰鸽子的加壳和脱壳处理,对程序加壳有了初步的掌握。

所谓壳,其实就是指利用特殊的算法,对exe、dll文件里面的资源进行压缩的方法,这个压缩后的文件可以独立运行,解压过程完全隐蔽,都在内存中完成解压的原理是加壳工具在文件头里加一段指令,告诉CPU,怎么才能解压自己。

这种技术用于正当方面,可运用于版权保护。

软解的作者可通过哈希算法对软解的关键部位求其哈希值,然后将其作为软件在内存中运行密钥,当密钥正确时方可让CPU解压。

当然黑客通过对木马进行加壳从而躲避杀毒软件的检测。

相关文档
最新文档