Python中的API hooking是否与操作系统无关?

6
在使用Python进行渗透测试的世界中,似乎必须通常钩入一个特定于操作系统的API。这对我来说是有道理的,因为我们处理的是OSX、Linux和Windows之间的不同架构和内核。但我想知道这是否是事实?
除了从OS模块获得的一些有限功能外,我的假设是钩入操作系统的API通常会特定于*POSIX风格(也许它们有更多共同点)而不是例如Windows。
特别是我在想Windows上的Deviare。它处理.DLL文件。那几乎就是Windows了。 一听到DLL,人们就会想到Windows领域,.plist则是OS X等等。

3
Python中没有称为“hooking”的概念。请问您所阅读的是哪个文本,有哪些部分让您感到困惑? - Sven Marnach
我理解 Hooking 更多是一个概念,而不是 Python 特定的内容。没有使用特定的文本,只是在网上查看了一些不太有帮助的解释。 - inbinder
2
嗯,我有一些疑虑,认为这种学习方式并没有让你有所进展。我的建议是先通过一些编程教程或入门书籍进行学习,然后再去追求自己的项目。试图理解一个随意、不太明确定义的主题而没有具体应用似乎并不是很有帮助。 - Sven Marnach
如果你在谈论本地Win32函数的挂钩,我写了这篇文章作为一个简单的例子:http://blog.nektra.com/main/2012/07/20/windows-api-hooking-in-python-with-deviare/。但我认为你的问题需要更多的阐述,因为挂钩概念出现在不同的领域(例如:SVN挂钩)。 - sw.
也许这可以帮助你:https://dev59.com/wXRA5IYBdhLWcg3w8SiJ - guettli
3个回答

7

Hooking是一种在其他系统运行时让您自己的代码执行的方法,无论该系统是操作系统、图形用户界面还是其他什么。以下是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)

1
谢谢。这是唯一有用的回答! - inbinder

2

2

在Python中,像这样的东西通常是如此微不足道,以至于很难提供示例。钩子通常是回调函数。在Python中,回调函数只需通过传递函数并调用它们来完成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接