API中的API挂钩可以与操作系统无关吗?

时间:2012-07-24 16:38:27

标签: python python-3.x

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

除了你从OS模块中获得的一些有限的功能之外,我的假设是,挂钩到操作系统的API通常会特定于* POSIX风格(可能它们有更多共同点)比例如在Windows中。

特别是我在Windows上想到Deviare。它处理.DLL文件。这几乎是Windows。 在我们听到DLL的那一刻,心灵进入了Windows land,.plist OS X等等。

3 个答案:

答案 0 :(得分:7)

Hook是一种在另一个系统运行时让自己的代码执行的方法,无论其他系统是OS,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)

答案 1 :(得分:2)

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

我会假设你指的是这种挂钩?我对这个术语完全不熟悉,但看起来你正在寻找一个允许与操作系统交互的库?

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

同样,如果你能把它(短语挂钩)变成更多...... Python式的术语,那会更有帮助,但我希望这有帮助吗?

答案 2 :(得分:2)

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