一步一步教你加密解密技术——压缩与脱壳(1)(1)

压缩与脱壳第一节 PE文件格式PE教程1: PE文件格式一览PE 的意思就是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行体文件格式。它的一些特性继承自 Unix的 Coff (common object file format)文件格式。"portable executable"(可移植的执行体)意味着此文件格式是跨win32平台的 : 即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行体必然得有一些改变。所有 win32执行体 (除了VxD和16位的Dll)都使用PE文件格式,包括NT的内核模式
驱动程序(
kernel mode drivers)。因而研究PE文件格式给了我们洞悉Windows结构的良机。本教程就让我们浏览一下 PE文件格式的概要。DOS MZ headerDOS stubPE headerSection tableSection 1Section 2Section ...Section n上图是 PE文件结构的总体层次分布。所有 PE文件(甚至32位的 DLLs) 必须以一个简单的 DOS MZ header 开始。我们通常对此结构没有太大兴趣。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,
然后运行紧随 MZ header 之后的 DOS stub。DOS stub实际上是个有效的 EXE,在不支持 PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串 "This program requires Windows" 或者程序员可根据自己的意图实现完整的 DOS代码。通常我们也不对 DOS stub 太感兴趣: 因为大多数情况下它是由汇编器/编译器自动生成。通常,它简单调用中断21h服务9来显示字符串"This program cannot run in DOS mode"。紧接着 DOS stub 的是 PE header。 PE header 是PE相关结构 IMAGE_NT_HEADERS 的简称,其中包含了许多PE装载器用到的重要域。当我们更加
深入研究PE文件格式后,将对这些重要域耳目能详。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从 DOS MZ header 中找到 PE header 的起始偏移量。因而跳过了 DOS stub 直接定位到真正的文件头 PE header。PE文件的真正内容划分成块,称之为sections(节)。每节是一块拥有共同属性的数据,比如代码/数据、读/写等。我们可以把PE文件想象成一逻辑
磁盘,PE header 是磁盘的boot扇区,而sections就是各种文件,每种文件自然就有不同属性如只读、系统、隐藏、文档等等。 值得我们注意的是 ---- 节的划分是基于各组数据的共同属性: 而不是逻辑概念。重要的不是数据/代码是如何使用的,如果PE文件中的数据/代码拥有相同属性,它们就能被归入
同一节中。不必关心节中类似于"data", "code"或其他的逻辑概念: 如果数据和代码拥有相同属性,它们就可以被归入同一个节中。(译者注:节名称仅仅是个区别不同节的符号而已,类似"data", "code"的命名只为了便于识别,惟有节的属性设置决定了节的特性和功能)如果某块数据想付为只读属性,就可以将该块数据放入置为只读的节中,当PE装载器映射节内容时,它会检查相关节属性并置对应内存块为指定属性。如果我们将PE文件格式视为一逻辑磁盘,PE header是boot扇区而sections是各种文件,但我们仍缺乏足够信息来定位磁盘上的不同文件,譬如,什么是PE文件格式中等价于目录的东东?别急,那就是 PE header 接下来的数组结构 section table(节表)。 每个结构包含对应节的属性、文件偏移量、虚拟偏移量等。如果PE文件里有5个节,
那么此结构数组内就有5个成员。因此,我们便可以把节表视为逻辑磁盘中的根目录,每个数组成员等价于根目录中目录项。以上就是PE文件格式的物理分布,下面将总结一下装载一PE文件的主要步骤:当PE文件被执行,PE装载器检查 DOS MZ header 里的 PE header 偏移量。如果找到,则跳转到 PE header。 PE装载器检查 PE header 的
有效性。如果有效,就跳转到PE header的尾部。 紧跟 PE header 的是节表。PE装载器读取其中的节信息,并采用文件映射方法将这些节映射到内存,同时付上节表里指定的节属性。 PE文件映射入内存后,PE装载器将处理PE文件中类似 import table(引入表)逻辑部分。 上述步骤是基于本人观察后的简述,显然还有一些不够精确的地方,但基本明晰了执行体被处理的过程。 1 2 3 4 5 6 7 下一页>> 内容导航 给力(0票)动心(0票)废话(0票)专业(0票)标题党(0票)路过(0票) 原文:一步一步教你加密解密技术——压缩与脱壳(1)(1) 返回网络安全首页

时间: 2024-08-31 08:42:18

一步一步教你加密解密技术——压缩与脱壳(1)(1)的相关文章

一步一步教你加密解密技术——压缩与脱壳(3)(1)

第四节 手动脱壳1.基本知识手动脱壳就是不 借助自动脱壳工具,而是用动态调试工具SOFTICE或TRW2000来脱壳.这课谈谈一些入门方面的知识,如要了解更深的脱壳知识,请参考<脱壳高级篇>这课.工具*调试器:SoftICE .TRW2000*内存抓取工具:Procdump等:*十六进制工具:Hiew.UltraEdit.Hex Workshop等:*PE编辑工具: Procdump.PEditor等:名词概念★PE文件:Microsoft设计了一种新的文件格式Portable Executa

一步一步教你加密解密技术——压缩与脱壳(4)(1)

第五节 脱壳高级篇1. 认识Import表著者: [yAtEs] [Jamesluton@hotmail.com] 译者:hying[CCG] 标题:PE输入表说明有很多介绍PE文件的文章, 但是我打算写一篇关于输入表的文章,因为它对于破解很有用. 我想解释它的 最好的方法是举一个例子,你可以跟着我逐步 深入,一步一步的思考,最后你将完全 明白,我选择了一个我刚下载下来的小程序,它是用TASM编译的,有一个比较小的输入表,所以我想它应该是个不错的范例. 好了,让我们开始吧. 首先我们得找到输入表

一步一步教你加密解密技术——压缩与脱壳(2)(1)

第二节 认识脱壳作为一个以"壳"为主的站台,如果连访者连什么是"壳"都不清楚的话,那我也太失败了.很早以前就想写编完全关于"壳"的文章,但苦于时间和文字水平的关系,都没提笔. 首先我想大家应该先 明白"壳"的概念.在自然界中,我想大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等.同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序.它们一般都是先于程序运行,拿到控制权,然后完成它

一步一步教你加密解密技术——软件保护技术(1)(1)

第6章 软件保护技术第一节 常见保护技巧1.序列号方式(1)序列号保护机制数学算法一项都是密码加密的核心,但在一般的软件加密中,它似乎并不太为人们关心,因为大多数时候软件加密本身实现的都是一种编程的技巧.但近几年来随着序列号加密程序的普及,数学算法在软件加密中的比重似乎是越来越大了. 我们先来看看在网络上大行其道的序列号加密的工作原理.当用户从网络上下载某个shareware--共享软件后,一般都有使用时间上的限制,当过了共享软件的试用期后,你必须到这个软件的公司去注册后方能继续使用.注册过程一

一步一步教你加密解密技术——动态分析技术(1)

第2章 动态分析技术第一节 SoftICE与TRW2000安装安装与配制SOFTICE有几个平台的版本,DOS,WINDOWS 3.0,Windows 95/98,WINDOWS NT,等. 由于现在最普及的操作系统是 Windows 95/98.Windows NT.Windows Millennium.Windows2000因此就讲讲SOFTICE在这几个平台安装时的一些注意事项.一.SOFTICE for win9x安装与配制㈠.SOFTICE安装 1.SOFTICE目前最新版本是4.05

一步一步教你加密解密技术——函数、资源与注册表(1)

第4章 函数.资源与注册表第一节 Win32 API 函数1.限制程序功能函数1.EnableMenuItem允许.禁止或变灰指定的菜单条目2.EnableWindow允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰) 2.对话框函数CreateDialog从资源模板建立一非模态对话窗CreateDialogParam 从资源模板建立一非模态对话窗CreateDialogIndirect 从内存模板建立一非模态对话窗CreateDialogIndirectParam从内存模板建立一非模态对

一步一步教你加密解密技术——注册机和补丁制作(1)

注册机和补丁制作第一节 概念介绍 何为注册机?注册机就是针对某一软件,通过一定算法算出注册码的程序.我们写注册机时,一般都要了解注册码的算法(这当然是通过跟踪调试了解的),之后用汇编语言或其它 高级语言来把算法还原.这样大家可根据自己的要求输入注册码,如根据自己的姓名,公司的名称注册. 目前 共享软件有两种注册方式: 一 种是交费后,作者给寄有全部功能的 Register软件,原来的Shareware根本没有某些功能: 第二种交费后, 作者给你个注册码(RegisterNumber),注册后功能

一步一步教你加密解密技术——软件保护技术(3)(1)

第三节 加密算法1.RSA算法它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和Leonard Adleman.但RSA的安全性一直未能得到理论上的证明.它经历了各种攻击,至今未被完 全攻破.一.RSA算法 : 首先,找出三个数,p,q,r,其中p,q是两个相异的质数,r是与(p-1)(q-1)互质的数......p,q,r这三个数便是privatekey接著,找出m,使得rm==1mod(

一步一步教你加密解密技术——软件保护技术(2)(1)

第二节 反跟踪技术1.Anti-Debug1.MeltICE子类型类型:检测SoftICE.TRW2000平台:Windows9x.Windows NT原理:用CreateFileA( )或_lopen( )函数试图获得SoftICE的驱动程序"\\.\SICE"(Windows9X版本)."\\.\SIWDEBUG"."\\.\NTICE"(Windows NT版本)."\\.\SIWVID"等的句柄,如果成功则说明Soft