未将 Win32 可移植可执行映像映射到偏移量 0 处的可能原因有哪些?

2024-03-04

我最近一直在研究 Window 的 PE 格式,我注意到在大多数示例中, 人们倾向于设定ImageBase中的偏移值optional header到一些不合理的高的东西,比如0x400000.

什么可能使它不利not在偏移处映射图像0x0?


首先,这不是 Windows 或 PE 文件格式的默认设置,而是当您使用链接器的 /BASE 选项链接 EXE 时的默认设置。 DLL 的默认值是 0x10000000。

选择 /BASE:0 是一个糟糕的选择,任何程序都不能在该基地址上运行。地址空间的前 64 KB 被保留,永远无法映射。主要是为了捕获空指针解除引用错误。并扩展到 64KB,以捕获以 16 位开始并重新编译为 32 位的程序中的指针错误。

为什么默认值是 0x40000 而不是 0x10000,这也是一个历史事故,并且至少可以追溯到 Windows 95。Windows 95 为“16 位/MS-DOS 兼容性区域”保留了前 4 MB 的地址空间。我不太记得了,Windows 9x 的 16 位 VM 实现与 NT 非常不同。您可以在这篇古老的文章中阅读更多相关内容知识库文章 http://support.microsoft.com/kb/125691。现在它肯定不再相关了,64 位操作系统将很容易在 0x010000 和 0x400000 之间的空间中分配堆内存。

更改 EXE 的 /BASE 选项没有任何意义。然而,有lots将其更改为 DLL 的要点。如果它们不重叠,则不必重新定位,它们不会占用分页文件中的任何空间,并且可以在进程之间共享,它们会更有效。甚至还有一个 SDK 工具,因此您可以在构建后更改它,rebase.exe

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未将 Win32 可移植可执行映像映射到偏移量 0 处的可能原因有哪些? 的相关文章

  • 敲除映射导致堆栈溢出

    我正在尝试淘汰赛和映射插件 并想知道为什么这不起作用 我有一个要使用映射扩展加载的视图模型 function todoListViewModel data ko mapping fromJSON data todos TodoItem op
  • WaitForSingleObject 是否充当内存屏障?

    昨天一个关于双重检查锁定的问题引发了一系列的想法 让我对一个简单的情况感到不确定 在下面的代码中 是否可以点击printf 不再同步 在这个简单的示例中 这些值可能位于同一缓存行上 因此我认为这种可能性较小 假设一开始可能性 gt 0 如果
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • 从安全角度来看,在 Windows 中使用管道是否被认为是危险的?

    从安全角度来看 在 Windows 中使用管道是否被认为是危险的 管道在 Windows 中并不是一个特殊的安全风险 如果您担心安全性 请确保将管道上的安全描述符设置为适当的 DACL 如果您的使用要求管道开放供任何人连接 那么您必须将传入
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 当 pandas 是导入时,Cx_freeze TypeError 只能使用 numpy 依赖项将列表(不是“NoneType”)连接到列表

    我正在尝试使用 cxfreeze 将以下脚本转换为可执行文件 import datetime from calendar import monthrange from tia bbg import LocalTerminal as Lt i
  • 如何在 Windows 上查找当前系统缓存大小?

    到处搜索 但未能找到 API 调用来检索 Windows 上 文件 系统缓存的当前大小 全局内存状态Ex https stackoverflow com a 2017659 450917 检索总计 免费 已用和交换统计数据 获取系统文件缓存
  • 将 geojson 文件下载到 jupyter 中的 folium 中

    我想要一张欧洲地图 作为 json 文件 这样我就可以使用 geojson 将其作为图层放置在 Folium 地图上 这样我就可以将我的数据集嵌入到其中 以显示欧洲哪个国家的酒精含量最高 我在从 GitHub 获取 json 文件以在 jy
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 获取保证具有完整(4 位)年份的 LOCALE_SSHORTDATE 的正确方法是什么?

    我想创建一个日期时间选择器控件 它显示日期和时间 作为DTS SHORTDATECENTURYFORMAT and DTS TIMEFORMAT风格 由于日期时间选择器中没有内置这种样式 因此我必须自己做GetLocaleInfoEx 我注
  • Haskell,堆栈:找到可执行文件

    我正在寻找类似的东西 stack whereis hasktags where whereis行为或多或少类似于 UNIXwhereis命令 hasktags是这样运行的 stack exec hasktags stack exec whe
  • 使用 AutoMapper 展开 DTO

    我一直在尝试使用 AutoMapper 来节省从 DTO 到域对象的时间 但是我在配置地图以使其正常工作时遇到了麻烦 并且我开始怀疑 AutoMapper 是否可能是错误的工具工作 考虑这个域对象的示例 一个实体和一个值 public cl
  • 如何使用 C++ 禁用另一个进程中窗口上的关闭按钮?

    我需要从另一个进程禁用窗口上的关闭按钮 我有它的句柄hWnd我尝试这样做 DWORD dwCStyle GetClassLongPtr hWnd GCL STYLE SetClassLongPtr hWnd GCL STYLE dwCSty
  • 检测桌面是否被锁定[重复]

    这个问题在这里已经有答案了 可能的重复 如何以编程方式确定我的工作站是否被锁定 https stackoverflow com questions 44980 how can i programmatically determine if
  • 如何让 Win32 使用 Windows XP 样式字体

    我正在使用纯 C 和 WinAPI 编写 Win32 应用程序 不允许使用 MFC 或 C 为了让控件使用适当的样式进行绘制 我使用了清单 如相应的 MSDN 文章中所述 一切都很好 当我更改系统样式时 我的应用程序也会更改样式 但使用的字
  • 如何查明 .exe 是否正在 C++ 中运行?

    给定进程名称 例如 程序 exe C 标准库没有这样的支持 您需要一个操作系统 API 来执行此操作 如果这是 Windows 那么您将使用 CreateToolhelp32Snapshot 然后使用 Process32First 和 Pr
  • 地图路由,像谷歌地图一样吗?

    我一直对地图路由很感兴趣 但我从未找到任何好的入门 甚至高级 级别的教程 有人有任何指示 提示等吗 Update 我主要寻找有关如何实现地图系统 数据结构 算法等 的指导 看看开放街道地图项目 http www openstreetmap
  • 设置窗口像素的正确(且无闪烁)方法?

    我正在努力找出在 WM PAINT 期间将纯 RGBA 值数组转储到 Win32 窗口的客户区的正确方法 我有以下代码 但它看起来已经很复杂 我什至还没有完成 case WM ERASEBKGND return 1 case WM PAIN
  • 从架构上来说,我应该如何用更易于管理的内容替换非常大的 switch 语句?

    EDIT 1 忘记添加嵌套属性曲线球 UPDATE 我选择了 mtazva 的答案 因为这是我的具体案例的首选解决方案 回想起来 我用一个非常具体的例子提出了一个一般性问题 我相信这最终让每个人 或者也许只是我 对问题到底是什么感到困惑 我
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真

随机推荐

  • C++ 判断类是否具有可比性

    我或多或少是Java程序员 所以这可能是一个愚蠢的问题 但我没有找到任何简单的解决方案 我在 C 中有一个这样的类 template
  • JavaScript 排序方法处理大写字母

    注意到 JavaScript 可能有些奇怪的地方sort 方法 给定以下数组 var arr Aaa CUSTREF Copy a template Copy of Statementsmm Copy1 of Default Email T
  • 在 ColdFusion 中维护出站 TCP 连接池

    我希望从 ColdFusion 应用程序中大量使用 RESTful API 我不是 CF 专家 但我预计重复的 cfhttp 调用将成为瓶颈 因为我相信每次调用都会导致建立连接 发送请求 收到响应和断开连接 我很好奇 有没有办法维护一个连接
  • 在批处理文件中定义和使用变量

    我正在尝试在批处理文件中定义和使用变量 看起来应该很简单 echo off set location bob echo We re working with location 我得到的输出如下 We re working with 这里发生
  • jQuery Mobile 视口在 Windows Phone 中无法工作

    我正在 WindowsPhone 中测试 jQueryMobile 但视口无法正常工作 有一个解决方法这一页 http forum jquery com topic problem with virtual viewport size on
  • FireStore Tasks.whenAllComplete 与协程

    我想同步实现这段代码 但job join deferred await和火力基地await 不工作 有谁知道解决方案吗 CoroutineScope Dispatchers Main launch val job launch Tasks
  • 如何使用 System.Net.HttpClient 发布复杂类型?

    我有一个自定义复杂类型 我想使用 Web API 来使用它 public class Widget public int ID get set public string Name get set public decimal Price
  • 如何使用复选框更改 QGraphicsView 背景

    在此代码中 更改了QGraphicsView背景 现在当我检查 true 时我需要更改背景checkBox 当我设置为checkBox去检查true我需要像这段代码一样设置背景 当我设置时checkBox去检查false 我需要设置QGra
  • Tensorflow 2 抛出 ValueError:as_list() 未在未知 TensorShape 上定义

    我正在尝试在 Tensorflow 2 0 中训练 Unet 模型 该模型将图像和分割掩模作为输入 但我得到了ValueError as list is not defined on an unknown TensorShape 堆栈跟踪显
  • 带有 ActionCable 的 Rails 5 应用程序可以部署在 Windows 上吗?

    我有一个 Rails 5 应用程序 我计划将其部署在 Linux 上 但由于我们需要一些访问非常特定的仅限 Windows 的软件 因此我需要将其部署在 Windows Server 2012 R2 上 我的软件堆栈 或组合 应该是 Ngi
  • Scala 中的调试日志不会影响性能

    在 C C Objective C 等语言中 通常使用预处理器宏来定义日志记录机制 这些机制甚至不会为发布的二进制文件进行编译 因此不会造成性能影响 大致如下 ifdef DEBUG printf some event we want to
  • python 中的对象初始值设定项语法(c#)?

    我想知道是否有一种快速的方法来初始化Python中的对象 例如 在 c 中 您可以实例化一个对象并设置字段 属性 例如 SomeClass myObject new SomeClass variableX value variableY 1
  • 从 ASP.NET MVC Lambda 表达式获取价值

    我正在尝试创建自己的 HTML 帮助器 它接受一个表达式 类似于内置的 LabelFor 帮助器 我找到了当表达式与此类似时获取属性值的示例 model gt model Forename 但是 在我的一些模型中 我想获取子元素中的属性 例
  • Python 电子邮件 PDF:某些 PDF 已损坏

    我正在尝试将 PDF 文件附加到电子邮件中 对于一个 PDF 打印为 PDF 的 Word 文档 它可以工作 收件人在 Outlook 中打开它没有问题 然而 对于其他 PDF 除了大了几 KB 之外 它们看起来都一样 它们会被损坏 是一个
  • Android - 解决 ACCESS_CONTENT_PROVIDERS_EXTERNALLY 权限?

    我正在构建一个应用程序 它给出了这个异常 因为我调用了一些内部方法 权限拒绝 没有从 pid 2520 uid 10047 调用 getContentProviderExternal 的权限 需要 android permission AC
  • WTSEnumerateSessions 挂起并且永不返回

    我有一个用 C 编写的 Net 服务 我正在调用WTSEnumerateSessions 会话检查由计时器每 15 分钟运行一次 它列出所有会话并将用户名 域组合与预定义的用户集进行比较 以确定他们是否登录到服务器 问题在于几个服务器的调用
  • C# 程序运行时初始形式不可用

    我在让程序中的主窗体按我想要的方式运行时遇到问题 我正在使用 C 在我的初始主窗体 Form1 上 我有一个运行长程序的命令按钮 在程序中间 我希望用户能够返回到初始表单并单击一些新的复选框 我将从 C 程序中将其放置在该初始表单上 下面的
  • Telegram 中的“Simple PUSH”事件如何运作?

    The 用于订阅 Telegram API 中的 PUSH 基础设施的文档 https core telegram org method account registerDevice非常缺乏 因为主要是专注于移动平台 https core
  • Cakephp - 如何使错误页面有自己的布局?

    我想要为未找到 404 页面使用不同的布局 我如何为该页面设置不同的布局 IRC 的专家帮助了我 他建议使用beforeRender 在应用程序控制器中 Before Render function beforeRender if this
  • 未将 Win32 可移植可执行映像映射到偏移量 0 处的可能原因有哪些?

    我最近一直在研究 Window 的 PE 格式 我注意到在大多数示例中 人们倾向于设定ImageBase中的偏移值optional header到一些不合理的高的东西 比如0x400000 什么可能使它不利not在偏移处映射图像0x0 首先