1、PE文件:
Microsoft设计了一种新的文件格式Portable Executable File Format(可移植的执行体即PE格式),该格式应用于所有基于Win32的系统:Windows NT、Windows 2000、Win32s及Windows 95/98。
2、基址(ImageBase ):
是指装入到内存中的EXE或DLL程序的开始地址,它是Win32中的一个重要概念。 在Windows NT中,缺省的值是40000h;对于DLLs,缺省值为100000h。在Windows 95中,10000h不能用来装入32位的执行文件,因为该地址处于所有进程共享的线性地址区d3f2,因此Microsoft将Win32可执行文件的缺省基地址改变为400000h。
3、RVA:
相对虚拟地址(Relative Virual Address),是某个项相对于文件映象地址的偏移。
例如:装载程序将一个文件装入到虚拟地址空间中,从
10000h开始的内存中,如果PE中某个表在映像中的起始地址是10464h,那么该表的RVA就是464h。
d0e9拟地址(RVA)a3bdc6abd2c6地址a3ab基址(ImageBase )
4、Entry Point:
入口点,就是程序在完成了对原程序的还原后,开始跳转到刚还原程序执行,此时的地址就是入口点的值
5、SEH技术:
结构化异常处理(StructuredExceptionHandling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。外壳程序里大量地使用了SEH,如果不了解SEH,将会使你跟踪十分困难。由于Ollydbg 对SEH处理异常灵活,因此脱壳用Ollydbg会大大提高效率
6、给自己穿件衣服……壳?:
所谓加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。
当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序,这就是我们找OEP的原因了。一切操作自动完成,用户不知道也无需知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。
(PS:壳是指在一个程序的外面加上另外一段代码,保护里面的代码不被非法修改或者反编译。)
7、查壳:
原理是利用查特征串搜索来完成识别工作的。各种开发语言都有固定的启动代码部分,利用这点就可识别出是何种语言编编译的。同样,不同的壳也有其特征码,利用这点就可识别是被何种壳所加密。PEiD提供了一个扩展接口文件userdb.txt,用户可以自定义一些特征码,这样就可识别出新的文件类型,当然有些外壳程序为了欺骗PEiD等文件识别软件,会伪造启动代码部分,例如将入口代码改成编程语言程序入口处类似代码,即可达到欺骗目的。所以,文件识别工具所给出的结果只是个参考,文件是否被加壳处理过,还得跟踪分析程序代码才可得知。对于菜鸟我们可以看EP区段或者看PEID的扩展信息看有没有壳~。
(PS:查壳和木马病毒查杀差不多|其实是十万八千里|)
8、没有绝对的安全……脱壳:
脱壳主要有两种方法:硬脱壳和动态脱壳。
第一种,是硬脱壳,这是指找出加壳软件的加壳算法,写出逆向算法,就像压缩和解压缩一样。由于现在的壳有加密、变形、虚拟环境等等特点,每次加壳生成的代码都不一样。硬脱壳对此无能为力,
第二种,是动态脱壳。加壳的程序运行时必须还原成原始形态,就是加壳程序运行后必须进行解压到程序的文件头。所以我们可以用OD跟踪到OEP的原因。这个时候我们就可以抓取(Dump)内存中的镜像,再重构成标准的执行文件。这样我们就脱壳了。
(PS:现在的加密壳更复杂一点,需要我们考虑的东西就更多了。)
分享到:
相关推荐
本课程"脱壳基础第一课"旨在教授初学者如何理解和执行这个过程。 首先,我们需要了解什么是壳。壳通常是指在原始可执行代码(payload)周围添加的一层额外代码,用于保护恶意代码免受分析和检测。这些壳可以是简单...
《脱壳基础知识入门》电子书主要探讨的是计算机安全领域中的一个重要话题——脱壳技术。脱壳,简单来说,就是从程序的外壳中提取出原始代码的过程,通常用于对抗恶意软件的反逆向工程策略。在本电子书中,作者将为...
脱壳入门基础 在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来...
理解脱壳的基础知识对于希望深入软件安全领域的人员而言,是不可或缺的一环。下面,我们将详细探讨一些脱壳相关的知识点。 首先,我们先来解释一下什么是“壳”。在计算机领域,“壳”指的是一个程序,它被设计用来...
下面是个人总结的一个VMP脱壳步骤,按照这个步骤,包括VMP1.6—2.0在内应该有70%-80%能脱壳。 首先,需要找一个强大的OD(OllyDbg),这是脱壳的基本工具。然后,需要下载StrongOD.dll插件, StrongOD.dll是一个...
零基础脱壳破解第一课,大家一起学习脱壳,不再被骗子欺骗。。
#### 一、VMP脱壳脚本简介 在软件开发和安全领域中,反编译和逆向工程是常见且重要的技术之一。对于受到保护的软件而言,特别是采用了VMProtect等加密技术的应用程序,脱壳即去除软件保护层成为了一项具有挑战性的...
一、脱壳基础 脱壳,顾名思义,就是移除程序表面的保护层,这层保护层通常被称为"壳"。壳可能包含混淆代码、反调试机制甚至自解压逻辑,旨在防止恶意软件被轻易分析。常见的壳有UPX、PEpack、Themida等。RL!...
在IT安全领域,"脱壳"是一个至关重要的概念,它涉及到对恶意软件分析和逆向工程。本教程,"手动脱壳教程 第一课.手脱UPX的四种方法",是为初学者设计的,旨在帮助他们了解如何对使用UPX壳的程序进行手动脱壳操作。 ...
如果学习Android加固与脱壳不学习这些基础的话,那么后面加固点和脱壳点能让你轻轻松松看得云里雾里,不知所以。想学这一门手艺,该跨的门槛一点儿马虎不得,但是我有预感,当你把这些基础底层难啃的知识整出些门道...
#### 脱壳基础知识 - **PUSHAD和POPAD指令**:在Windows环境下,`PUSHAD`指令用于保存所有寄存器的值到堆栈上,而`POPAD`则用于恢复这些寄存器的值。在脱壳过程中,`PUSHAD`通常出现在原始入口点(OEP)之前,而`...
2. **PE文件结构**:理解Portable Executable(PE)文件格式是脱壳的基础,包括节区、导入表、导出表、资源等关键部分。 3. **反调试技术**:壳通常包含反调试机制,如检查调试器的存在,这需要学习如何绕过这些...
零基础脱壳破解第一课,大家一起学习脱壳,不再被骗子欺骗。。
**反汇编**是脱壳过程中非常重要的一环,主要用于理解程序的内部逻辑。常用的反汇编工具包括**W32Dasm**等。W32Dasm具有易用性好、功能全面等特点。 以easymail.exe为例,我们可以使用W32Dasm进行反汇编,寻找特定...
本文档《实现通用脱壳机》以Julien Lenoir在2015年HITB新加坡会议上提交的演讲稿为基础,详细讨论了加壳与脱壳的原理,并重点介绍了如何设计并实现一个通用脱壳机。 ### 加壳和脱壳原理 加壳是软件保护的一种手段...
本文将深入探讨使用OllyDbg(OD)进行脚本脱壳的技术,这是一种流行且强大的逆向工程工具。 首先,"脱壳"是指移除软件的保护层,通常称为壳,这些壳可能是为了防止程序被反编译或修改。在反病毒和安全研究中,脱壳...
OD专用脱壳脚本是一种专门针对OD(OllyDbg)调试器设计的自动化工具,旨在帮助用户在逆向工程过程中高效地进行程序脱壳。OllyDbg是一款流行的、功能强大的x86汇编语言级别的调试器,常用于软件分析、病毒分析以及...
总的来说,"手动脱壳第二课 UPX 1.08"是一个针对UPX 1.08版本的脱壳教程,涵盖了从理论到实践的全过程,适合有一定逆向工程基础的学习者深入研究。通过这个课程,你将能够独立完成对UPX壳的分析和脱壳,提升自己的...