OpenProcess in windows

在windows中,通常需要打开一个进程,然后可以看到该进程的一些信息,或者可以对打开的进程进行进一步的控制。但是,因为有些进程的级别很高,打开进程是会失败,通常都是ACCESS DENIED。

然后再看看CreateProcess函数,在创建进程的时候,有如下这么多参数,那么能不能通过这个函数来创建一个权限超高的进程,也就是说利用一个一般权限的程序创建一个权限超高的程序,然后在这个进程中做想做的事情呢?按理似乎可行。

BOOL WINAPI CreateProcess(
  _In_opt_     LPCTSTR lpApplicationName,
  _Inout_opt_  LPTSTR lpCommandLine,
  _In_opt_     LPSECURITY_ATTRIBUTES lpProcessAttributes,  //进程安全属性
  _In_opt_     LPSECURITY_ATTRIBUTES lpThreadAttributes,   //线程安全属性
  _In_         BOOL bInheritHandles,
  _In_         DWORD dwCreationFlags,
  _In_opt_     LPVOID lpEnvironment,
  _In_opt_     LPCTSTR lpCurrentDirectory,
  _In_         LPSTARTUPINFO lpStartupInfo,                        //启动信息
  _Out_        LPPROCESS_INFORMATION lpProcessInformation 
);

不只能不能在进程线程安全属性中设置。

今天同样碰到一个问题,就是在使用windows的hook时,使用SetWindowsHookEx 可以设置一个全局键盘hook , 该hook在记事本,或者有些程序中可以工作。但是有些程序,这个hook却不管用,抓不到该抓到的按键。甚是奇怪,目前还不清楚是怎么回事。按理,一个全局钩子,应该对所有的进程都有效呀。在stackoverflow上找了找,大概是某些程序做了API拦截,比如拦截了LoadLibrary函数 , 只会load它认识的库而忽略其他的库,这样我们编写的全局Hook就进不去了。参见这里 , 如果把该进程用到的所有DLL的EXPORTS列出来,应该可以在其中找到LoadLibary函数。

另外有两个钩子WH_JOURNALRECORD 、 WH_JOURNALPLAYBACK 可以专门用来做键盘鼠标的录音和回放。链接在这里



本文地址: http://www.bagualu.net/wordpress/archives/2034 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注