RVA和FOA转换---三

news2024/11/16 20:39:19

文章目录

    • 修改初始值
    • RVA和FOA转换
      • RVA
      • FOA
      • RVA和FOA的关系

本次内容包含如何修改程序中的初始值,和如何转换内存和文件的地址。

修改初始值

问题
我们写了一个程序,可以输出一个结果,那么我们可以通过修改PE文件来改变这个输出结果吗?
对于有初始值的全局变量来说,是可以的。

我们在给全局变量赋初始值时,会在PE文件中记录其数据
没有初始值,无法找到

这里我们有如下一个程序:

#include<stdio.h>
int a = 0x12121212;
int main() {
	printf("a=(十六进制)%X\n", a);
	return 0;
}

执行结果如下:
在这里插入图片描述

以十六进制输出 a 的值。我们以二进制打开PE文件.这里我们将a先设置的特殊一点,便于寻找。
在这里插入图片描述
这里我们将结果12121212修改为00000000,然后另存为新文件。

在这里插入图片描述
然后再运行两个文件,发现值已经被修改:
在这里插入图片描述

RVA和FOA转换

RVA

RVA是PE文件在内存中的相对虚拟地址

比如全局变量a,在文件中是一个地址,然后映射到内存中,会有一个新地址,此时这个地址相对与基地址(也就是imageBase)的偏移量就是RVA。

FOA

FOA在PE文件在文件中的相对地址

全局变量a在文件中的地址,相对于文件起始地址的偏移量,上图中为B400h。

RVA和FOA的关系

由于两个都是相对偏移量,同时PE文件中又会记载文件对齐和内存对齐的地址信息。所有我们可以得到:

  1. 在文件头中时:RVA=FOA
  2. 在节数据中时:RVA - 内存中所在节的起始数据 = FOA - 文件中所在节的起始地址

在这里插入图片描述
在上面那个程序中,扩展PE头中,内存基址为02 00 00,内存对齐06 00 00,文件对齐0.
在这里插入图片描述
在标准PE头中记录节表数量
然后再去PE中查找节表的长度,所在节表是第几个。最后根据内存所在地址相对当前节偏移量 = 文件所在地址相对当前节偏移量就可以得到内存中的地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1526501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

平时到点就走的00后,居然一跃上岸字节,真的难以接受....

又到了一年一度的求职旺季金&#xff01;三&#xff01;银&#xff01;四&#xff01;在找工作的时候都必须要经历面试这个环节。在这里我想分享一下自己上岸字节的面试经验&#xff0c;过程还挺曲折的&#xff0c;但是还好成功上岸了。大家可以参考一下&#xff01; 0821测评 …

SpringBoot异常:类文件具有错误的版本 61.0, 应为 52.0的解决办法

问题&#xff1a; java: 无法访问org.mybatis.spring.annotation.MapperScan 错误的类文件: /D:/Program Files/apache-maven-3.6.0/repository/org/mybatis/mybatis-spring/3.0.3/mybatis-spring-3.0.3.jar!/org/mybatis/spring/annotation/MapperScan.class 类文件具有错误的…

PSCA系统控制集成之复位层次结构

PPU 提供以下对复位控制的支持。 • 复位信号Reset signals&#xff1a;PPU 提供冷复位和热复位输出信号。PPU 还为实现部分保留的电源域管理提供了额外的热复位输出信号。 • 电源模式控制Power mode control&#xff1a;PPU 硬件适当地管理每个支持的电源模式转换的复位信号…

Python库Gym:打开机器学习与强化学习的大门

Python库Gym&#xff1a;打开机器学习与强化学习的大门 强化学习作为人工智能领域的重要分支&#xff0c;已经在各种领域展现出了巨大的潜力。为了帮助开发者更好地理解和应用强化学习算法&#xff0c;Python库Gym应运而生。Gym提供了一个开放且易于使用的环境&#xff0c;供开…

深入解析:在 Node.js 中删除文件的正确姿势

引言 在 Node.js 中处理文件尤其是移除文件&#xff0c;对于维护高效应用程序至关重要。储存和秩序当道的今天&#xff0c;删除不必要或冗余的文件能力显得尤为关键。本文深入探讨你会想要使用这个强大功能的时刻和原因&#xff0c;并通过各种案例展示了这个概念&#xff0c;同…

一、从0开始卷出一个新项目之CC-Link IE TSN 概述

目录 1.1 范围 1.2 目的 1.3 CC-Link介绍 1.3.1 CPLA协会 1.3.2 CC-Link协议家族 1.3.3 CC-Link IE TSN 二、瑞萨RIN32M4-CL3 2.1 芯片简介 2.2 资料下载 2.3 RIN系列产品 一、从0开始卷出一个新项目之CC-Link IE TSN 概述 一、CC-Link介绍 1.1 范围 快速实现CC-Lin…

TrueNAS怎么设置中文,最新2024版本安装详细说明

首先我们做好安装前的准备工作 1&#xff0c;ISO镜像安装包 2&#xff0c;虚拟机&#xff08;建议使用ESXI虚拟机环境&#xff09; 如果是物理机安装&#xff0c;建议先给底层安装虚拟机系统esxi&#xff0c;再在上面安装方便以后的管理&#xff0c;如果你想物理机直接安装&a…

心灵治愈交流平台|基于springboot框架+ Mysql+Java+B/S结构的心灵治愈交流平台设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能模块 心理咨询师功能 系统功能设计 数据库…

【C++】三大特性之多态

1 定义及实现 1.1 概念 多态是C三大特性之一。通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 多态是在不同继承关系的类对象&#xff0c;去调用同一函数&#xff0c;产生了不同的行为。比如学…

基于vue实现bilibili网页

学校要求的实验设计,基于vue实现bilibili网页版,可实现以下功能 (1)基本的悬浮动画和页面渲染 (2)可实现登录和未登录的页面变化 (3)在登录页面的,实现密码判断,或者短信验证方式的倒数功能 (4)实现轮播图 (5)实现预览视频(GIF) (6)页面下拉到一定高度出现top栏以及右下角的返回…

CentOS 7 编译安装 Nginx

CentOS 7 编译安装 Nginx 背景下载 Nginx 源码包安装依赖包编译添加环境变量添加守护查考文献 背景 一开始使用 docker 搭建了一个 web 服务器&#xff0c;但是由于 docker 不太方便的部署 TLS 证书&#xff0c;故使用 Nginx 做反向代理&#xff0c;实现 https 连接。 下载 N…

观成科技-基于自适应学习的人工智能加密流量检测技术

1.前言 人工智能技术的广泛应用正在深刻改变我们的生活。在网络安全领域&#xff0c;基于机器学习的检测技术也应用在许多场景中。随着信息技术的迅猛发展和数字化转型的深入推进&#xff0c;加密技术逐渐成为保障网络安全和数据隐私的核心手段&#xff0c;而基于机器学习的检…

LeetCode 面试经典150题 274.H指数

题目&#xff1a; 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;她…

滑块验证码

1.这里针对滑块验证给了一个封装的组件verifition&#xff0c;使用直接可以调用 2.组件目录 3.每个文件的内容 3.1 Api文件中只有一个index.js文件&#xff0c;用来存放获取滑块和校验滑块结果的api import request from /router/axios//获取验证图片 export function reqGe…

影响交易收益的因素有哪些?

在尝试做交易时&#xff0c;你可能会问自己一个问题&#xff1a;交易一天能赚多少钱&#xff1f;“如果我全职投入交易&#xff0c;一天能赚多少&#xff1f;”或者更广泛地说&#xff0c;“交易能为我带来怎样的财富&#xff1f;”这些问题本质上都充满了不确定性&#xff0c;…

upload-labs-pass01

1.安装好环境进入关卡&#xff08;记得打开小皮&#xff09; 2.可以看到第一关是要求上传图片&#xff0c;但是同时限制了图片类型&#xff0c;那么如果我们将木马写入图片&#xff0c;但是类型又不在白名单&#xff0c;就要想办法绕过 3.可以看到这里的要求是有check&#xff…

计算机组成原理——自己制作一个cpu

cpu包括单周期cpu、中断cpu、多周期cpu 代码实现之后在实验箱看效果&#xff0c;并且看波形图 单周期波形 中断cpu 多周期cpu 1.单周期CPU总体电路图 如图是一个简单的基本上能够在单周期CPU上完成所要求设计的指令功能的数据通路和必要的控制线路图。其中指令和数据各存储在不…

怎么批量去掉文件名中的空格?

怎么批量去掉文件名中的空格&#xff1f;在日常工作和生活中&#xff0c;我们经常会遇到文件名中含有空格的情况。这些空格可能是因为拷贝、重命名或其他操作时产生的&#xff0c;给文件的管理和识别带来了一定困扰。为了更好地整理和管理文件&#xff0c;批量去掉文件名中的空…

一文速通半监督学习(Semi-supervised Learning):桥接有标签与无标签数据

一文速通半监督学习&#xff1a;桥接有标签与无标签数据 前言背景补充&#xff1a;监督学习、半监督学习、无监督学习半监督学习(Semi-supervised Learning)的魔法一、半监督学习的三个常见的基本假设1. 连续性假设&#xff08;Smoothness Assumption&#xff09;2. 聚类假设&a…