【问题标题】:Why won't the loader load at the desired location为什么装载机无法在所需位置加载
【发布时间】:2012-03-14 08:50:17
【问题描述】:

据说有时加载程序会在与链接器假定的地址不同的地址处加载 exe。当 loader 这样做时会发生什么情况?

【问题讨论】:

  • 你想解决什么问题?
  • 我想知道如果加载器很少在某个不希望的位置加载文件,那么也许我可以将 .reloc 部分用于其他目的......
  • 我不建议这样做,不。 Win32 PE EXE 文件当前未重定位(与 DLL 不同),但我不建议将随机信息存储在 .reloc 部分中,因为。
  • 如果你想将数据添加到你的PE中,那么只需将其添加到PE中即可。没必要偷偷摸摸。如果你偷偷摸摸,那么你可能会被标记为恶意软件。
  • @CodyGray:EXE 被重新定位。这就是 ASLR 的全部意义所在。无法重定位的 EXE 不利于系统安全,因为它们无法使用 ASLR 漏洞缓解策略。

标签: windows executable exe portable-executable


【解决方案1】:

基本上,这发生在以下情况:

  1. 要加载图像的地址已被占用。例如,那里可能已经加载了另一张图片。
  2. 要加载的图像已在启用ASLR 的情况下编译。
  3. FLG_LDR_TOP_DOWN 全局标志已设置,这会强制将模块加载到可能的最高地址。

【讨论】:

  • FLG_LDR_TOP_DOWN,在“全局标志编辑器”(又名 GFLAGS.exe)工具的上下文中使用,通常不会安装在客户计算机上。此外,此工具仅适用于 x64 诊断。
  • 加载程序永远不会在错误的地址加载一个 EXE,如果它非 ASLRed 和非 TOP_DOWN 因为 EXE 是第一个存在于它的地址空间中的东西(即甚至在 ntdll 和堆之前) .如果 EXE 有一个无效的用户模式地址,在这种情况下进程将不会启动,因此 EXE 将始终获得它最喜欢的地址,但不喜欢 ASLR 并且不使用 TOP_DOWN。
猜你喜欢
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多