请问用cmd.exe 执行regedit.exe 时,为什么用CreateProcess hook不到,按ctrl+alt+del   等也hook不到,他们不是调用CreateProcess 吗?

解决方案 »

  1.   

    试试监视Shellexecute,用Shell钩子
      

  2.   

    function NewShellExecuteW(hwnd:HWND;Operation:PWideChar;FileName:PWideChar;Parameters:PWideChar;Directory:PWideChar;ShowCmd:Integer):HINST;Stdcall;
    type
      TNewShellExecuteW=function (hwnd:HWND;Operation:PWideChar;fileName:PWideChar;Parameters:PWideChar;Directory:PWideChar;ShowCmd:Integer):HINST;Stdcall;
    begin
    Resutl:=8;
    Exit;
    end;
    为什么这样编译不能通过来,这个函数本来就是这么声明的啊,[DCC Error] eabe_data_main.dpr(127): E2005 'hwnd' is not a type identifier
      

  3.   

    NtCreateProcess(  OUT PHANDLE           ProcessHandle,
      IN ACCESS_MASK        DesiredAccess,
      IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
      IN HANDLE             ParentProcess,
      IN BOOLEAN            InheritObjectTable,
      IN HANDLE             SectionHandle OPTIONAL,
      IN HANDLE             DebugPort OPTIONAL,
      IN HANDLE             ExceptionPort OPTIONAL );
    和zwCreateProcess这两个函数的delphi声明帮我把这个转换成delphi的function.
      

  4.   

    hwnd:HWND
    C++照抄过来的吧,DELPHI不区分大小写的。
      

  5.   

    以來delphi是否用unicode,若是unicode,CreateProcessW才是真實的CreateProcess ,否則為CreateProcessA
    參考這個帖子:http://bbs.pediy.com/showthread.php?t=85370
      

  6.   


    nod楼主再好好看看delphi的书吧,应该有说明的
      

  7.   

    不是从c++抄的,是在delphi输入windows.ShellExecuteW(  打个括号就会显示参数的啊呢!
      

  8.   

    不是从c++抄的,是在delphi输入windows.ShellExecuteW(  打个括号就会显示参数的啊呢!
      

  9.   

    是你对钩子不熟悉导致,你所说的这两个都可以被成功hook的。我有相关代码,但你要主动联系我。
      

  10.   


    mwy654321 请你关相关代码发给我学习学习,
                    [email protected]
    !拜谢!