PE文件结构详解(三)PE导出表

PE文件结构详解(三)PE导出表
PE文件结构详解(三)PE导出表

PE文件结构详解(三)PE导出表

上篇文章PE文件结构详解(二)可执行文件头的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,DataDirectory中的每一项都可以用这个函数获取,函数原型如下:

PVOID NTAPI RtlImageDirectoryEntryToData(PVOID Base, BOOLEAN MappedAsImage, USHORT Directory, PULONG Size);

Base:模块基地址。

MappedAsImage:是否映射为映象。

Directory:数据目录项的索引。

Size:对应数据目录项的大小,比如Directory为0,则表示导出表的大小。

返回值表示数据目录项的起始地址。

这次来看看第一项:导出表。

导出表是用来描述模块中的导出函数的结构,如果一个模块导出了函数,那么这个函数会被记录在导出表中,这样通过GetProcAddress函数就能动态获取到函数的地址。函数导出的方式有两种,一种是按名字导出,一种是按序号导出。这两种导出方式在导出表中的描述方式也不相同。模块的导出函数可以通过Dependency walker工具来查看:

上图中红框位置显示的就是模块的导出函数,有时候显示的导出函数名字中有一些符号,像 ??0CP2PDownloadUIInterface@@QAE@ABV0@@Z,这种是导出了C++的函数名,编译器将名字进行了修饰。

下面看一下导出表的定义吧:

结构还算比较简单,具体每一项的含义如下:

Characteristics:现在没有用到,一般为0。

TimeDateStamp:导出表生成的时间戳,由连接器生成。

MajorVersion,MinorVersion:看名字是版本,实际貌似没有用,都是0。

Name:模块的名字。

Base:序号的基数,按序号导出函数的序号值从Base开始递增。

NumberOfFunctions:所有导出函数的数量。

NumberOfNames:按名字导出函数的数量。

AddressOfFunctions:一个RVA,指向一个DWORD数组,数组中的每一项是一个导出函数的RVA,顺序与导出序号相同。

AddressOfNames:一个RVA,依然指向一个DWORD数组,数组中的每一项仍然是一个RVA,指向一个表示函数名字。

AddressOfNameOrdinals:一个RVA,还是指向一个WORD数组,数组中的每一项与AddressOfNames中的每一项对应,表示该名字的函数在AddressOfFunctions中的序号。

第一次接触这个结构的童鞋被后面的5项搞晕了吧,理解这个结构比结构本身看上去要复杂一些,文字描述不管怎么说都显得晦涩,所谓一图胜千言,无图无真相,直接上图:

在上图中,AddressOfNames指向一个数组,数组里保存着一组RVA,每个RVA 指向一个字符串,这个字符串即导出的函数名,与这个函数名对应的是AddressOfNameOrdinals中的对应项。获取导出函数地址时,先在AddressOfNames 中找到对应的名字,比如Func2,他在AddressOfNames中是第二项,然后从AddressOfNameOrdinals中取出第二项的值,这里是2,表示函数入口保存在AddressOfFunctions这个数组中下标为2的项里,即第三项,取出其中的值,加上模块基地址便是导出函数的地址。如果函数是以序号导出的,那么查找的时候直接用序号减去Base,得到的值就是函数在AddressOfFunctions中的下标。

用代码实现如下:

pe文件格式

PE文件格式详解(一)――基础知识 什么是PE文件格式: 我们知道所有文件都是一些连续(当然实际存储在磁盘上的时候不一定是连续的)的数据组织起来的,不同类型的文件肯定组织形式也各不相同;PE文件格式便是一种文件组织形式,它是32位Wind ow系统中的可执行文件EXE以及动态连接库文件DLL的组织形式。为什么我们双击一个EXE文件之后它就会被Window运行,而我们双击一个DOC文件就会被Word打开并显示其中的内容;这说明文件中肯定除了存在那些文件的主体内容(比如EXE文件中的代码,数据等,DOC文件中的文件内容等)之外还存在其他一些重要的信息。这些信息是给文件的使用者看的,比如说EXE文件的使用者就是Window,而DOC文件的使用者就是Word。Window可以根据这些信息知道把文件加载到地址空间的那个位置,知道从哪个地址开始执行;加载到内存后如何修正一些指令中的地址等等。那么PE文件中的这些重要信息都是由谁加入的呢?是由编译器和连接器完成的,针对不同的编译器和连接器通常会提供不同的选项让我们在编译和 联结生成PE文件的时候对其中的那些Window需要的信息进行设定;当然也可以按照默认的方式编译连接生成Window中默认的信息。例如:WindowNT默认的程序加载基址是0x40000;你可以在用VC连接生成EXE文件的时候使用选项更改这个地址值。在不同的操作系统中可执行文件的格式是不同的,比如在Linux上就有一种流行的ELF格式;当然它是由在Linux上的编译器和连接器生成的,

所以编译器、连接器是针对不同的CPU架构和不同的操作系统而涉及出来的。在嵌入式领域中我们经常提到交叉编译器一词,它的作用就是在一种平台下编译出能在另一个平台下运行的程序;例如,我们可以使用交叉编译器在跑Linux的X86机器上编译出能在Arm上运行的程序。 程序是如何运行起来的: 一个程序从编写出来到运行一共需要那些工具,他们都对程序作了些什么呢?里面都涉及哪些知识需要学习呢?先说工具:编辑器-》编译器-》连接器-》加载器;首先我们使用编辑器编辑源文件;然后使用编译器编译程目标文件OBJ,这里面涉及到编译原理的知识;连接器把OBJ文件和其他一些库文件和资源文件连接起来生成EXE文件,这里面涉及到不同的连接器的知识,连接器根据OS的需要生成EXE文件保存着磁盘上;当我们运行EXE文件的时候有W indow的加载器负责把EXE文件加载到线性地址空间,加载的时候便是根据上一节中说到的PE文件格式中的哪些重要信息。然后生成一个进程,如果进程中涉及到多个线程还要生成一个主线程;此后进程便开始运行;这里面涉及的东西很多,包括:PE文件格式的内容;内存管理(CPU内存管理的硬件环境以及在此基础上的OS内存管理方式);模块,进程,线程的知识;只有把这些都弄清楚之后才能比较清楚的了解这整个过程。下面就让我们先来学习PE文件格式吧。

PDM的主要功能

PDM的主要功能 PDM是为企业提供了一种宏观管理和控制所有与产品相关信息以及与产品相关过程的机制和技术。PDM系统包含多项功能,从面向应用与系统支持的功能来看,一般包括电子仓库(又称电子数据存储、电子保险箱、电子资料室)、面向应用的使用功能(如文档控制、变更控制、配置管理、设计检索与零件库、项目管理等)、实用化支持功能(如通知与通信、数据传输与转换、图像服务与系统管理),其功能结构如图3所示。 图3.PDM系统的主要功能(面向应用与系统支持) 从软件功能模块的组成来看,一般包括电子数据存储和文档管理、工作流程管理、产品结构及配置管理、分类与检索管理、项目管理、集成接口、用户化工具等,其功能结构如图4所示。

图4.PDM系统的功能(面向软件功能模块的组成) 2.2.1项目管理功能 项目管理的定义:为了在确定的时间内完成既定的项目,通过一定的方式合理地组织有关人员,并有效地管理项目中所有资源(人员、设备等)与数据,控制项目进度的系统管理方法,项目管理所涉及的信息最多,范围最广,实现起来也最复杂。 项目管理是面向过程的一种管理模式,它强调对项目的全过程(包括立项、计划、执行、控制和收尾等)进行全方位管理,其静态领域涉及范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、采购管理、风险管理和综合管理九个知识体系。 与目标管理不同,项目本身具有不可重复性并包含许多不确定因索,这就使得管理者和任务承担者很难就项目达成双方一致的目标。由于项目管理贯穿于项目的整个生命周期,而且围绕项目将企业不同职能部门的成员组成一个有机的整体,项目管理者既是这个团队的领导者,又是项目的执行者,对整个项目及其过程负责,准时、优质地完成全部工作,实现项目的目标。因此,项目管理可以避免目标管理特别是以人工为主的管理模式的弊端,有助于企业处理项目实施过程中需要跨领域解决的复杂问题,能有效地提升企业的运营效率。 PDM系统的项目管理功能是为完成对项目进行管理的任务而设蜀的,进行项目管理,需要定制项目模型,在项目模型中对项目的任务、人员和时间安排进行描述。利用文档管理功能对项目的所有文档和数据进行管理;利用用户管理功能组织项目组,安排项目组成员在

PE文件头解析大全

PE可选头部 PE可执行文件中接下来的224个字节组成了PE可选头部。虽然它的名字是“可选头部”,但是请确信:这个头部并非“可选”,而是“必需”的。OPTHDROFFSET宏可以获得指向可选头部的指针: PEFILE.H #define OPTHDROFFSET(a) ((LPVOID)((BYTE *)a + \ ((PIMAGE_DOS_HEADER)a)->e_lfanew + \ SIZE_OF_NT_SIGNATURE + \ sizeof(IMAGE_FILE_HEADER))) 可选头部包含了很多关于可执行映像的重要信息,例如初始的堆栈大小、程序入口点的位置、首选基地址、操作系统版本、段对齐的信息等等。IMAGE_OPTIONAL_HEADER结构如下: WINNT.H typedef struct _IMAGE_OPTIONAL_HEADER { // // 标准域 // USHORT Magic; UCHAR MajorLinkerVersion; UCHAR MinorLinkerVersion; ULONG SizeOfCode; ULONG SizeOfInitializedData; ULONG SizeOfUninitializedData; ULONG AddressOfEntryPoint; ULONG BaseOfCode; ULONG BaseOfData; // // NT附加域 // ULONG ImageBase; ULONG SectionAlignment;

ULONG FileAlignment; USHORT MajorOperatingSystemVersion; USHORT MinorOperatingSystemVersion; USHORT MajorImageVersion; USHORT MinorImageVersion; USHORT MajorSubsystemVersion; USHORT MinorSubsystemVersion; ULONG Reserved1; ULONG SizeOfImage; ULONG SizeOfHeaders; ULONG CheckSum; USHORT Subsystem; USHORT DllCharacteristics; ULONG SizeOfStackReserve; ULONG SizeOfStackCommit; ULONG SizeOfHeapReserve; ULONG SizeOfHeapCommit; ULONG LoaderFlags; ULONG NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER; 如你所见,这个结构中所列出的域实在是冗长得过分。为了不让你对所有这些域感到厌烦,我会仅仅讨论有用的——就是说,对于探究PE文件格式而言有用的。 标准域 首先,请注意这个结构被划分为“标准域”和“NT附加域”。所谓标准域,就是和UNIX可执行文件的COFF 格式所公共的部分。虽然标准域保留了COFF中定义的名字,但是Windows NT仍然将它们用作了不同的目的——尽管换个名字更好一些。 ·Magic。我不知道这个域是干什么的,对于示例程序EXEVIEW.EXE示例程序而言,这个值是0x010B

Excel模版创建pdm

Excel模版创建pdm 一、将数据字典中的数据表结构粘贴到Excel文件中,整理成如下图所示格式 二、在powerdesigner中创建PDM工程,选中该工程,然后打开脚本代码窗口:Tools -Execute Commands -Edit\Run Script ,编写代码脚本。 三、脚本代码

Dim mdl ' the current model Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox "没有活动的模版" End If Dim HaveExcel Dim RQ RQ = vbYes 'MsgBox("Is Excel Installed on your machine ?", vbYesNo + vbInformation, "Confirmation") If RQ = vbYes Then HaveExcel = True ' Open & Create Excel Document Dim x1 ' Set x1 = CreateObject("Excel.Application") x1.Workbooks.Open "C:\Users\Administrator\Desktop\Book1.xls" '指定excel文档路径 Else HaveExcel = False End If a x1, mdl sub a(x1, mdl) dim rwIndex dim tableName dim colname dim table dim col dim count on error Resume Next set table = mdl.Tables.CreateNew '创建一个表实体 https://www.360docs.net/doc/a414102441.html, = "国家信息表" '指定表名,如果在Excel文档里有,也可以.Cells(rwIndex, 3).Value 这样指定 table.Code = "LU_STATUS" '指定表名编码 count = count + 1 For rwIndex = 2 To 1000 '指定要遍历的Excel行标,此处第一列为列名,古从第二行开始循环 With x1.Workbooks(1).Worksheets("sheet1")'需要循环的sheet名称 If .Cells(rwIndex, 1).Value = "" Then Exit For End If

PDM系统功能介绍

1 PDM的常见功能介绍 到目前为止,还没有一个商用PDM软件拥有全部可罗列的PDM功能,其中有的功能构件还有待于进一步发展和完善。 但是,一般PDM系统都包括文档管理、产品配置管理及工作流程管理等最基本的功能,能对产品的整个生命周期进行完整的描述和控制,因此,PDM在企业中的作用已经普遍为大家所认同。 1.1 电子仓库 1.1.1 电子仓库介绍 在企业中,大量与产品相关的数据往往分布在多部门,甚至是多区域中,而且这些数据的格式也是多样的,如文本文件、数据库、图纸文件等,对这些数据的查询、浏览、共享,以及结合工作流程来管理这些数据等,都是企业在进行信息集成时经常遇到的问题。 PDM管理的主要对象是产品的“元数据”,即有关产品信息的信息,其实现基础是电子仓库(Electronic Data Vault)。实施并行工程所需要的“在正确的时间、把正确的数据、按正确的方式、传递给正确的人”对PDM数据管理提出了更高的要求。 电子仓库(Data Vault)是PDM最基本的功能,也是PDM的核心,通常是建立在通用的关系数据库基础上,主要保证数据的安全性和完整性,并支持各种查询和检索功能。 PDM系统中的电子仓库用以取代人工方式的纸质档案管理,使用户方便、快捷、安全地存取、维护及处理各种有关产品的文档,如从设计阶段产生的AutoCAD图纸的数据文件、3D实体造型的数据文件、CAE的分析报告,到制造阶段可能产生的变更单等,都是电子仓库管理的对象。 电子仓库为用户和应用之间的数据传递提供一种安全的手段,其透明性可使用户无需考虑分布式环境下各种数据的实际物理存放位置,允许用户迅速地、集中地处理访问全企业的产品信息,并且使整个企业的各部门共享产品数据。 PDM的电子仓库和文档管理提供了对分布式异构数据生成,存储,查询,控制存取,恢复,编辑,电子检查和记录,电子对象的历史及通用文件管理等能力。 在PDM中,数据的访问对用户来说是完全透明的,用户无需了解应用软件的运行路径、安装版本以及文档的物理位置,以及自己得到的是否是最新版本等信息,所有描述产品、部件或零件的数据都由PDM统一管理,自动集中修改。 PDM系统通过建立在数据库之上的相关联指针,建立不同类型的或异构的产品数据之

手工构造典型PE文件

2009-06-08 11:38:40 https://www.360docs.net/doc/a414102441.html, 来源:黑客防线 一直以来都在学习PE文件结构,从不敢轻视,但是即使如此还是发现自己在这方面有所不足,于是便想到了用纯手工方式打造一个完整的可执行的PE文件。在这期间我也查了大量资料,但是这些资料都有一个通病就是不... 一直以来都在学习PE文件结构,从不敢轻视,但是即使如此还是发现自己在这方面有所不足,于是便想到了用纯手工方式打造一个完整的可执行的PE文件。在这期间我也查了大量资料,但是这些资料都有一个通病就是不完整,看雪得那个只翻译了一部分,加解密技术内幕介绍的更是笼统,而且是打造一个只有180字节的PE文件,是高手们茶余饭后的怡情小游戏。 鉴于此,心想为什么不自己摸索着手工打造一个完整些的呢?一是加强一下自己对于PE文件的了解,二是写出一篇参考性比较强的文章,给有志于在此发展的朋友们铺一铺路,也算是干了一件利国利民的好事。 对于手工打造PE文件,我个人认为至少要分为三篇文章来阐述,每篇相对独立,合起来形成一个相对的体系。第一篇文章(也就是本文)用来介绍怎样用手工打造一个最典型、最简单的PE文件,而后两篇文章的问世还要引用潘爱民先生的一句话“还需要时日与机缘”。 本文介绍的PE文件手工编辑方式,是本着以下三个原则所写的,望读者注意: 1、完整性:对于手工打造PE文件所不需注意的字段也进行了必要的介绍,因此整文可能显得非常臃肿。 2、典型性:完全按照典型的PE文件结构构造,因此对于某些不常见的PE文件结构有一定差距。 3、易学性:对于字段之间的逻辑关系进行了比较细致的介绍,因此对于一部分底子比较好的读者来说可能显得有些啰嗦。 为了方便各位阅读与查阅,我将文章分成了三各部分,以便各位读者各取所需,不用把宝贵的精力浪费在查找上。 1、PE文件整体信息,提供了一个剖析PE文件的图表,以便于读者对于PE文件有一个整体的了解,并监督自己的工作进度。 2、对于重点字段的介绍,以及字段之间的逻辑关系,建议首先从这里开始看。 3、手工构造PE文件字段清单,此清单包含构造一个完整PE文件的每一个字节,跟着这个清单走就可以构造一个PE文件。 对于第一次手工打造PE文件的朋友们来说,你们可以以“一、整体性息”为大纲,并参考第三部分一块一块的慢慢打造,如果有不懂的地方就去看第二部分。 选读:为什么要手工打造PE文件? 我们知道,往往从一个系统可执行文件结构上,就可以看整个操作系统的一些特性。也就是说PE里有Windows操作系统结构与运行机理的影子。由此可见,PE文件必然是一个非常庞杂且逻辑复杂的结构,那么为什么我们还要“自取其辱”来手工制造一个PE文件呢?这就要从PE文件的重要性说起了。 我们现今组成Windows大家庭的主要成员就是PE文件了,里面包括EXE、DLL、OCX、SYS等一切最有价值的文件都是PE文件格式,出于对版权的考虑或对某种技术的渴求,任何一种与Windows系统相关的行为最终都要归集到这里--PE文件。 特别是对于想学习加壳、破解、搞虚拟机的朋友们来说,熟知PE文件结构更是必不可少的基本功! 但也正是由于PE文件的复杂性,我们才要采取一些特别的办法来攻克它,其中手工打造PE文件就是一条捷径。 你可以想像一下,如果你都可以手工打造PE文件的话,那么对于PE文件的了解更是

pe文件结构 入门 教程

三年前,我曾经写了一个手工打造可执行程序的文章,可是因为时间关系,我的那篇文章还是有很多模糊的地方,我一直惦记着什么时候再写一篇完美的,没想到一等就等了三年。因为各种原因直到三年后的今天我终于完成了它。现在把它分享给大家,希望大家批评指正。 我们这里将不依赖任何编译器,仅仅使用一个十六进制编辑器逐个字节的手工编写一个可执行程序。以这种方式讲解PE结构,通过这个过程读者可以学习PE结构中的PE头、节表以及导入表相关方面的知识。为了简单而又令所有学习程序开发的人感到亲切,我们将完成一个Hello World! 程序。功能仅仅是运行后弹出一个消息框,消息框的内容是Hello World!。 首先了解一下Win32可执行程序的大体结构,就是通常所说的PE结构。 如图1所示PE结构示意图: 图1 标准PE结构图 由图中可以看出PE结构分为几个部分: MS-DOS MZ 头部:所有PE文件必须以一个简单的DOS MZ 头开始。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随MZ header 之后的DOS程序。以此达到对Dos系统的兼容。(通常情况DOS MZ header总共占用64byte)。 MS-DOS 实模式残余程序:实际上是个有效的EXE,在不支持PE文件格式的操作系统中,它将简单显

示一个错误提示,大多数情况下它是由汇编编译器自动生成。通常,它简单调用中断21h,服务9来显示字符串"This program cannot run in DOS mode"。(在我们写的程序中,他不是必须的,可以不予以实现,但是要保留其大小,大小为112byte,为了简洁,可以使用00来填充。) PE文件标志:是PE文件结构的起始标志。(长度4byte, Windows程序此值必须为0x50450000) PE文件头:是PE相关结构 IMAGE_NT_HEADERS 的简称,其中包含了许多PE装载器用到的重要域。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从DOS MZ header中找到PE header的起始偏移量,跳过了MS-DOS 实模式残余程序,直接定位到真正的文件头PE header,长度20byte。 PE文件可选头:虽然它的名字是“可选头部”,但是请确信:这个头部并非“可选”,而是“必需”的。(长度 224byte )。 各段头部:又称节头部,一个Windows NT的应用程序典型地拥有9个预定义段(节),它们是“.text”、“.bss”、“.rdata”、“.data”、“.rsrc”、“.edata”、“.idata”、“.pdata”和“.debug”。一些应用程序不需要所有的这些段,同样还有些应用程序为了自己特殊的需要而定义了更多的段。(每个段头部占40byte,我们这里也不需要所有的段,仅需3个段。) 通常我们是将PE整个结构分成四个部分,把MS-DOS MZ 头部和MS-DOS 实模式残余程序作为第一部分,可以称他为DOS部分,而PE文件标志、PE文件头、PE文件可选头三个部分作为第二部分,称之为PE头部分,因为这部分才是Windows下真正需要的部分,所以从PE文件标志开始才是真正的PE部分。各段头部是第三部分,称之为节表。它详细描述了PE文件中各个节的详细信息。最后就是各个节的实体部分了,称为节数据。 以上仅仅是对PE结构各部分的大体讲解。接下来再手写这个Hello World!程序过程中,我将详细介绍每个部分的含义。 首先准备一下工具,一个十六进制编辑器足以。我们这里使用VC++ 6.0所携带的十六进制编辑器,您也可以使用如WinHex等十六进制编辑工具。 打开VC,选择文件,新建菜单项,然后选择一个二进制文件,单击确定。一切就绪了,下面就开始手写可执行程序,如图2所示:

制造业PDM实例分析

制造业PDM实例分析 摘要:PDM项目在上海机床厂合作比较顺利,所涉及的技术路线除与ERP集成工作未结束外,各技术路线、应用子系统已经在上海机床厂磨研所、上依公司得到推广与应用,对同行业具有示范作用。江苏申菱电器制造有限公司制定了以下一套CAD/CAPP/PDM的一体化解决方案,不仅大大的提高了设计人员的工作效率,又有效的实现了数据的一致性和规范性。 关键词:PDM ;上海机床厂;江苏申菱电器制造公司

1 引言 企业如何管理大量电子化数据并从中迅速查找、访问到所需的信息,是企业要解决的一个重要问题。产品数据管理( ProductDataManagement, PDM)的出现为此提供了一种可靠的途径。 1.1 PDM的基本概念 PDM技术最早出现在20 世纪80 年代。其初衷是为了解决大量工程图样文档的管理问题,然后逐渐扩展到产品开发过程的三个领域: 1)设计图样和电子文档的管理; 2)自动化工程更改单的管理;3)材料清单(BOM)的管理。 PDM是以软件技术为基础,以产品为核心,实现对产品相关的数据、过程、资源一体化集成管理的技术。PDM明确定位为面向制造企业,以产品为管理的核心,以数据、过程和资源为管理信息的三大要素。 PDM进行信息管理的两条主线是静态的产品结构和动态的产品设计流程,所有的信息组织和资源管理都是围绕产品设计展开的,这也是PDM系统有别于其他的信息管理系统,如管理信息系统(M IS) 、物料管理系统(MRP) 、项目管理系统( ProjectManagement)的关键所在。PDM系统中数据、过程、资源和产品之间的关系如图。 1.2 PDM系统的体系结构 PDM系统是一个管理软件系统,面向产品全生命周期,以产品为核心,将产品设计开发过程中的产品数据、设计活动、人员组织以及相关的设计环境统一组织起来。 PDM系统的体系结构如图2所示。

pe文件格式

pe文件格式:PE文件格式(1) 疯狂代码 https://www.360docs.net/doc/a414102441.html,/ ?:http:/https://www.360docs.net/doc/a414102441.html,/Waigua/Article60255.html 介绍说明:希望本文能够对初级入门CRACKER有定帮助翻译存在疏漏或者不准确希望来信指出感谢您指导!感谢看雪为我们提供这个交流平台让我们技术和时俱进!! 前言: PE("portableexecutable")文件格式是针对MSwindowsNT,windows95and win32s可执行 2进制代码(DLLsandprograms)在windowsNT内,驱动也是这个格式也可以用于对象文件和库 这个格式是Microsoft设计并在1993经过TIS(toolerfacestandard)委员会 (Microsoft,Intel,Borland,Watcom,IBM等)标准化了它基于在UNIX和VMS上运行对象文件和可执行文件COFF"commonobjectfileformat"格式 win32SDK包括个头文件包括对PE格式定义我将提及成员名和定义你也可能发现DLL文件"imagehelp.dll"非常有用它是NT部分但文档很少它些在"DeveloperNetwork"被描述 总览: 在PE文件开始我们可以发现MSDOS执行部分("stub");这使得任何个PE文件是有效DOS执行文件在DOS-stub的后是32位魔数0x00004550(IMAGE_NT_SIGNATURE).然后是个COFF格式文件头指明在何种机器上运行多少个节在里面连接时间是否是可执行文件或者DLL等DLL和可执行文件区别:DLL不能够启动只可以被其他可执行文件使用个可执行文件不能够连接到另个可执行文件 接着我们看到个可选文件头optionalheader(虽然叫“可选”它实际上直存在) COFF把可选文件头用于库不用于目标文件这里告诉我们文件如何被调入:起始地址预留堆栈数数据段尺寸 个有趣部分是尾巴上数据目录datadirectories这些目录包含指向节内数据指针例如如果文件有输出目录可以在成员IMAGE_DIRECTORY_ENTRY_EXPORT内发现个指针指向那个目录(目录描述结构->THUNKDATA结构->BYNAME结构)他将指向个节 在头后面是节头实际上节内容就是真正需要运行个所需要东西所有头和目录成员就是帮你找到它每个节有几个标志:对齐包含数据类型(化数据等)是否可以共享等及数据自身多数节含有个或多个通过“可选头”内数据目录项引用目录没有目录类型内容是化数据或者可执行代码(节是物理意义上内容组织目录是逻辑意义上内容

PowerDesigner导出表结构到word

一、模版修改 在导出表时,powerdesigner默认为我们提供了很多的模版,在工具栏中选择 【Report--->Report Template】即可看到所有的默认模版。如图一: 点击close 图一模版列表 这里我们为了导出powerdesigner中创建的表,在工具栏中选择【Report--->Reports】(快捷键Ctrl+E), 然后创建一个New Report,如下图二所以,选择Standard Physical Report,这里选择的标准的模版,点击OK确定。 图二创建新的Report 从工具栏【Report--->Print Preview】或者点击图标同样可以预览导出到word的效果了。效果 如图三所示:

图三导出到word中预览效果 从【图三】中的工具栏里面HTM和RTF两种导出格式。如果导出到word选择RTF格式即可,但是我们从【图三】中看出红色标出的部分,1 是word的页眉,同样还有页脚信息,2 是一些列的属性清单。 图四设置页眉、页脚 在【图四】中,选择Header/Footer后,删掉Header里面的%MODULE% %MODELNAME%,删掉Footer里面的%APPNAME% %DATE% 页数%PAGE%,User_defined footer就会自动勾上,这样就去掉了页眉、页脚了 还有其他的比如表前面的自增序号,第一页中的创建者、版本、日期信息也不需要,我们可以进行配置去掉,如下【图五】【图六】

图四

图五 Properties配置 在图五中,在默认配置中(General)勾上No paragraph numbering即可取消表前面的自增序号,在Title Page中选择No Title Page就不会生成第一页中关于创建者、版本、日期等信息。 在【图三】中,预览看到的内容太多,就必须删除一些我们不需要的内容,经过删减之后,如下【图六】 所示 图六 在【图六】中右键单击【List of Table Columns - 表<%PARENT%>列说明】,从菜单中选择Edit Title...,就可以编辑成现在我们已看到的。然后,在右键菜单中选择Layout...,选择我们所需要显示的内容,Code 表示列名称,一般用英文单词或拼音字母表示,Name一般用中文描述,Data Type 表示数据类型,Comment表示字段备注或字段说明等。 到此基本上已经完成了powerdesigner模版的修改 二、导出表 然后点击[Report---->Generate RTF]导出到word中,最后我们看看导出到word的效果,如下图:

实验1《 PE文件剖析实验》

《PE文件剖析实验》报告 学院:计算机学院 日期: 2016年 4 月 25 日

目录 1. 实验目的 (2) 2. 实验过程 (2) 3. 实现结果 (2) 4. 遇到的问题及感想收获 (5)

1. 实验目的 熟悉各种PE编辑查看工具,详细了解PE文件格式,为后续计算机病毒学习打下基础,学会分析PE文件文件头、引入表、引出表以及资源表。 2. 实验过程 PE文件被称为可移植的执行体,是Portable Execute的简称,常见的EXE、DLL、OCX、SYS、COM等文件都是PE文件。 本次实验将综合运用Peview和LordPE,自由选择一款EXE文件或DLL文件,对其展开分析,找出文件的PE标志,入口地址、基址,节表个数及列出节表、输出表、输入表等信息。 3. 实现结果 ●自由选择一款EXE文件或DLL文件,对其展开分析,各项结果截图如下:●文件的PE标志

●入口地址 ●基址 ●节表个数及列出节表

●输出表 ●输入表

4. 遇到的问题及感想收获 本次实验时对PE文件格式进行分析,对PE文件有了一个大致的了解,如什么是PE文件的文件头,什么是区段,什么是数据目录。由于现阶段大都的病毒都是PE病毒,所以了解它们可以更好地知道PE病毒是如何感染PE文件的。不仅如此,对PE文件的修改加壳等操作也证实了PE文件并不是不可编辑的,也可以让我们更好地了解PE文件的内部结构。 这次实验主要使用了LoadPE和Peview软件对PE文件进行查看,提高了我们对PE文件结构的认识,帮助了我们吸收理论课上所学的知识,如基址与相对虚拟地址及其查看方法,PE文件首部,区段的含义等。这对我们以后的学习有很大的帮助,达到了预期的实验目的。 通过本次课程设计,我深刻认识到要掌握知识,不仅仅是要把书上的基本知识学好而且还要不断进行实践,将所学的跟实践操作结合起来才能更好地巩固所学,才能提高自己的实践能力。

pdm生成数据库表结构

pdm生成数据库设计表结构 本文以Oracle为例: 一、pdm设计 1、pdm表设计 PowerDesigner不仅能自如的绘制UML模型图,更重要的是可以进行物理数据模型的设计,通俗的讲就是数据库的设计。 物理数据模型(Physical Data Model)简称PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系;数据库的物理设计阶段必须在此基础上进行详细的后台设计,包括数据库的存储过程、操作、触发、视图和索引表等。 PowerDesigner能够用于创建多种不同类型的DBMS(数据库管理系统),每种类型的DBMS都包含一个标准定义的文件用于在PD和DBMS中确定彼此的关联而提供一套接口; 创建不同的DBMS可以生成不同的数据库脚本;日常开发中,一般用PDM图生成.sql脚本,然后通过查询分析器(或其它数据库可视化管理软件)生成数据库表以及视图。 接下来,概要的了解PDM的主要功能: 首先,它可以将数据库的物理设计结果从一种数据库移植到另一种数据库;其次,它可以通过反向工程将已经存在的数据库物理结构重新生成物理模型或概念模型;此外,还可以定制生成标准的模型报告;当然,它也可以转换为OOM;主要的,它能完成多种数据库的详细物理设计(涵盖常用的各种数据库的DBMS),并生成数据库对象的.sql脚本。 一般来说,创建PDM有如下三种方式: ?直接创建新的PDM; ?使用模板创建新的PDM; ?通过现有基础创建新的PDM。 打开PowerDesigner,新建,即创建新的PDM(DBMS使用为Mysql)。

设置一下适应个人的PDM显示参数。

PE文件格式分析及修改

PE文件格式分析及修改(图) PE 的意思是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行文件格式。它的一些特性继承自Unix的Coff(common object file format)文件格式。“Portable Executable”(可移植的执行体)意味着此文件格式是跨Win32平台的;即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。 PE文件在文件系统中,与存贮在磁盘上的其它文件一样,都是二进制数据,对于操作系统来讲,可以认为是特定信息的一个载体,如果要让计算机系统执行某程序,则程序文件的载体必须符合某种特定的格式。要分析特定信息载体的格式,要求分析人员有数据分析、编码分析的能力。在Win32系统中,PE 文件可以认为.exe、.dll、.sys 、.scr类型的文件,这些文件在磁盘上存贮的格式都是有一定规律的。 一、PE格式基础 下表列出了PE的总体结构 一个完整的PE文件,前五项是必定要有的,如果缺少或者数据出错,系统会拒绝执行该文件如下图

DOS MZ header部分是DOS时代遗留的产物,是PE文件的一个遗传基因,一个Win32程序如果在DOS 下也是可以执行,只是提示:“This program cannot be run in DOS mode.”然后就结束执行,提示执行者,这个程序要在Win32系统下执行。 DOS stub 部分是DOS插桩代码,是DOS下的16位程序代码,只是为了显示上面的提示数据。这段代码是编译器在程序编译过程中自动添加的。 PE header 是真正的Win32程序的格式头部,其中包括了PE格式的各种信息,指导系统如何装载和执行此程序代码。 Section table部分是PE代码和数据的结构数据,指示装载系统代码段在哪里,数据段在哪里等。对于不同的PE文件,设计者可能要求该文件包括不同的数据的Section。所以有一个Section Table 作为索引。Section多少可以根据实际情况而不同。但至少要有一个Section。如果一个程序连代码都没有,那么他也不能称为可执行代码。在Section Table后,Section数目的多少是不定的。 二、程序的装入 当我们在explorer.exe(资源管理器)中双击某文件,执行一个可执行程序,系统会根据文件扩展名启动一个程序装载器,称之为Loader。Loader会首先检查DOS MZ Header,如果存在,就继续寻找PE header,如果这两项都不存在,就认为是DOS 16位代码,如果只存在DOS MZ Header,而其中又指示

PE文件结构与ELF文件结构

一、PE文件结构 PE文件被称为可移植的执行体是Portable Execute的全称,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL),Portable 是指对于不同的Windows版本和不同的CPU类型上PE文件的格式是一样的,当然CPU不一样了,CPU指令的二进制编码是不一样的。只是文件中各种东西的布局是一样的。 在下面关于结构的定义中,WORD 表示变量大小为2个字节,DWORD表示变量大小是4个字节。 1.1 PE文件的结构 PE文件有着固定的结构,分为五个部分,如下: 1:DOS MZ Header(DOS文件头) 一个IMAGE_DOS_HEADER结构,大小为64字节。 2:DOS Stub(DOS加载模块) 没有固定大小。 3:PE Header(PE文件头)一个IMAGE_NT_HEADERS结构,大小为248字节。 4:Section Table(节表)一个IMAGE_SECTION_HEADER结构数组,数组大小依据节而定,如果PE文件有5个节,则数组大小为5。 5:Sections(节或段)没有固定大小,可以有多个节。 1.2 DOS文件头和DOS加载模块 PE文件的一二部分完全是为了程序能在DOS运行下时给出一个提示。 IMAGE_DOS_HEADER结构的定义如下: Typedef struct IMAGE_DOS_HEADER{ WORD e_magic; // 魔术数字 WORD e_cblp; // 文件最后页的字节数 WORD e_cp; // 文件页数 WORD e_crlc; // 重定义元素个数 WORD e_cparhdr; // 头部尺寸,以段落为单位 WORD e_minalloc; // 所需的最小附加段 WORD e_maxalloc; // 所需的最大附加段 WORD e_ss; // 初始的SS值(相对偏移量) WORD e_sp; // 初始的SP值 WORD e_csum; // 校验和 WORD e_ip; // 初始的IP值 WORD e_cs; // 初始的CS值(相对偏移量) WORD e_lfarlc; // 重分配表文件地址 WORD e_ovno; // 覆盖号 WORD e_res[4]; // 保留字 WORD e_oemid; // OEM标识符(相对e_oeminfo) WORD e_oeminfo; // OEM信息 WORD e_res2[10]; // 保留字 LONG e_lfanew; // 新exe头部的文件地址 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

PE文件格式实验

PE文件格式分析实验 使用工具LordPE/PEview、winhex 选择一个exe或者DLL文件 阶段一:(本次实验) 1.DOS头部查看、对应DOS头结构进行数据逐项分析 2.PE头部查看、对应PE头结构进行数据逐项分析 3.Exe文件和DLL文件均是PE格式,他们的区别在哪里? 4.Section表结构的查看(是否可以增加一个新的section表?对齐边界是多少?) 5.PE文件section查看、对应section 块表结构进行数据分析 6.VA、RVA、RA计算 7.问题:你查看的PE文件DOS、PE头部的空隙是多大? 8.问题:你查看的PE文件在那个section的空隙最大/最小? 9.问题:如果手工增加一个section,要修改哪些字段,请手工试验。(提高:你的新块表 增加是否引起原文件的对齐位置的改变?) 10.问题(提高):一个section的属性字节如何设置,请在上一个问题基础上实验。 本次实验要求对照以上要求,自行选择文件进行分析,撰写报告。 阶段二:(后一阶段的工作) 1.资源查看、修改 2.编写PE文件分析程序 3.编写PE病毒程序 附录1PE格式详细讲解(一) 前几天发了一个PE信息查看器的小工具,本来想用那个获取邀请码的,可是觉得几率不是太大,于是再献上一篇教程,既是为了自己能获得邀请码,也是帮助那些想学习PE格式的人,让知识来源于网络再回归网络。 N年没写文章了,不知道句子还能不能写通顺,最近正在看《软件加密技术内幕》,刚看完PE结构那部分内容,所以想起来写篇教程作为读书笔记,既可加强记忆又可帮助别人,何乐而不为呢。 好了,废话少说好戏正式上场,PE是英文Portable Executable(可移植的执行体)的缩写,从缩写可以看出它是跨平台的,即使在非intel的CPU上也能正常运行的。它是 Win32环境自身所带的执行体文件格式。其实不光是EXE文件是PE格式,其它的一些重要文件,例如动态链接库文件(DLL),驱动文件(SYS)等也是PE格式的,所以学好PE格式是非常重要的,以下我把这类文件统称为PE文件。学习PE文件结构不仅可以使我们知道可执行文件是怎样运行的,也可以使我们了解一下windows操作系统的一些工作机制,精通PE是成为计算机高手的必经之路。 其实说白了PE文件格式就是一种文件组织的方式,里面对一些重要信息的存放做了一些规定,比如文件要运行,我们就得先知道入口地址,可是我们从哪去得到入口地址呢,我们必须把保存有入口地址信息

PE文件结构详解(三)PE导出表

PE文件结构详解(三)PE导出表 上篇文章PE文件结构详解(二)可执行文件头的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,DataDirectory中的每一项都可以用这个函数获取,函数原型如下: PVOID NTAPI RtlImageDirectoryEntryToData(PVOID Base, BOOLEAN MappedAsImage, USHORT Directory, PULONG Size); Base:模块基地址。 MappedAsImage:是否映射为映象。 Directory:数据目录项的索引。 Size:对应数据目录项的大小,比如Directory为0,则表示导出表的大小。 返回值表示数据目录项的起始地址。 这次来看看第一项:导出表。 导出表是用来描述模块中的导出函数的结构,如果一个模块导出了函数,那么这个函数会被记录在导出表中,这样通过GetProcAddress函数就能动态获取到函数的地址。函数导出的方式有两种,一种是按名字导出,一种是按序号导出。这两种导出方式在导出表中的描述方式也不相同。模块的导出函数可以通过Dependency walker工具来查看:

上图中红框位置显示的就是模块的导出函数,有时候显示的导出函数名字中有一些符号,像 ??0CP2PDownloadUIInterface@@QAE@ABV0@@Z,这种是导出了C++的函数名,编译器将名字进行了修饰。 下面看一下导出表的定义吧: 结构还算比较简单,具体每一项的含义如下: Characteristics:现在没有用到,一般为0。 TimeDateStamp:导出表生成的时间戳,由连接器生成。 MajorVersion,MinorVersion:看名字是版本,实际貌似没有用,都是0。

PDM基础介绍

第一节PDM的概念 如果说60年代制造业企业战略目标追求的是生产规模的扩大,70年代是生产成本的降低,80年代是产品质量的提高,90年代的目标追求的则是市场响应速度,即缩短交货期。根据顾客的需求,迅速提供相应的产品成为企业竞争力最重要的构成因素。产品数据管理(PDM)一经问世,便迅速得到制造业企业的广泛关注,越来越多的企业在开始应用或者准备实施PDM。PDM在提高企业效率,提高企业竞争力方面的杰出表现,正获得越来越多企业的青睐。 单从字面上理解,PDM是Product Data Management(产品数据管理)的缩写,是指某一类软件的总称。CIMdata曾这样定义:“PDM是一种帮助工程师和其他人员管理产品数据和产品研发过程的工具。PDM系统确保跟踪设计、制造所需的大量数据和信息,并由此支持和维护产品”。如果说得再细致一点,我们可以这样理解PDM:从产品来看,PDM系统可帮助组织产品设计,完善产品结构修改,跟踪进展中的设计概念,及时方便地找出存档数据以及相关产品信息。从过程来看,PDM系统可协调组织整个产品生命周期内诸如设计审查、批准、变更、工作流优化以及产品发布等过程事件。简单的PDM(Product Data Management)可以定义为:以产品为中心,通过计算机网络和数据库技术,把企业生产过程中所有与产品相关的信息和过程集成起来进行管理的技术。 PDM将所有与产品相关的信息和所有与产品有关的过程集成在一起。与产品有关的信息包括任何属于产品的数据,如CAD/CAE/CAM的文件、物料清单(BOM)、产品配置、事务文件、产品订单、电子表格、生产成本、供应商状况等。与产品有关的过程包括任何有关的加工工序、加工指南和有关批准、使用权、安全、工作标准和方法、工作流程、机构关系等所有过程处理的程序。它包括了产品生命周期的各个方面,PDM 能使最新的数据为全部有关用户应用,包括工程设计人员,数控机床操作人员、财会人员及销售人员都能按要求方便地存取使用有关数据。 但是,这只是单纯从技术的角度给PDM下了-个的定义。真正意义上的PDM远不止如此。如果一定要探导PDM究竟是什么,我们可以这样来定义它:PDM是指企业内分布于各种系统和介质中,关于产品及产品数据信息和应用的集成与管理。产品数据管理集成了所有与产品相关的信息。企业的产品开发效益取决于有序和高效地设计、制造和发送产品。产品数据管理有助于达到这些目的。PDM是依托IT技术实现企业最优化管理的有效方法,是科学的管理框架与企业现实问题相结合的产物,是计算机技术与企业文化相结合的一种产品。产品数据管理是帮助企业、工程师和其他有关人员管理数据并支持产品开发过程的有力工具。产品数据管理系统保存和提供产品设计、制造所

相关文档
最新文档