PE文件导入表的读取

合集下载

深入理解Win32PE文件格式

深入理解Win32PE文件格式

深⼊理解Win32PE⽂件格式深⼊理解 Win32 PE ⽂件格式Matt Pietrek这篇⽂章假定你熟悉C++和Win32。

概述理解可移植可执⾏⽂件格式(PE)可以更好地了解操作系统。

如果你知道DLL和EXE中都有些什么东西,那么你就是⼀个知识渊博的程序员。

这⼀系列⽂章的第⼀部分,讨论最近这⼏年PE格式所发⽣的变化。

这次更新后,作者讨论了PE格式如何适应于⽤.NET开发的应⽤程序,包括PE节,RVA,数据⽬录,以及导⼊函数。

附录中包含了相关的映像头结构以及它们的描述。

很早以前,我为微软系统期刊(现在叫做MSDN)写了⼀篇⽂章。

那篇⽂章“Peering Inside the PE: A Tour of the Win32 Portable Executable File Format”⽐我所期望的更受⼈欢迎。

直到现在,我仍然能收到使⽤那篇⽂章的⼈(甚⾄Microsoft⾥的⼈)的来信,那篇⽂章在MSDN中仍然能够找到。

不幸的是,那篇⽂章中存在⼀些问题。

这⼏年Win32发⽣了很⼤变化,那篇⽂章已经过时了。

从这个⽉开始我将在⼀篇分成两部分的⽂章中改正那些问题。

你也许会奇怪为什么应该关⼼可执⾏⽂件的格式呢。

答案还和过去⼀样:⼀个操作系统可执⾏⽂件的格式和数据结构揭⽰了这个底层操作系统的许多东西。

通过理解EXE和DLL中到底有些什么,你会成为⼀个知识更加渊博的程序员。

当然,你从微软的规范中也能学到我所告诉你的许多东西。

然⽽,微软的规范为了涵盖全⾯⽽牺牲了可读性。

⽽我这篇⽂章的焦点主要就是讨论 PE ⽂件的格式,填补了不适合出现在正式的说明规范中的部分。

另外,在这篇⽂章中也有⼀些在任何微软官⽅⽂档中都没有的好东西。

Bridging the Gap先给出⼏个⾃从1994年我写了那篇⽂章之后 PE ⽂件格式都发⽣了哪些变化的例⼦。

由于16位的 Windows 已经成为历史,所以没有必要再和 Win16 可执⾏⽂件格式进⾏⽐较了。

PE文件结构及其加载机制

PE文件结构及其加载机制

PE⽂件结构及其加载机制⼀、PE⽂件结构PE即Portable Executable,是win32环境⾃⾝所带的执⾏体⽂件格式,其部分特性继承⾃Unix的COFF(Common Object File Format)⽂件格式。

PE表⽰该⽂件格式是跨win32平台的,即使Windows运⾏在⾮Intel的CPU上,任何Win32平台的PE装载器也能识别和使⽤该⽂件格式的⽂件。

所有Win32执⾏体(除了VxD和16位的DLL)都使⽤PE⽂件格式,如EXE⽂件、DLL⽂件等,包括NT的内核模式驱动程序(Kernel Mode Driver)。

PE⽂件⾄少包含两个段,即数据段和代码段。

Windows NT 的应⽤程序有9个预定义的段,分别为 .text 、.bss 、.rdata 、.data 、.pdata 和.debug 段,这些段并不是都是必须的,当然,也可以根据需要定义更多的段(⽐如⼀些加壳程序)。

在应⽤程序中最常出现的段有以下6种:.执⾏代码段,通常 .text (Microsoft)或 CODE(Borland)命名;.数据段,通常以 .data 、.rdata 或 .bss(Microsoft)、DATA(Borland)命名;.资源段,通常以 .rsrc命名;.导出表,通常以 .edata命名;.导⼊表,通常以 .idata命名;.调试信息段,通常以 .debug命名;PE⽂件的结构在磁盘和内存中是基本⼀样的,但在装⼊内存中时⼜不是完全复制。

Windows装载器在装载的时候仅仅建⽴好虚拟地址和PE ⽂件之间的映射关系,只有真正执⾏到某个内存页中的指令或访问某⼀页中的数据时,这个页才会被从磁盘提交到物理内存。

但因为装载可执⾏⽂件时,有些数据在装⼊前会被预先处理(如需要重定位的代码),装⼊以后,数据之间的相对位置也可能发⽣改变。

因此,⼀个节的偏移和⼤⼩在装⼊内存前后可能是完全不同的。

..PE的基本结构就是这样了。

Excel高级技巧使用外部数据源进行数据导入

Excel高级技巧使用外部数据源进行数据导入

Excel高级技巧使用外部数据源进行数据导入Excel是一款功能强大的电子表格软件,广泛应用于数据处理和数据分析领域。

除了通过手工输入数据,用户还可以通过使用外部数据源来导入数据,以提高工作效率和减少错误。

本文将介绍一些Excel的高级技巧,以帮助用户更好地使用外部数据源进行数据导入。

一、使用导入向导导入数据Excel的导入向导是一种简便的方法来将外部数据导入到Excel中。

用户可以通过以下步骤来进行操作:1. 打开Excel,并选择“数据”选项卡。

2. 点击“获取外部数据”按钮,在弹出的菜单中选择“从其他源导入”。

3. 在弹出的“导入数据”对话框中,选择适合的外部数据源,如数据库、文本文件等。

4. 根据具体的外部数据源类型,在相应的选项卡中设置数据导入的参数,如选择要导入的数据表、选择数据范围、设置筛选条件等。

5. 点击“确定”按钮,Excel将根据用户的设置自动导入外部数据。

通过导入向导,用户可以方便地从各种外部数据源中导入数据,同时还可以进行更多的高级设置,如数据筛选、数据转换等。

二、使用数据连接来导入数据除了导入向导,用户还可以使用Excel的数据连接功能来实现数据导入。

数据连接是一种在Excel中建立与外部数据源的连接,以实时获取数据的方法。

用户可以根据以下步骤来使用数据连接:1. 打开Excel,并选择“数据”选项卡。

2. 点击“从其他源”按钮,在弹出的菜单中选择“从数据连接中获取数据”。

3. 在弹出的“选择数据源”对话框中,选择适合的数据连接类型,如ODBC、OLE DB等。

4. 根据具体的数据连接类型,在相应的选项卡中设置数据连接的参数,如连接字符串、用户名、密码等。

5. 点击“确定”按钮,Excel将建立与外部数据源的连接并导入数据。

通过数据连接,用户可以实时获取外部数据源的最新数据,并在Excel中进行进一步的分析和处理。

同时,用户还可以通过刷新数据来更新导入的数据。

三、使用Power Query进行高级数据导入Power Query是Excel提供的一款强大的数据导入和转换工具,用户可以使用它来更加灵活地导入和处理外部数据。

PE文件加密处理.

PE文件加密处理.

6S概述PE 文件加密,俗称对 PE 文件加壳。

通过加壳,修改了原程序的执行文件的组织结构,同时保护和隐藏了一些软件开发商的重要信息。

在运行加过壳的程序时,首先执行的程序实际上是外壳的程序,而这个外壳程序负责把原始的程序在内存中解压缩,并把控制权交还给解开后的真正的程序,由于一切工作都是在内存中运行,使用者根本不知道也不需要知道其运行过程,最终的执行结果和加壳之前是一样的。

对于一个软件开发商来说, 要想了解 PE文件加密处理的技术,第一步必须要研究 PE文件格式,研究 PE 文件格式不但可以给我们洞悉 Windows 结构的良机, 而且对于如何去保护自己开发的软件,有非常好的帮助,下面我们来介绍一下 PE 文件的相关知识。

PE 文件介绍PE文件的意思就是 Portable Executable (可移植的执行体。

它是 Win32环境自身所带的执行体文件格式。

它的一些特性继承自 Unix 的 Coff(commonobject file format文件格式。

“portable executable” (可移植的执行体意味着此文件格式是跨win32平台的:即使Windows 运行在非 Intel的 CPU上,任何 win32平台的 PE装载器都能识别和使用该文件格式。

当然,移植到不同的 CPU 上 PE 执行体必然得有一些改变。

所有 win32执行体都使用 PE文件格式, 包括动态库 NT的内核模式驱动程序 (kernel mode drivers 。

EXE 与 DLL 的差别完全是语义上的。

它们使用格式,其实都是 PE 文件格式。

唯一的区别就是其中有一个字段标识出是EXE还是 DLL, 还有很多 DLL 的扩展比如 OCX,CPL 等都是 PE 文件格式。

对于最新.NET的可执行文件格式, 它也是与当前的 Win32的 PE 文件格式兼容的。

但是实际上,在运行时期, .NET还是按元数据和中间语言来组织数据的, 它只是使用了 PE 文件的框架而已。

PE文件头简析及输入表、输出表的分析

PE文件头简析及输入表、输出表的分析

PE文件头简析及输入表、输出表的分析2008年01月13日星期日 22:50PE文件头简析及输入表、输出表的分析前两天由于做个免杀,需要对输入表做些改变,所以又重新看了pe文件的结构尤其是输入表及输出表的一些细节方面,做个笔记,方便自己以后翻看,也给大家提个方便,呵呵!1、PE文件格式文件尾___________________________________________________________________Code View调试信息 |COFF 符号表 | 调试信息COFF 行号 |------------------------------------------------------------------.reloc |.edata | 块(Section) .data |.text |---------------------------------------------------------------------------------------------------IMAGE_SECTION_HEADER |IMAGE_SECTION_HEADER | 块表(Section Table)IMAGE_SECTION_HEADER |IMAGE_SECTION_HEADER | //对应.text块---------------------------------------------------------------------------------------------------------数据目录表 | //包含在可选映像头中,包含输出\入表信息 IMAGE_OPTIONAL_HEADER32 | 可选映像头IMAGE_FILE_HEADER | 文件映像头"PE",0,0 | pe文件标识(pe文件头包含三个部分)---------------------------------------------------------------------------------------------------------DOS stub |DOS 'MZ' HEADER | 该字段中的e_lfanew字段指向pe头 ---------------------------------------------------------------------------------------------------------文件头说明:01、输入表、输出表的位置:在pe头中可选映像头字段中数据目录表字段中,相对于pe文件标识处的偏移分别为:+80h、+78h;(其中pe文件标识的位置在DOS 'MZ' HEADER字段中的e_lfanew指出,该字段相对于文件开始的偏移为+3Ch,4个字节);02、在用例子说明时用c32asm打开,其中的偏移均为文件在磁盘上存储的物理偏移,而查看的值均为给出的各个地址的RVA,转化方法入下:查到的RVA值-VOffset(可由lordpe查看)+ROffset 得到的就是可以c32asm中的偏移2、上面对pe文件格式做了简要介绍,下面主要分析输入表和输出表:输入表篇:概念不做介绍,位置上面已经给出,呵呵输入表的结构:输入表是以一个IMAGE_IMPORT_DESCRIPTOR(IID)数组开始,一个程序要调用几个dll就会有几个IID项,即每个IID对应于一个dllIID结构:IMAGE_IMPORT_DESCRIPTOR structunion{DWORD Characteristics ; ;00hDWORD OriginalFirstThunk; // 注释1};TimeDateStamp DWORD ;04h // 时间标志,可以忽略;ForwarderChain DWORD ;08h // 正向链接索引,一般为0,当程序引用一个dll中的api,而这个api又引用其它dll中的api时用;Name DWORD ;0Ch //DLL名字的指针,以00结尾的ASCII字符的RVA地址;FirstThunk DWORD ;10h // 注释2IMAGE_IMPORT_DESCRIPTOR ends注释 1:该值为一个 IMAGE_THUNK_DATA数组的RVA,其中的每个指针都指向IMAGE_IMPORT_BY_NAME结构。

PE文件格式--------------导入表和IAT

PE文件格式--------------导入表和IAT

PE文件格式--------------导入表和IATpe文件导入表1)提取导入表:在数据目录的中,索引为1的位置;导入表起始RVA地址:IMAGE_NT_HEADER.OptionalHeader.DataDirectory[IMAGE _DIRECTORY_ENTRY_IMPORT].VirtualAddress导入表大小:IMAGE_NT_HEADER.OptionalHeader.DataDirectory[IMAGE _DIRECTORY_ENTRY_IMPORT].VirtualSize2)导入表结构:一个导入库对应下面的一个结构,pe文件引用了几个导入库文件就有几个这样的结构,最后以全0值结构结束。

当pe在磁盘中时,结构中的两个域OriginalFirstThunk和FirstThunk都指向IMAGE_THUNK_DATA,当pe加载准备运行时,前者仍然指向IMAGE_THUNK_DATA,后者则有装载器修改为指向导入函数实际地址。

IMAGE_IMPORT_DESCRIPTOR struc+00h OriginalFirstThunk:dd ;存放RV A,该RVA指向一个IMAGE_THUNK_DATA结构数组,该数组占4字节,以全0值结尾+04h DateTimeStamp: dd+08h ForwarderChain:dd+0ch Name1:dd ;存放RV A,该RV A指向dll名字,该名字已0结尾+10h FirstThunk:dd ;存放RV A,该RVA指向一个IMAGE_THUNK_DATA结构数组,该数组占4字节,以全0值结尾IMAGE_IMPORT_DESCRIPTOR endsIMAGE_THUNK_DATA strucunion{ForwarderString: ddFunction: ddOrdinal:dd ;序号AddressOfData: dd ;指向IMAGE_IMPORT_BY_NAME}IMAGE_THUNK_DATA endsIMAGE_IMPORT_BY_NAME strucHint:dw ;函数序号,但有的编译器不用此域Name1: db ;函数名称,以0结尾IMAGE_IMPORT_BY_NAME ends3)IAT导入地址表pe装载后,导入表的第0项的FirstThunk指向的RV A,即为导入地址表的起始位置。

PE文件格式(内容详细)

PE文件格式(内容详细)
EXE文件的格式
简介
在DOS环境下有四种基本的可执行文件格式
批处理文件,以.BAT结尾的文件
设备驱动文件,是以.SYS结尾的文件,如CONFIG.SYS
COM文件,是以.COM结尾的纯代码文件
• 没有文件头部分,缺省情况下总是从0x100H处开始执行, 没有重定位项,所有代码和数据必须控制在64K以内
在Win32位平台可执行文件格式:可移植的可执行文件 (Portable Executable File)格式,即PE格式。MZ文件头 之后是一个以“PE”开始的文件头
安装在硬盘上的程序没运行-静态 加载到内存-动态
EXE文件的格式
MZ文件格式-Mark Zbikowski
.EXE文件由三部分构成:文件头、重定位表和二进制代码 允许代码、数据、堆栈分别处于不同的段,每一段都可以是64KB.
EXE文件的格式
PE文件格式
一般来说,病毒往往先于HOST程序获得控制权。运行 Win32病毒的一般流程示意如下:
①用户点击或系统自动运行HOST程序; ②装载HOST程序到内存;
③通过PE文件中的AddressOfEntryPoint+ImageBase,
定位第一条语句的位置(程序入口); ④从第一条语句开始执行(这时执行的其实是病毒代码); ⑤病毒主体代码执行完毕,将控制权交给HOST程序原来的
病毒通过“MZ”、“PE”这两个标志,初步判断当前程序 是否是目标文件——PE文件。如果要精确校验指定文件是 否为一有效PE文件,则可以检验PE文件格式里的各个数 据结构,或者仅校验一些关键数据结构。大多数情况下, 没有必要校验文件里的每一个数据结构,只要一些关键数 据结构有效,就可以认为是有效的PE文件
PE的意思就是Portable Executable(可移植、可执 行),它是Win32可执行文件的标准格式

【优质文档】如何在u启动PE系统下使用excel办公软件 (800字)-word范文模板 (2页)

【优质文档】如何在u启动PE系统下使用excel办公软件 (800字)-word范文模板 (2页)

【优质文档】如何在u启动PE系统下使用excel办公软件 (800字)-word范文模板本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==如何在u启动PE系统下使用excel办公软件 (800字)如何在u启动PE系统下使用excel办公软件u启动u盘启动excel表格处理办公软件,它着微软excel办公软件最基本的框架,由于它的功能十分简单,在使用操作上也没有复杂的应用,那么接下来我们就教大家u启动u盘启动excel表格处理的使用方法。

1、把制作好的u启动u盘启动盘插在电脑usb接口上,然后重启电脑,在开机画面时用一键u盘启动快捷键的方法进入到u启动主菜单界面,选择【03】运行u启动win03pe增强版选项,按回车键确认选择,如下图所示:2、进入到win03pe系统桌面后一次点击“开始——程序——办公阅读——excel表格处理”,如下图所示:3、随即会弹出excel表格处理工作界面,我们可以使用pe系统中自带的五笔或者拼音输入法来进行中文输入,具体操作可以点击右下角的CH图标,此时会显示三个选项,如下图所示:4、做好的excel表格需要保存时,点击excel工具窗口左上角“文件——另存为”,如下图所示:5、在弹出的另存为窗口中选择保存地址以及设置文件名,然后点击“保存”按钮,如下图所示:6、在上面的地址下就可以找到保存的xls文件,如下图所示:以上就是u启动u盘启动excel表格处理办公软件的使用方法,由于工具的功能较少,在操作上没有复杂的应用,就像填表格一样,所以这里我们没有明细说明。

希望今天所介绍的excel表格处理办公软件能够帮助到大家。

∙荐办公室各式表格大全∙荐 201X公司办公常用表格样本 [1000字]∙荐白领日常统计办公使用Excel表格的35招(非常精彩)∙荐办公用相关表格∙荐 EXCEL制表格办公软件自学教程自学不求人 (800字)。

PE文件结构详解(五)延迟导入表

PE文件结构详解(五)延迟导入表

PE文件结构详解(五)延迟导入表PE文件结构详解(四)PE导入表讲了一般的PE导入表,这次我们来看一下另外一种导入表:延迟导入(Delay Import)。

看名字就知道,这种导入机制导入其他DLL的时机比较“迟”,为什么要迟呢?因为有些导入函数可能使用的频率比较低,或者在某些特定的场合才会用到,而有些函数可能要在程序运行一段时间后才会用到,这些函数可以等到他实际使用的时候再去加载对应的DLL,而没必要再程序一装载就初始化好。

这个机制听起来很诱人,因为他可以加快启动速度,我们应该如何利用这项机制呢?VC有一个选项,可以让我们很方便的使用到这项特性,如下图所示:在这一项后面填写需要延迟导入的DLL名称,连接器就会自动帮我们将这些DLL的导入变为延迟导入。

现在我们知道如何使用延迟导入了,那这个看上去很厉害的机制是如何实现的呢?接下来我们来探索一番。

在IMAGE_DATA_DIRECTORY中,有一项为IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT,这一项便延迟导入表,IMAGE_DATA_DIRECTORY.VirtualAddress就指向延迟导入表的起始地址。

既然是表,肯定又是一个数组,每一项都是一个ImgDelayDescr结构体,和导入表一样,每一项都代表一个导入的DLL,来看看定义:grAttrs:用来区分版本,1是新版本,0是旧版本,旧版本中后续的rvaxxxxxx 域使用的都是指针,而新版本中都用RVA,我们只讨论新版本。

rvaDLLName:一个RVA,指向导入DLL的名字。

rvaHmod:一个RVA,指向导入DLL的模块基地址,这个基地址在DLL真正被导入前是NULL,导入后才是实际的基地址。

rvaIAT:一个RVA,表示导入函数表,实际上指向IAT,在DLL加载前,IAT 里存放的是一小段代码的地址,加载后才是真正的导入函数地址。

rvaINT:一个RVA,指向导入函数的名字表。

【PE文件】导入表

【PE文件】导入表

【PE⽂件】导⼊表1、数据⽬录表第⼆个成员指向导⼊表 IMAGE_DATA_DIRECTORY[1] -> IMAGE_DIRECTORY_ENTRY_IMPORT。

2、导⼊表以⼀个IMAGE_IMPORT_DESCRIPTOR(IID)数组开始。

并且⼀个DLL⽂件对应⼀个IID结构,最后以⼀个全0的IID结构作为结尾。

有多少个IID就有多少个DLL被导⼊。

1struct _IMAGE_IMPORT_DESCRIPTOR2 {30x00 union4 {50x00 DWORD Characteristics;60x00 PIMAGE_THUNK_DATA OriginalFirstThunk; //INT导⼊名称表Rva7 } u;80x04 DWORD TimeDateStamp;90x08 DWORD ForwarderChain;100x0c DWORD Name; //DLL名称字符串指针Rva110x10 PIMAGE_THUNK_DATA FirstThunk; //IAT导⼊地址表Rva12 };3、INT和IAT均指向⼀个IMAGE_THUNK_DATA 结构体数组,数组以⼀个全0元素结尾。

每个IMAGE_THUNK_DATA 结构体都指向⼀个IMAGE_IMPORT_BY_NAME结构体。

有多少个IMAGE_THUNK_DATA 结构体该DLL就有多少个函数被导⼊。

当IMAGE_THUNK_DATA 结构体最⾼位为1时,表⽰函数以序号导⼊,此时低31位被看成函数序号使⽤。

当IMAGE_THUNK_DATA 结构体最⾼位为0时,表⽰函数以名称导⼊,此时AddressOfData是⼀个指向IMAGE_IMPORT_BY_NAME结构体的Rva。

PE⽂件加载前:INT和IAT均指向不同的IMAGE_THUNK_DATA 结构体数组,但它们都保存着导⼊函数的序号和名称信息。

PE⽂件加载后:IAT指向导⼊函数的实际调动地址。

peclass的书写格式

peclass的书写格式

peclass的书写格式PEClass是一种书写格式,它是一种用于编写计算机程序的标准格式。

PEClass的主要内容包括文件头、节表、导入表、导出表、资源表、重定位表等。

下面将对PEClass的主要内容进行详细的展开。

一、文件头PEClass的文件头是PE文件的第一个部分,它包含了PE文件的基本信息,如文件的魔数、机器类型、节表的数量、时间戳等。

文件头的长度为20个字节,其中包括4个字节的魔数、2个字节的机器类型、2个字节的节表数量、4个字节的时间戳等。

二、节表PEClass的节表是PE文件的第二个部分,它包含了PE文件中所有的节的信息,如节的名称、大小、属性等。

节表的长度为40个字节,其中包括8个字节的节的名称、4个字节的节的大小、4个字节的节的虚拟地址、4个字节的节的物理地址、4个字节的节的属性等。

三、导入表PEClass的导入表是PE文件的第三个部分,它包含了PE文件中所有的导入函数的信息,如函数的名称、地址等。

导入表的长度为20个字节,其中包括4个字节的导入函数的名称、4个字节的导入函数的地址等。

四、导出表PEClass的导出表是PE文件的第四个部分,它包含了PE文件中所有的导出函数的信息,如函数的名称、地址等。

导出表的长度为20个字节,其中包括4个字节的导出函数的名称、4个字节的导出函数的地址等。

五、资源表PEClass的资源表是PE文件的第五个部分,它包含了PE文件中所有的资源的信息,如资源的类型、名称、大小等。

资源表的长度为40个字节,其中包括4个字节的资源的类型、4个字节的资源的名称、4个字节的资源的大小等。

六、重定位表PEClass的重定位表是PE文件的第六个部分,它包含了PE文件中所有需要重定位的地址的信息,如需要重定位的地址、重定位的类型等。

重定位表的长度为10个字节,其中包括4个字节的需要重定位的地址、2个字节的重定位的类型等。

以上就是PEClass的主要内容,它是一种标准的书写格式,用于编写计算机程序。

PE系统导入注册表

PE系统导入注册表

pe下修改或导入系统注册表项[44阅]gadflym发表于13/04/16 09:03本文是本人从网上学来并加以补充(加粗)的——当硬盘上的windows系统出现问题时,如有病毒木马或其它什么原因导致系统不能启动,特别是安全模式也不能进入,那么可以利用第三方工具修改原系统注册表达到修复系统的目的(如修复安全模式),例如可以利用WIN PE 系统。

没有PE的朋友,可以去下载一个,刻录成可启动光盘或制作成U盘PE。

点这里下载用WIN PE光盘启动PE 后,加载的是PE系统的注册表,因此需要进入PE系统的注册表编辑器重新加载硬盘系统的注册表。

注册表文件是保存在c:\windows\system32\config 文件夹下(假设系统装于c盘):SAM、SECURITY、SOFTWARE、SYSTEM。

用pe的注册表编辑器或在PE中,开始-运行,输入regedit,点击HKEY_LOCAL_MACHINE,从菜单点击“文件”-“加载配置单元”,在弹出对话框的“文件类型”中选择“所有文件”找到硬盘系统中注册表保存位置,如C:\windows\system32\config\中, 选择注册表文件。

例如SYSTEM,然后在弹出的框中输入一个如123(随意的),在HKEY_LOCAL_MACHINE 下选择刚才新建的123,进行修改,当完成后,选择123,然后从菜单点击“文件”-“卸载配置单元”,就完成了对硬盘系统的注册表修改。

这就是说123才是系统注册表而不是pe的注册表的你如果不进行“加载配置单元”步骤那只是在pe的注册表里折腾啦。

pe实际上是我们修理系统的一个工具而已另外:上面只是说“修改”没有导入系统注册表项说明(如果你可能是删除了注册表某一项“A”)要想导入在硬盘上你以前备份的注册表项“a”(对应“A”)的话还得这样用记事本打开a把路径改到123 (加载配置单元)如果对路径操作不熟练可以先在加载的123单元里导出一项与A相似的项(如b),然后用记事本打开b。

PE文件导入表的代码注入

PE文件导入表的代码注入

PE⽂件导⼊表的代码注⼊PE⽂件导⼊表的代码注⼊试想⼀下,如果通过修改导⼊表,能把PE格式⽂件中的函数⼊⼝点,重定向到⾃⼰的程序中来,是不是很酷!这样,在⾃⼰在程序中,可以过滤掉对某些函数的调⽤,或者,设置⾃⼰的处理程序,Professional Portable Executable (PE) Protector也就是这样做的。

另外,某些rootkit也使⽤了此⽅法把恶意代码嵌⼊到正常程序中。

在逆向⼯程的概念⾥,均称为API重定向技术,让我们⼀起进⼊这个神奇的世界吧。

1、导⼊表简介PE⽂件由MS-DOS头、NT头、节头、节映像组成,如图1所⽰。

MS-DOS头在从DOS⾄现今Windows的所有微软可执⾏⽂件中都存在;NT头的概念抽象⾃Unix系统的可执⾏与链接⽂件格式(ELF)。

实际上,PE格式可以说是Linux可执⾏与链接格式(ELF)的兄弟,PE格式头由PE签名、通⽤对象⽂件格式(COFF)头、PE最优化头、节头组成。

图1:PE⽂件格式结构NT头的定义可在Visual C++的<winnt.h>头⽂件中找到,也可使⽤DbgHelp.dll中的ImageNtHeader()函数得到相关信息,另外,还可以使⽤DOS头来获取NT头,因为DOS头的最后位置e_lfanew,代表了NT头的偏移量。

typedef struct _IMAGE_NT_HEADERS {DWORD Signature;IMAGE_FILE_HEADER FileHeader;IMAGE_OPTIONAL_HEADER OptionalHeader;} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;在PE最优化头中,有⼀些数据⽬录指明了当前进程虚拟内存中,主信息表的相对位置及⼤⼩,这些表可保存资源、导⼊、导出、重定位、调试、线程本地存储及COM运⾏时的有关信息。

没有导⼊表的PE可执⾏⽂件是不可能存在的,这张表包含了DLL名及函数名,这些都是程序通过虚拟地址调⽤它们时所必不可少的;控制台可执⾏⽂件中没有资源表,然⽽,对图形⽤户界⾯的Windows可执⾏⽂件来说,资源表却是⾄关重要的部分;当某个动态链接库导出了它的函数,此时就需要导出表了,在OLE Active-X容器中也同样;⽽.NET虚拟机缺少了COM+运⾏时头则不能被执⾏。

python 读取excel表格数据方法

python 读取excel表格数据方法

文章标题:Python读取Excel表格数据方法详解一、背景介绍Excel表格是我们日常生活和工作中经常使用的一种数据存储和处理工具。

在使用Python进行数据分析或处理时,我们经常会遇到需要读取Excel表格数据的情况。

本文将介绍如何使用Python读取Excel表格数据的方法,以及一些常用的技巧和注意事项。

二、使用openpyxl库读取Excel表格数据openpyxl是一个Python库,可以用来读取和写入Excel文件。

下面是使用openpyxl库读取Excel表格数据的方法:1. 安装openpyxl库我们需要安装openpyxl库。

在命令行中输入以下命令来安装openpyxl:```pip install openpyxl```2. 打开Excel文件使用openpyxl库可以使用以下代码打开一个Excel文件:```pythonfrom openpyxl import load_workbookwb = load_workbook('example.xlsx')```这样就可以打开名为example.xlsx的Excel文件。

3. 选择工作表接下来,我们需要选择要操作的工作表。

可以使用以下代码选择一个工作表:```pythonws = wb['Sheet1']```这样就可以选择名为Sheet1的工作表。

4. 读取数据一旦选择了工作表,就可以使用openpyxl库来读取其中的数据。

以下代码展示了如何读取单元格的数据:```pythoncell_value = ws['A1'].value```这样就可以获取A1单元格的数据。

5. 遍历数据除了读取单元格的数据外,我们还可以遍历整个工作表来获取所有数据。

以下是遍历整个工作表的示例代码:```pythonfor row in ws.iter_rows(values_only=True):for cell in row:print(cell)```这样就可以遍历并打印出整个工作表中的数据。

PE文件详解五:PE详解之输入表(导入表)详解1

PE文件详解五:PE详解之输入表(导入表)详解1

PE⽂件详解五:PE详解之输⼊表(导⼊表)详解1
⾸先,我们知道PE ⽂件中的数据被载⼊内存后根据不同页⾯属性被划分成很多区块(节),并有区块表(节表)的数据来描述这些区块。

这⾥我们需要注意的问题是:⼀个区块中的数据仅仅只是由于属性相同⽽放在⼀起,并不⼀定是同⼀种⽤途的内容。

例如输⼊表、输出表等就有可能和只读常量⼀起被放在同⼀个区块中,因为他们的属性都是可读不可写的。

其次,由于不同⽤途的数据有可能被放⼊同⼀个区块中,因此仅仅依靠区块表是⽆法确定和定位的。

那要怎么办?对了,PE ⽂件头中IMAGE_OPTIONAL_DEADER32 结构的数据⽬录表来指出他们的位置,我们可以由数据⽬录表来定位的数据包括输⼊表、输出表、资源、重定位表和TLS等15 种数据。

输⼊函数
在代码分析或编程中经常遇到“输⼊函数(Import Functions,也称导⼊函数)”的概念。

这⾥我们就来解释下,输⼊函数就是被程序调⽤但其执⾏代码⼜不在程序中的函数,这些函数的代码位于相关的 DLL ⽂件中,在调⽤者程序中只保留相关的函数信息(如函数名、DLL ⽂件名等)就可以。

对于磁盘上的PE ⽂件来说,它⽆法得知这些输⼊函数在内存中的地址,只有当PE ⽂件被装⼊内存后,Windows 加载器才将相关DLL 装⼊,并将调⽤输⼊函数的指令和函数实际所处的地址联系起来。

这就是“动态链接”的概念。

动态链接是通过PE ⽂件中定义的“输⼊表”来完成的,输⼊表中保存的正是函数名和其驻留的DLL 名等。

PE教程6:ImportTable(引入表)

PE教程6:ImportTable(引入表)

PE教程6:ImportTable(引入表)PE教程6: Import Table(引入表)本课我们将学习引入表。

先警告一下,对于不熟悉引入表的读者来说,这是一堂又长又难的课,所以需要多读几遍,最好再打开调试器来好好分析相关结构。

各位,努力啊!下载范例。

理论:首先,您得了解什么是引入函数。

一个引入函数是被某模块调用的但又不在调用者模块中的函数,因而命名为"import(引入)"。

引入函数实际位于一个或者更多的DLL里。

调用者模块里只保留一些函数信息,包括函数名及其驻留的DLL名。

现在,我们怎样才能找到PE 文件中保存的信息呢? 转到 data directory寻求答案吧。

再回顾一把,下面就是 PE header:IMAGE_NT_HEADERS STRUCTSignature dd ?FileHeader IMAGE_FILE_HEADER <>OptionalHeaderIMAGE_OPTIONAL_HEADER <>IMAGE_NT_HEADERS ENDSoptional header 最后一个成员就是 data directory(数据目录): IMAGE_OPTIONAL_HEADER32 STRUCT....LoaderFlags dd ?NumberOfRvaAndSizes dd ?DataDirectory IMAGE_DATA_DIRECTORY 16 dup(<>)IMAGE_OPTIONAL_HEADER32 ENDSdata directory 是一个IMAGE_DATA_DIRECTORY结构数组,共有16个成员。

如果您还记得节表可以看作是PE文件各节的根目录的话,也可以认为data directory 是存储在这些节里的逻辑元素的根目录。

明确点,data directory 包含了PE文件中各重要数据结构的位置和尺寸信息。

怎么在PE系统中使用Excel办公软件

怎么在PE系统中使用Excel办公软件

Excel是我们在日常办公时常用的办公软件,主要可以进行各种数据处理、统计分析以及辅助决策操作,广泛地应用到管理、统计财经、金融等诸多领域。

这个办公软件在很多U盘装机软件的U盘PE系统里也是存在的,下面就让大家看看怎么在U盘PE系统中使用Excel软件。

1、将制作好的U盘装机大师U盘启动盘连接电脑,然后重启电脑,当电脑屏幕上出现开机信息时,按下U盘启动快捷键,然后在启动界面上选择U盘启动电脑,然后就进入U盘装机大师主界面,然后通过方向键选择“02.启动Windows_2003PE(老机器)”然后按下回车键。

2、进入PE系统后点击左下角“开始”按钮,然后选择“办公阅读”,再选择“Excel表格处理”。

3、然后就可以在Excel表格处理界面中输入所要的内容。

4、在操作完表格后,就可以点击左上角的“文件”,然后选择“另存为”对Excel 表格进行保存。

5、在窗口中选择要保存的地址和设置文件的名称,设置完成后点击“保存”即可。

6、接下来就可以在刚才选择保存的地方找到所保存的文件。

这就是在U盘装机大师U盘启动盘PE系统中制作Excel表格的方法。

如果你的电脑上还未安装Excel办公软件或者电脑上的Excel软件出现故障了,都可以试试使用U盘装机大师U盘启动盘来制作Excel表格!
在U盘装机大师中也带有Word与PPT等办公软件,具体操作方法与Excel一样。

一个可以随身携带的办公软件,是不是心动了呢?。

利用Windows加载PE文件和外壳的导入表

利用Windows加载PE文件和外壳的导入表

利用Windows加载PE文件和外壳的导入表张钟【期刊名称】《电脑知识与技术》【年(卷),期】2015(011)003【摘要】Based on the import table structure of the PE file and the principle of system loading the import table,it is defined in the shell. the import table of the shell and that of the PE file are combined in one by using Win32 assembly program. Which is initial-ized while windows loads PE file, so as to realize normal calling API functions in the PE file and shell.%根据PE文件导入表的结构及系统加载导入表的原理,在外壳中自定义了导入表,将外壳中的导入表与PE文件的导入表合并,并用Win32汇编编程实现.利用Windows加载PE文件时,将PE文件和外壳的导入表初始化,从而实现了在PE文件和外壳中正常调用API函数.【总页数】4页(P117-120)【作者】张钟【作者单位】重庆理工大学,重庆400054【正文语种】中文【中图分类】TP309【相关文献】1.利用IContextMenu接口实现Windows外壳的上下文菜单操作 [J], 胡阳2.利用OLE扩展Windows 95/NT外壳 [J], 方劲松3.利用外壳扩展把Windows95的应用程序与用户连接 [J], 毛忠萍4.基于导入表迁移的PE文件信息隐藏技术研究 [J], 田祖伟;李勇帆;刘洋5.利用基因枪法将玉米矮花叶病毒外壳蛋白基因导入玉米优良自交系 [J], 刘小红;张红伟;谭振波;荣廷昭;李晚忱因版权原因,仅展示原文概要,查看原文内容请购买。

pe dump 实现原理 -回复

pe dump 实现原理 -回复

pe dump 实现原理-回复"PE Dump 实现原理" 具体指的是在Windows 操作系统中,如何获取和分析可执行文件(.exe)或动态链接库文件(.dll)的内部结构、段表、符号表等信息。

本文将一步一步回答这个主题,帮助读者了解PE Dump 工具的实现原理。

第一步:了解PE 文件格式PE(Portable Executable)是Windows 操作系统上常见的可执行文件格式。

在深入研究PE Dump 的实现原理前,我们需要理解PE 文件的基本结构和相关的数据结构。

PE 文件由DOS 头、PE 头、节区表和数据目录等部分组成。

DOS 头是为了兼容DOS 操作系统的历史遗留问题,PE 头记录了PE 文件的入口点、大小等重要信息,节区表则存储了各个节区的相关信息,数据目录则记录了一些重要的数据结构,如导入表、导出表等。

第二步:理解PE Dump 工具的目标PE Dump 工具的目标是将PE 文件的各个部分提取出来,包括DOS 头、PE 头、节区表以及节区的原始数据等。

其主要用途是进行静态分析、代码分析和反编译等。

因此,PE Dump 工具需要具备读取PE 文件、解析PE 文件结构的能力。

第三步:读取PE 文件PE Dump 工具需要能够读取PE 文件的原始二进制数据。

在Windows 系统中,可以通过Win32 API 函数CreateFile 和ReadFile 来实现对文件的读取。

通过这些函数,可以获得PE 文件的文件句柄和文件数据。

第四步:解析PE 文件结构在获得PE 文件的原始数据后,PE Dump 工具需要对这些数据进行解析,以获取PE 文件的各个部分的结构和内容。

通过解析PE 头,可以获得PE 文件的入口点、大小等基本信息。

同样,解析节区表可以获取每个节区的起始地址、大小、属性等详细信息。

解析数据目录可以获得一些重要的数据结构的位置和大小。

第五步:提取PE 文件的部分通过解析PE 文件结构,PE Dump 工具能够准确地定位到PE 文件的各个部分的位置和大小。

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

一般情况下导入表在。

Idata节中,.idata以一个类型为IMAGE_IMPORT_DESCRIPTOR结构体的数组开始,而且在数据目录数组(IAMGE_DATA_DIRECTORY)中的第2项也是表示的导入表RV A和Size(没有采取任何对齐前的大小),其中的RV A就是导入表结构体在PE文件的RV A,
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
union {
DWORD Characteristics; // 0 for terminating null import descriptor
DWORD OriginalFirstThunk; //RV A to original unbound IAT (PIMAGE_THUNK_DA TA)
};
DWORD TimeDateStamp; // 0 if not bound,
// -1 if bound, and real date\time stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)
DWORD ForwarderChain; // -1 if no forwarders
DWORD Name;
DWORD FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
} IMAGE_IMPORT_DESCRIPTOR;
typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;
在这个结构体中只有Name(dll)和Characteristics对我们是有用的,Name中保存的是一个指向Dll的名称串的RV A,Characteristics中保存的是指向IMAGE_THUNK_DA TA串首的一个RV A,而IMAGE_THUNK_DA TA结构体中保存的是指向IMAGE_IMPORT_BY_NAME (函数)结构体串的RV A ,这个串中保存了从该Dll中调用的函数的名称,该串以一个空的IMAGE_IMPORT_BY_NAME结尾
导入表结构体也是有一个空的IMAGE_IMPORT_DESCRIPTO结构体表示结束,没有域来说明导入Dll的个数或者导入函数的个数
IMAGE_THUNK_DATA又被定义为_IMAGE_THUNK_DATA32
typedef struct _IMAGE_THUNK_DA TA32 {
union {
PBYTE ForwarderString;
PDWORD Function;
DWORD Ordinal;
PIMAGE_IMPORT_BY_NAME AddressOfData;
} u1;
} IMAGE_THUNK_DATA32;
typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DA TA32;
typedef struct _IMAGE_IMPORT_BY_NAME {
WORD Hint;
BYTE Name[1];
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;。

相关文档
最新文档