0

我是挂钩的新手。我正在寻找一个 python 程序,它可以通过使用win API hooking. 我已经读到还有另一种方法可以做到这一点,使用文件系统过滤驱动程序,或者使用内核模式 API 挂钩,我从这里得到了这个想法。

无论如何,我是 python 人,所以我希望它在 python 中,搜索我起床到PyBox的内容。这是我可以将某些 DLL 注入应用程序然后运行它的地方。

这是执行此操作的代码:

 if kernel32.CreateProcessA(self.exe,
                                   None,
                                   None,
                                   None,
                                   None,
                                   creation_flags,
                                   None,
                                   None,
                                   byref(startupinfo),
                                   byref(process_information)):
            self.pid = process_information.dwProcessId
            self.tid = process_information.dwThreadId
            self.h_process = process_information.hProcess
            self.h_thread = process_information.hThread
            print "Process successfully launched with PID %d." % self.pid
            return True
        else:
            print "Process could not be launched!"
            raise WinError()
            return False

这会在挂起模式下创建进程,然后:

def resume(self):
        if (kernel32.ResumeThread(self.h_thread) == 0):
            print "Process could note be resumed!"
            raise WinError()
            return False
        else:
            print "Process resumed."
            return True

此函数在注入 DLL 后恢复进程。我想知道两件事:

  1. 为什么不如果我可以阻止该过程而不是恢复它。这将阻止应用程序运行。但是我应该调用 kernel32 的哪个函数呢?
  2. 我怎样才能实现ntQueryDirectoryfile functionzwQueryDirectoryfile function在这里,以便我可以向文件添加过滤器而不是阻止它。那么DLL会对过滤器产生任何影响吗?
4

1 回答 1

0

有办法了。我现在猜想 kernel32.dll 需要内核模式挂钩,这对 python 来说是遥不可及的。

WINDDKVS(Visual Studio)提供内核调试器和环境来创建可以调用到exe中的.sys文件。

只需使用中定义的功能WIN32HLP

现在我只是想知道那个exe是否可以用python制作(顺便说一下我更喜欢)/

于 2012-12-24T01:39:42.290 回答