2012-11-30 4 views
0

나는 후크에 초보자입니다. 파일을 숨기거나 결과 중 일부를 필터링하여 결과를 필터링하여 차단할 수있는 파이썬 프로그램을 찾고 있는데 win API hooking을 사용하고 있습니다. 나는 파일 시스템 필터링 드라이버를 사용하거나 커널 모드 API 후킹을 사용하는 또 다른 방법이 있다는 것을 읽었으며 그 중 here에서 아이디어를 얻었습니다.kernel32.dll을 후크하여 파일 필터를 만드는 방법

어쨌든, 저는 파이썬 녀석입니다. 그래서 파이썬으로 들어가기를 원합니다. 검색 한 내용은 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 function 또는 zwQueryDirectoryfile function을 여기 구현하면 어떻게 파일을 차단하지 않고 필터에 추가 할 수 있습니까? 그러면 DLL이 필터에 영향을 미칩니 까?

답변

0

길을 얻었습니다. 이제 kernel32.dll에 커널 모드 후킹이 필요하다는 점을이 시점에서 판단 할 수 있습니다.

WINDDKVS(Visual Studio)은 커널 디버거와 exe로 호출 될 수있는 .sys 파일을 생성하는 환경을 제공합니다. WIN32HLP

에 정의에 따라

그냥 exe 인은/

(나는 방법에 의해 선호) 파이썬에서 할 수 있다면 지금 난 그냥 궁금 기능을 사용
관련 문제