首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PE知识复习之PE定位

PE知识复习之PE定位 一丶何为重定位       定位意思就是修正偏移意思. 如一个地址位 0x401234 ,Imagebase = 0x400000 ....二丶定位定位以及结构   定位.定位在扩展头中数据目录. 数据目录第6项就是定位 RVA偏移.以及定位大小....我们知道.一个PE文件需要很多地方进行定位.比如这个记录 大小为16....所以修复位置是 0x116b0位置. 0x116b0 + 当前PE文件ImageBase就是要进行定位位置 当前PEImagebase为0x400000 定位地方为 0x4116b0位置...全局变量是在内存data节存储着.所以观看前几篇博客.能知道如何定位全局变量在文件位置. 三丶总结定位     定位有两个成员.

1.6K30

PE格式第七讲,定位

PE格式第七讲,定位 一丶何为重定位(注意,不是定位表格) 首先,我们先看一段代码,比如调用Printf函数,使用OD查看....首先说下,一般定位表格都是DLL,因为满足不了模块首地址需求,所以会遇到函数定位问题....四丶数组解析查看  那么按照我们想法看上面定位数组第一个,按照小尾方式读取则是 0x3005  那么高位是3那么就是要修改大小是4个字节,005则是代表偏移....五丶实战演练查看  因为DLL定位项太多,所以这里使用一个EXE(没有导出函数EXE),然后注入这个DLL,那么这个EXE就有定位表格了....首先我们先看DLL, 3005位置要定位 按照公式我们得出,要修改位置是 现在模块地址 + 当前记录分页 + 数组后三位偏移(上面说过,如果按照分页存储,那么3位就可以表达一个分页需要记录

99670
您找到你想要的搜索结果了吗?
是的
没有找到

2.10 PE结构:重建定位结构

Windows系统使用PE(Portable Executable)文件格式来存储可执行程序,其中包括定位信息。当程序被加载到内存时,系统会解析这些定位信息,并将程序各种内存地址进行定位。...定位一般出现在DLL,因为DLL都是动态加载,所以地址不固定,DLL入口点在整个执行过程至少要执行2次,一次是在开始时执行初始化工作,一次则是在结束时做最后收尾工作,定位则是解决DLL地址问题...WinHex工具定位到0x00001800即可看到定位信息,如下图中1000代定位RVA地址,绿色0104代则是定位长度,后面则是每两个字节代表一个定位块,0A是定位地址,...图片定位也是分页排列,每一页大小都是1000字节,通过使用FixRelocPage命令即可查询到当前程序定位块信息,并以第一个为例,查询一下起始地址RVA为1000页上,有哪些定位结构,...遍历定位定位块,以0结尾 while (Reloc->SizeOfBlock !

24831

2.7 PE结构:定位详细解析

定位(Relocation Table)是Windows PE可执行文件一部分,主要记录了与地址相关信息,它在程序加载和运行时被用来修改程序代码地址值,因为程序在不同内存地址中加载时,...定位每个记录都称为一项(entry),每个entry包含了需要修正地址值详细信息,通常是以可变长度数据形式存储在一个或多个叫做定位块(relocation block)数据结构。...在这3个数据,模块建议装入地址已经在PE文件头中定义了,而模块实际装入地址时Windows装载器在装载文件时确定,事实上PE文件定位中保存仅仅只是,一大堆需要修正代码地址。...定位IMAGE_BASE_RELOCATION解析 定位会被单独存放在.reloc命名定位位置和大小可以从数据目录第6个IMAGE_DATA_DIRECTORY结构获取到,该组织方式时以...PE文件定位(Relocation Table)起始地址,定位是一个可变长度数据结构,其中包含了一组以4个字节为单位记录,每个记录表示一个需要修正地址及其操作类型。

21210

2.10 PE结构:重建定位结构

Windows系统使用PE(Portable Executable)文件格式来存储可执行程序,其中包括定位信息。...当程序被加载到内存时,系统会解析这些定位信息,并将程序各种内存地址进行定位。...定位一般出现在DLL,因为DLL都是动态加载,所以地址不固定,DLL入口点在整个执行过程至少要执行2次,一次是在开始时执行初始化工作,一次则是在结束时做最后收尾工作,定位则是解决DLL地址问题...定位也是分页排列,每一页大小都是1000字节,通过使用FixRelocPage命令即可查询到当前程序定位块信息,并以第一个为例,查询一下起始地址RVA为1000页上,有哪些定位结构,如下图所示...遍历定位定位块,以0结尾 while (Reloc->SizeOfBlock !

24410

2.7 PE结构:定位详细解析

定位(Relocation Table)是Windows PE可执行文件一部分,主要记录了与地址相关信息,它在程序加载和运行时被用来修改程序代码地址值,因为程序在不同内存地址中加载时,...定位每个记录都称为一项(entry),每个entry包含了需要修正地址值详细信息,通常是以可变长度数据形式存储在一个或多个叫做定位块(relocation block)数据结构。...在这3个数据,模块建议装入地址已经在PE文件头中定义了,而模块实际装入地址时Windows装载器在装载文件时确定,事实上PE文件定位中保存仅仅只是,一大堆需要修正代码地址。...定位IMAGE_BASE_RELOCATION解析定位会被单独存放在.reloc命名定位位置和大小可以从数据目录第6个IMAGE_DATA_DIRECTORY结构获取到,该组织方式时以...Type :4; // 大小为4Bit定位信息类型值 }TypeOffset; // 这个结构体是A1Pass总结PIMAGE_BASE_RELOCATION指针指向PE文件定位

59030

PE文件和COFF文件格式分析——导出应用——通过导出隐性加载DLL

通过导出隐性加载DLL?导出?加载DLL?还隐性?是的。如果觉得不可思议,可以先看《PE文件和COFF文件格式分析——导出关于“导出地址详细介绍。...Exe调用一个DLL方法,有两种方法:         1 在Exe导入中加入DLL函数信息,例如我们程序调用GetProcAddress这类API就是因为我们程序默认导入包含了Kernel32...2 在逻辑通过LoadLibrary动态载入一个DLL,然后通过GetProcAddress获取函数地址。这样我们在Exe导入是看不到这个DLL信息。        ...新修改DLL文件,我们用View Denpendencies查看下 ?         可以看到修改后DLL并没有使DllBase.dll出现在导入,我们还是好好隐藏着。        ...这样我们就是实现了通过导出隐性加载DLL方法。是不是很有意思?         最后我们看下3个DLL在内存存在情况 1 ? 2 ? 3 ?

70930

PE文件和COFF文件格式分析——导出应用——一种插件模型

可能在很多人想想,只有DLL才有导出,而Exe不应该有导出。而在《PE文件和COFF文件格式分析——导出,我却避开了这个话题。...我就是想在本文中讨论下载Exe存在导出场景。...(转载请指明出于breaksoftwarecsdn博客)         首先要说是Exe是可以有导出,我用我写PE分析工具扫描了我电脑上所有文件。发现有导出Exe文件还不少。...那我们收敛一下方案,我们做个空壳DLL(使用《PE文件和COFF文件格式分析——导出》介绍类似于Kernel32.dllAddVectoredExceptionHandler导出方法,这个方法应用我会在之后写篇文章介绍...),该DLL就导出B.dllB1()、C.dllC1()和D.dllD1()入口地址。

60450

PE文件和COFF文件格式分析——导出应用——一种摘掉Inline钩子(Unhook)方法

在日常应用,某些程序往往会被第三方程序下钩子(hook)。...ebp寄存器。...虽然这样结构有种种好处,但是这个肯定不是必须。所以函数起始地址指令是不确定。这儿之所以说这么一大堆,是想说明,Hook库对不同API进行Hook方式是不同。...我将从被Hook函数PE文件,读取原来代码,然后和现在内存代码做对比。如果不同,则被hook,并将不同地方改成PE文件函数代码。...其中涉及PE知识可以参考《PE文件和COFF文件格式分析》。其中最需要关注是《PE文件和COFF文件格式分析——导出》,该文讲述了如何从PE文件获取代码地址方法。

86820

2.1 PE结构:文件映射进内存

PE结构是Windows系统下最常用可执行文件格式,理解PE文件格式不仅可以理解操作系统加载流程,还可以更好理解操作系统对进程和内存相关管理知识,在任何一款操作系统,可执行程序在被装入内存之前都是以文件形式存放在磁盘...,在早期DOS操作系统,是以COM文件格式存储,该文件格式限制了只能使用代码段,堆栈寻址也被限制在了64KB,由于PC芯片快速发展这种文件格式极大制约了软件发展。...为了应对这种局面,微软工程师们就发明了新文件格式(EXE文件),该文件格式在代码段前面增加了文件头结构,文件头中包括各种说明数据,如程序入口地址,堆栈位置,定位等,显然可执行文件格式是操作系统工作方式真实写照...PE结构包含了各类结构体,DOS头,PE标识,文件头,可选头,目录结构,节,导入,导出定位,资源等等,要想掌握PE结构首相要对这些有一个整体上认识,Windows NT 系统可执行文件使用微软设计文件格式...,也就是至今还在使用PE格式,PE文件基本结构如下图所示:图片在PE文件,代码,已初始化数据,资源和定位信息等数据被按照属性分类放到不同Section(节区/或简称为节),而每个节区属性和位置等信息用一个

21810

2.1 PE结构:文件映射进内存

PE结构是Windows系统下最常用可执行文件格式,理解PE文件格式不仅可以理解操作系统加载流程,还可以更好理解操作系统对进程和内存相关管理知识,在任何一款操作系统,可执行程序在被装入内存之前都是以文件形式存放在磁盘...,在早期DOS操作系统,是以COM文件格式存储,该文件格式限制了只能使用代码段,堆栈寻址也被限制在了64KB,由于PC芯片快速发展这种文件格式极大制约了软件发展。...为了应对这种局面,微软工程师们就发明了新文件格式(EXE文件),该文件格式在代码段前面增加了文件头结构,文件头中包括各种说明数据,如程序入口地址,堆栈位置,定位等,显然可执行文件格式是操作系统工作方式真实写照...PE结构包含了各类结构体,DOS头,PE标识,文件头,可选头,目录结构,节,导入,导出定位,资源等等,要想掌握PE结构首相要对这些有一个整体上认识,Windows NT 系统可执行文件使用微软设计文件格式...,也就是至今还在使用PE格式,PE文件基本结构如下图所示: 在PE文件,代码,已初始化数据,资源和定位信息等数据被按照属性分类放到不同Section(节区/或简称为节),而每个节区属性和位置等信息用一个

22220

2.1 PE结构:文件映射进内存

PE结构是Windows系统下最常用可执行文件格式,理解PE文件格式不仅可以理解操作系统加载流程,还可以更好理解操作系统对进程和内存相关管理知识,在任何一款操作系统,可执行程序在被装入内存之前都是以文件形式存放在磁盘...,在早期DOS操作系统,是以COM文件格式存储,该文件格式限制了只能使用代码段,堆栈寻址也被限制在了64KB,由于PC芯片快速发展这种文件格式极大制约了软件发展。...为了应对这种局面,微软工程师们就发明了新文件格式(EXE文件),该文件格式在代码段前面增加了文件头结构,文件头中包括各种说明数据,如程序入口地址,堆栈位置,定位等,显然可执行文件格式是操作系统工作方式真实写照...PE结构包含了各类结构体,DOS头,PE标识,文件头,可选头,目录结构,节,导入,导出定位,资源等等,要想掌握PE结构首相要对这些有一个整体上认识,Windows NT 系统可执行文件使用微软设计文件格式...,也就是至今还在使用PE格式,PE文件基本结构如下图所示: 在PE文件,代码,已初始化数据,资源和定位信息等数据被按照属性分类放到不同Section(节区/或简称为节),而每个节区属性和位置等信息用一个

36340

十七.Windows PE病毒概念、分类及感染方式详解

PE文件格式总体结构 接着让我们来欣赏下PE文件格式总体结构图,包括:MZ头部、DOS stub、PE文件头、可选文件头、节、节等。 上一篇文章我们对PE文件格式进行详细解析。...3.关键技术 (1) 定位 定位是把程序逻辑地址空间变换成内存实际物理地址空间过程。由于DLL文件会加载到不同位置,为防止AV地址定位出错,该技术常见于DLL文件。...定位本质:修正实际地址与预期地址差异 但根据HOST特征逐一硬编码这种方式不太可取,其繁琐且未必准确,所以采用另一种方法,病毒代码运行过程自我定位。 下图展示了病毒代码自我定位过程。...; 第四步,当需要定位时,比如使用varl变量,定位通过ebp+offset来消除差异,此时eax存放varl在内存真实地址。...对于操作系统本身,它启动方式很多,系统内部包括(后续文章可能会复现不同方式): 注册键值 系统定位置 配置文件 特定路径特定文件,如Explorer.exe(显示桌面) 下图展示了Autoruns

4.4K11

EXE文件结构及读取方法

一、EXE文件概念 EXE File英文全名executable file ,译作可运行文件,可移植可运行 (PE) 文件格式文件,它能够载入到内存,并由操作系统载入程序运行。...exe文件比較复杂,属于一种多段结构,是DOS最成功和复杂设计之中一个。每一个exe文件包括一个文件头和一个可定位程序映像。...文件头包括MS-DOS用于载入程序信息,比如程序大小和寄存器初始值。文件头还指向一个定位,该包括指向程序映像定位段地址指针链表。...MS-DOS通过把该映像直接从文件拷贝到内存载入exe程序,然后调整定位说明定位段地址。定位是一个定位指针数组,每一个指向程序映像定位段地址。...ios_base类封装了C++标准流输入输出不依赖于读写数据类型基本信息,如格式化信息、异常状态、事件回调函数等。 关于PE文件头,能够參考PE文件说明。

1.3K20

Win32汇编:汇编版PE结构解析器

PE格式是Windows系统下最常用可执行文件格式,有些应用必须建立在了解PE文件格式基础之上,如可执行文件加密与解密,文件型病毒查杀等,熟练掌握PE文件结构,有助于软件分析,本文章文字描述提取自...,这样极大限制了软件发展.为了应对这种局面,出现了另一种可执行文件,那就是我们所熟悉exe文件,exe文件在代码前面加了一个文件头,文件头中包括各种说明数据,如程序入口地址,堆栈位置,定位等...,显然可执行文件格式是操作系统工作方式写照,不同系统之间文件格式千差万别,从而导致不同系统可执行文件无法跨平台运行.PE文件基本结构如下所示,在PE文件,代码,已初始化数据,资源和定位信息等数据被按照属性分类放到不同...,可执行,可读写等属性.在PE文件中将同样属性数据分类放在一起是为了统一描述这些数据装入内存后页面属性,由于数据是按照属性在节中放置,不同用途但是属性相同数据可能被放在同一个节,PE文件头被放置在节和节前面...,例如预处理,定位等,装入以后页面位置,偏移等都会随之发生改变,Windows装载器在装载DOS部分,PE文件头部分和节部分时不进行任何处理,而装载节时候将根据节属性做不同处理..386.model

31220
领券