【问题标题】:Finding static addresses in .exe file在 .exe 文件中查找静态地址
【发布时间】:2014-01-06 21:00:41
【问题描述】:

我有一些软件可以从另一个软件的内存中读取一个值。每次更新我都能完美地找到它的静态偏移量。我的问题如下:

假设,软件使用 ASLR,其基指针为 0x00123456。所需值的静态偏移量为基数 + 0x00006666。我想自动找到这些,因此在每次更新时解析 .exe 文件。理论上,地址应该在程序集中。问题是:它们是如何编码的?

如果我用十六进制编辑器打开 .exe 文件并搜索 offset 或 base+offset,则文件中不包含任何内容。当我想找到它们在汇编代码中被使用的地方时,我需要如何转换我的地址?

【问题讨论】:

    标签: assembly exe reverse-engineering ollydbg


    【解决方案1】:

    大多数 .DLL 文件和许多 .EXE 文件都包含一个基本重定位表。

    此表包含 .EXE 文件中使用的所有绝对地址的列表。

    它通常存储在名为“.reloc”的部分中。但是 Windows 会忽略节名; PE EXE 文件头包含对基本重定位表的引用。

    但并非所有 .EXE 文件都包含这样的基本重定位表。如果这样的表不存在,则 .EXE 文件始终加载到相同的地址 - 即使 ASLR 处于活动状态。

    GNU 链接器创建的大多数 32 位 EXE 文件都是这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-15
      • 2020-04-26
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 2018-11-04
      • 2018-09-17
      • 2021-07-07
      相关资源
      最近更新 更多