我写了个钩子程序,可以Hook到createprocess,createprocessA,createProcessW 的调用。
比如在桌面上执行任何一个程序的快捷方式,我是可以Hook到的。哪怕打开一个文件夹,也是可以Hook到的。
但是我自己用代码写一个执行目标程序的功能,却Hook不到,为什么呢?
代码如下:Delphi(Pascal) code
function RunApp(const Path: String): int;
var StartUpInfo: TStartUpInfo;
ProcessInformation: TProcessInformation;
CreateProcResult: Boolean;
begin
ZeroMemory(@StartUpInfo, 0);
FillChar(StartUpInfo, sizeof(StartUpInfo), 00);
with StartUpInfo do
begin
cb := sizeof(StartUpInfo);
dwFlags := STARTF_USESHOWWINDOW;
lptitle := nil;
wShowWindow:=SW_SHOW;
end;
CreateProcResult := CreateProcess(nil, PChar(Path), nil, nil, false,
DETACHED_PROCESS, nil, nil, StartUpInfo, ProcessInformation);
if CreateProcResult then
Result := 0
else
Result := 1;
end;
Hook功能的实现,参照http://blog.csdn.net/wts/archive/2008/08/08/2786042.aspx
只不过我改成Hook createprocess,createprocessA,createProcessW
帮你顶一下,可惜俺不会,但只知道灰鸽子就是用强大的Dephi开发的....
xuexi....