【问题标题】:Can API hooking in python be OS agnostic? [closed]python中的API挂钩可以与操作系统无关吗? [关闭]
【发布时间】:2012-07-23 00:59:27
【问题描述】:

在使用 Python 进行渗透测试的世界中,它看起来像 通常必须挂钩到特定于操作系统的 API。这是有道理的 对我来说,因为我们正在处理不同的架构和内核 操作系统,Linux,Windows。但我想知道如果不是这样吗?

除了您从 OS 模块获得的一些有限功能之外,我的假设是,与 Windows 相比,挂钩到 OS 的 API 通常会特定于 *POSIX 风格(也许它们有更多共同点)。

我特别想到了 Windows 上的 Deviare。它处理 .DLL 文件。这几乎是Windows。 当我们听到 DLL 时,脑海中浮现的是 windows 领域、.plist OS X 等等。

【问题讨论】:

  • Python 中没有“挂钩”的概念。您一直在阅读哪些文字,哪些部分让您感到困惑?
  • 我将 Hooking 理解为更多的概念,而不是特定于 python 的东西。没有使用特定的文字,只是在网上看一些不太有用的解释。
  • 嗯,我怀疑这种学习方法是否能让你走到任何地方。我的建议是首先阅读一些编程教程或入门书籍,然后再进行自己的一些项目。在没有特定应用程序的情况下尝试理解一个随机的、不是很精确定义的主题似乎没有多大帮助。
  • 如果你说的是挂钩原生win32函数我写了this文章作为一个简单的例子,但我认为你的问题需要更多的阐述,因为挂钩的概念出现在不同的领域(即:SVN挂钩)。
  • 也许这对你有帮助:stackoverflow.com/questions/774824/…

标签: python python-3.x


【解决方案1】:

Hooking 是一种让您自己的代码在另一个系统运行时执行的方法,无论该系统是操作系统、GUI 还是其他系统。 Python 中的一个有点傻的例子:

def Process(records, per_record_hook=None):
    "adds all records to XYZ system"
    XYZ = []
    for record in records:
        if per_record_hook:
            per_record_hook(record)
        XYZ.append(record)

def print_record(record):
    "print a '.' for each record (primitive counter)"
    print '.'

然后:

Process(records_from_somewhere, per_record_hook=print_record)

【讨论】:

  • 谢谢。这是唯一有用的回应!
【解决方案2】:

http://en.wikipedia.org/wiki/Hooking

我假设您指的是这种 ^ 类型的钩子?我对这个术语完全不熟悉,但您似乎正在寻找一个允许与操作系统交互的库?

如果是这样,请尝试 PyWin32(google it)之类的东西或遵循此处找到的一些技术: http://www.rohitab.com/discuss/topic/37018-api-hooking-in-python/

同样,如果您可以将它(短语 hooking)放入更多...Python 风格的术语中,会更有帮助,但我希望这会有所帮助?

【讨论】:

    【解决方案3】:

    在 Python 中,这样的事情通常是微不足道的,甚至很难提供示例。钩子通常是回调,是的。 python中的回调只是通过传递函数并调用它们来完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2013-08-29
      • 1970-01-01
      • 2012-06-09
      • 2010-09-16
      • 2018-10-19
      • 2011-10-16
      • 1970-01-01
      相关资源
      最近更新 更多