朱航宇-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. 开放式问题讨论:在课程中设立讨论环节,让学生提出问题和解决方案,并引导他们进行深入思考和探索。

  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解压。

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

相关文档
最新文档