【问题标题】:Has ordinal index of functions in Windows API dlls ever changed?Windows API dll 中函数的序号索引是否曾经改变过?
【发布时间】:2010-12-26 08:19:13
【问题描述】:

您知道 dll 中的函数可以通过名称或序号索引导入。

来自wikipedia:对于大多数 Windows API 函数,只有名称在不同的 Windows 版本中保留;序数可能会发生变化。因此,无法通过序号可靠地导入 Windows API 函数。

我的问题:我知道这些序数可能会改变,但我想知道它们是否真的改变过。 (尤其是关于 kernel32 和 user32 dll)

我为什么要问这个?我听说有些病毒会按序号导入 win32 函数。我想抓住它们,我想知道我是否可以测试序数。

谢谢。

【问题讨论】:

  • 所以基本上,你知道你希望做的是错误,但你想知道你是否安全无论如何都这样做 ?我们想知道为什么软件会损坏。
  • 其实我没有。我读过病毒会这样做(在“计算机病毒研究与防御的艺术”一书中),我想知道如果病毒可以逃脱它,我将能够以这种方式捕获它。

标签: windows api dll


【解决方案1】:

这个问题很容易回答,答案是是的。只需获取两个版本的 kernel32.dll 并使用 PE 查看器查看它们。

例如,左边是 Windows 7 的 kernel32.dll,右边是 Windows Vista 的 kernel32.dll。可以看到AddIntegrityLabelToBoundaryDescriptor的加入使得下面的函数序号比Vista增加了1。

我不明白您为什么要使用此信息来捕获病毒。病毒可以使用许多其他方法来获取函数的地址。

【讨论】:

    【解决方案2】:

    这无关紧要。使用错误序数的病毒无法复制。您无法捕获无法复制的病毒,您将永远看不到它们。你这样做也没关系,它不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2016-07-01
      • 2015-11-12
      • 2020-12-08
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多