学习
实践
活动
工具
TVP
写文章

PE知识复习之PE定位

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

66030

【DB笔试面试640】在OracleCOL_USAGE$作用是什么

♣ 题目部分 在OracleCOL_USAGE$作用是什么? ♣ 答案部分 从Oracle 9i开始引入了SYS.COL_USAGE$用来跟踪列使用情况,该功能通过隐含参数“_COLUMN_TRACKING_LEVEL”来控制。 缺省情况下,该功能是生效,并且CBO负责将SQL语句中WHERE条件查询谓词信息保存在该,数据库在执行SHUTDOWN NORMAL或者SHUTDOWN IMMEDIATE会自动将该数据清空 下边SQL可以查询出上列使用情况: CREATE OR REPLACE VIEW VW_COLUMN_USAGE_LHR AS SELECT OO.NAME OWNER, “EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'LHR',TABNAME => 'T1');”来将内存统计数据刷新到SYS.COL_USAGE$

41940
  • 广告
    关闭

    2022腾讯全球数字生态大会

    11月30-12月1日,邀您一起“数实创新,产业共进”!

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

    【DB笔试面试779】在Oracle,SYS.SMON_SCN_TIME作用是什么

    ♣ 题目部分 在Oracle,SYS.SMON_SCN_TIME作用是什么? ♣ 答案部分 SYS.SMON_SCN_TIME用于记录过去时间段SCN与具体时间戳(timestamp)之间映射关系,因为是采样记录这种映射关系,所以SMON_SCN_TIME可以较为粗糙地定位某个 实际SMON_SCN_TIME是一张cluster table簇。SMON_SCN_TIME数据是由SMON后台进程来维护。 在Oracle 11g,该创建SQL在$ORACLE_HOME/rdbms/admin/dtxnspc.bsq文件,可以直接查看: create cluster smon_scn_to_time_aux smon_scn_time_scn_idx on smon_scn_time(scn) tablespace SYSAUX / 从Oracle 10g开始,SMON会定时清理SMON_SCN_TIME记录

    27320

    PE文件和COFF文件格式分析——节信息

    在《PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头3》,我们看到一些区块信息都有偏移指向。 可以看到Stud_PE对第5节名字解析是错,那正确是什么? NumberOfRelocations是节定位个数。可执行文件和不可以定位文件该字段为0。         NumberOfLinenumbers是节中行号项个数。 IMAGE_SCN_LNK_NRELOC_OVFL 标志表明节定位个数超出了节头中为每个节保留16 位所能表示范围。 如果设置了此标志并且节头中NumberOfRelocations 域值是0xffff,那么实际定位项个数被保存在第一个定位VirtualAddress 域(32 位)

    46320

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

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

    1.5K10

    EXE文件结构及读取方法

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

    7620

    DLL注入新姿势:反射式DLL注入研究

    再根据PE文件将各个节复制到相应位置. 5) 处理DLL引入 被注入DLL可能还依赖于其他DLL,因此我们还需要装载这些被依赖DLL,并修改本DLL引入,使这些被引入函数能正常运行 6) 对DLL进行定位 被注入DLL只有其ReflectiveLoader代码是故意写成地址无关、不需要定位,其他部分代码则需要经过重定位才能正确运行。 PE可选印象头DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC]就指向了定位定位数据结构如下: ? Typeoffset高4位代定位类型,一般为3,低12位则表示定位地址。这个地址和IMAGE_BASE_RELOCATIONVirtualAddress加起来则指向一个需要定位指令。 了解,以及动手实践这个注入方式会让您对PE文件格式PE文件加载理解更加深刻。

    1.3K30

    PE数据目录表解析

    )buffer; //PE PIMAGE_NT_HEADERS pNt = (PIMAGE_NT_HEADERS)(pDos->e_lfanew + buffer); //定位数据目录导出 定位 基址定位 当向程序虚拟内存加载PE文件时,文件会被加载到ImageBase所指向地址。 WORD Tyoe : 4; }TYPE, * PTYPE; WindowsPE装载器进行PE定位处理操作原理流程如下: 在应用程序当中查找硬编码位置 读取之后减去ImageBase,也就是用 VA-基址得到RVA 加上实际加载地址得到真正VA 其中最关键就是找到硬编码位置,而要找到硬编码位置,首先要找到基址定位,该位于.reloc区段,找到基址定位正确打开方式是通过数据目录 )buffer; //PE PIMAGE_NT_HEADERS pNt = (PIMAGE_NT_HEADERS)(pDos->e_lfanew + buffer); //定位数据吧、目录延迟导入

    40120

    链接加载原理及ELF文件格式

    因为符号值改变时候,也需要对所有引用符号地方代码进行修改,所以需要还有一张来记录符号引用关系,这就是定位: 从上图可见,定位表项用来记录链接和加载过程需要重新定位位置,在各个段位置发生改变而引起符号地址改变时 GOT(Global Offset Table): 前面的符号定位已经满足编译和链接过程定位需求。 链接定位是通过重定位直接修改代码来完成,但是代码在运行过程再去修改代码会带来很多问题和风险。 所以加载过程定位,使用了一种改良定位手段:即通过两张间接访问来屏蔽掉定位带来对代码修改,访问外部数据使用GOT,访问外部程序使用PLT。 Windows环境下可执行文件格式发展历史是:dos com/exe -> pe-coff。

    10820

    免杀基础之一文学废PE文件格式

    /在磁盘大小 DWORD PointerToRawData;//区段在文件偏移 DWORD PointerToRelocations;//区段在定位偏移 IMAGE_THUNK_DATA结构: 那么要解析导入,首先要定位到导入: 通过PE扩展头里数据目录字段 + 导入宏定义,即可定位到导入, PIMAGE_DATA_DIRECTORY pImportDir 定位 基址定位 当向程序虚拟内存加载PE文件时,文件会被加载到ImageBase所指向地址。 WORD Tyoe : 4; }TYPE, * PTYPE; WindowsPE装载器进行PE定位处理操作原理流程如下: 在应用程序当中查找硬编码位置 读取之后减去ImageBase ,也就是用VA-基址得到RVA 加上实际加载地址得到真正VA 其中最关键就是找到硬编码位置,而要找到硬编码位置,首先要找到基址定位,该位于.reloc区段,找到基址定位正确打开方式是通过数据目录

    22120

    《程序员自我修养》第三章学习笔记

    3,可执行文件,动态链接库,静态链接库都按照可执行文件格式存储(Windows下是 PE-COFF格式,Linux下是ELF格式)。 、运行平台、ABI版本、 ELF定位类型、硬件平台、硬件平台版本、入口地址、程序头入口和长度、段位置和长度及段数量等。 4,ELF文件类型:分为 可定位、可执行、共享目标文件、核心转储文件 3.4.2 段(除了文件头以外最重要结构) 1,描述了ELF各个段信息(比如每个段段名、段长度、在文件偏移,读写权限及其他属性 3.4.3 定位 1,一个叫”rel.text”段,类型是”SHT_REL”,就是定位 2,链接器在处理目标文件时,需要对目标文件某些部位进行定位(即代码段和数据段那些对绝对地址引用位置 3,这些定位信息都记录在ELF文件定位表里。对于每个需要定位代码段或数据段,都会有一个相应定位

    44760

    重学计算机组成原理(七)- 程序无法同时在Linux和Windows下运行?

    ,也叫作数据段(Data Section),用来保存程序里面设置好初始化数据信息; 然后就是.rel.text Secion,叫作定位(Relocation Table)。 定位表里,保留是当前文件里面,哪些跳转地址其实是我们不知道。 然后再根据定位,把所有不确定要跳转地址代码,根据符号表里面存储地址,进行一次修正。最后,把所有的目标文件对应段进行一次合并,变成了最终可执行代码。 我们今天讲的是Linux下ELF文件格式,而Windows可执行文件格式是一种叫作PE(Portable Executable Format)文件格式。 对于ELF格式文件,为了能够实现这样一个静态链接机制,里面不只是简单罗列了程序所需要执行指令,还会包括链接所需要定位和符号

    45560

    pe 详解(包括参数说明哦)

    1.2、DOS Stub: DOS Stub(存根)实际上是个有效 MS-DOS .EXE 或者.COM 程序(如果文件格式不对会报错),在不支持 PE文件格式操作系统,它将通过简单调用中断21h 因而跳过了DOS Stub 直接定位到真正文件头PE Header。 1.4、Section Table: PE Header 接下来数组结构 Section Table (节)。 (Exception Information) .rdata 只读初始化数据 .reloc 定位信息 .rsrc 资源 .text .exe或.dll文件可执行代码 .tls 因为每个模块都有可能被重载到任何虚拟地址空间,如果让PE装载器修正每个定位项,这肯定是个梦魇。 相反,如果所有定位项都使用RVA,那么PE装载器就不必操心那些东西了: 它只要将整个模块定位到新起始VA。这就象相对路径和绝对路径概念: RVA类似相对路径,VA就象绝对路径。

    78720

    如何从内存加载DLL

    ; //校验和 WORD e_ip; //初始IP值 WORD e_cs; //初始(相对)CS值 字e_lfarlc; //定位文件地址 WORD e_ovno; 绑定进口 12 导入地址 13 延迟加载导入 14 COM运行时描述符 对于导入DLL,我们仅需要描述导入和基本定位条目。 6.必须根据部分特性来保护不同部分存储区域。有些部分标记为可丢弃,因此此时可以安全释放。这些部分通常包含仅在导入期间需要临时数据,例如基本定位信息。 7.现在,库已完全加载。 文件格式通过在基本定位存储有关所有这些引用信息来帮助实现此目的,这些信息可在OptionalHeaderDataDirectory目录条目5找到。 高4位定义定位类型,低12位定义相对于VirtualAddress偏移量。 似乎在DLL中使用唯一类型是 IMAGERELBASED_ABSOLUTE 用于填充。

    90120

    ring0下使用内核重载绕过杀软hook

    那么既然有PE拉伸,就要涉及到定位,我们要想定位到函数,这里肯定就需要进行定位修复 在PE拉伸完成和修复定位过后,我们获得了一份新内核,但是这里SSDT因为是直接拿过来,地址肯定会发生变化 PE拉伸&定位修复 这里我把PE拉伸跟定位修复放到一个函数里面,首先我们要进行打开文件操作,那么这里就要实现几个关于文件函数操作 主要用到ZwCreateFile、ZwReadFile、 定位大小,通过RVA->FOA在FileBuffer定位后得到真正定位结构如下 typedef struct _IMAGE_BASE_RELOCATION { DWORD VirtualAddress 还是RVA,SizeOfBlock则是定位核心结构,存储值以字节为单位,表示定位大小,那么如果我们要知道定位结构数量该怎么办呢? 这里规定在最后一个结构VirtualAddress和SizeOfBlock值都为0,这里就可以进行判断来获取定位有多少个结构 我们来看一看直观定位图,假设我们这里定位结构数量为3,那么在最后

    10820

    ring0下使用内核重载绕过杀软hook

    那么既然有PE拉伸,就要涉及到定位,我们要想定位到函数,这里肯定就需要进行定位修复 在PE拉伸完成和修复定位过后,我们获得了一份新内核,但是这里SSDT因为是直接拿过来,地址肯定会发生变化 PE拉伸&定位修复 这里我把PE拉伸跟定位修复放到一个函数里面,首先我们要进行打开文件操作,那么这里就要实现几个关于文件函数操作 主要用到ZwCreateFile、ZwReadFile、 定位大小,通过RVA->FOA在FileBuffer定位后得到真正定位结构如下 typedef struct _IMAGE_BASE_RELOCATION { DWORD VirtualAddress 还是RVA,SizeOfBlock则是定位核心结构,存储值以字节为单位,表示定位大小,那么如果我们要知道定位结构数量该怎么办呢? 这里规定在最后一个结构VirtualAddress和SizeOfBlock值都为0,这里就可以进行判断来获取定位有多少个结构 我们来看一看直观定位图,假设我们这里定位结构数量为3,那么在最后

    17530

    逆向工程基础:从PE文件到进程地址空间

    当然,除了指令和数据,还涉及操作系统相关内容,比如资源等。 什么是PE文件? 全称Portable Execute —— 可移植执行体,是 windows平台组织程序代码一种文件格式。 常⻅exe、dll、sys、 ocx、com都属于PE文件。 学习PE文件,是深入windows机制 要一步,也是逆向工程基础课程。 ? ? ,Windows NT在设计可执行文件格式时保留兼容了之前格式。 ,如常量字符串,C++虚) .idata : 输入数据(一般用来存放IAT和导入) .bss : 通常是指用来存放程序未初始化全局变量、静态变量 .textbss : 节同时包含代码和未初始化全局变量 、静态变量 .rsrc : 资源节 .reloc : 定位 进程 进程是操作系统结构基础; 是一个正在执行程序; 计算机中正在运行程序实例; 可以分配给处理器并由处理器执行一个实体; 由单一顺序执行显示

    42710

    十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)

    PE文件格式总体结构 接着让我们来欣赏下PE文件格式总体结构图,包括:MZ头部、DOS stub、PE文件头、可选文件头、节、节等。 本文第二部分我们将对PE文件格式进行详细解析。 010Editor使用模板定位PE文件各节点信息。 三.分析PE文件引出 实验内容如下: 熟悉各类PE文件格式查看和编辑工具,如PEView、Stud_PE等 结合hello-2.5.exe熟悉PE文件头部、引入结构,熟悉函数导入基本原理 找到系统 下面是导入信息: 第一条指令在内存地址计算方法如下图所示: (2) 使用stud_PE查看文件属性 该软件用于显示头部、DOs、区段、函数等信息,包括导入、导出等。 内容包括: PE文件基础 PE文件格式解析 – 010Editor解析PE文件 – Ollydbg动态调试程序 – 仅弹出第二个窗口 熟悉并分析PE文件引出 – PEView和Stud_PE查看文件

    1.8K51

    PE文件和COFF文件格式分析——RVA和RA相互计算

    可以见得计算我们位置过程涉及到“相对”这个概念。         文件数据位置描述也是使用”相对“来定位,正在运行程序数据定位也是通过”相对“来定位。 还有《PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头1》中介绍IMAGE_FILE_HEADER::PointerToSymbolTable,它指向数据是符号,该信息也是程序运行时不关心 如果不可以,则查看它想加载位置(IMAGE_OPTIONAL_HEADER32(64)::ImageBase)是否被占用了,如果没有占用,或者即使被占用了但是其允许定位,就继续读取”节信息“。 关于节信息,我在《PE文件和COFF文件格式分析——节信息》中有说明。 在《PE文件和COFF文件格式分析——节信息》一文我介绍VirtualSize属性时这么说“VirtualSize属性是节加载进入内存后,节在内存大小。

    51130

    内存Exe加载,PEloder简单原理

    而对于我们来说.其实就是 针对PE文件 NT头 节数据 定位 导入 等进行操作. 步骤如下: 总共分为几大步骤 文件数据转内存数据 1.拷贝文件NT头数据大小. 用于存储文件PE数据 数据操作阶段 1.拷贝节数据到内存.按照内存对齐. 其实就是拷贝节记录数据大小 到内存起始位置 2.修复定位,有的情况下. 根据定位结构. , LPVOID PEMmAddress) { /* 文件以及内存中都已经有了数据了.所以这里直接以内存为起始点 来获取定位.并且修复自身内存定位 当然也可以使用文件来便利文件定位来修复内存定位PE文件NT头拷贝到内存 3.根据文件数据 将数据按照内存对齐拷贝到 申请内存 4.判断有没有定位: 有: 遍历定位.修复定位 无: 不进行修复 5.修复导入 , LPVOID PEMmAddress) { /* 文件以及内存中都已经有了数据了.所以这里直接以内存为起始点 来获取定位.并且修复自身内存定位 当然也可以使用文件来便利文件定位来修复内存定位

    1.3K40

    扫码关注腾讯云开发者

    领取腾讯云代金券