首页
社区
课程
招聘
[求助]HOOK api后 explorer.exe就无响应
发表于: 2009-11-1 11:36 5525

[求助]HOOK api后 explorer.exe就无响应

2009-11-1 11:36
5525
为什么HOOK findnextfilew 后,explorer.exe就无响应了呢,HOOKAPI库用的是Hook Api Library 0.2[Ring3] By Anskya,此库HOOK messageboxa却非常正常
换成findnextfilew 后explorer.exe就无响应
请有经验的朋友帮助看一下,是什么问题,同样的代码我用MADCHOOK或改引入表式HOOK就没有问题

library APIHook_Files;

uses
  Windows,
  SysUtils,
  HookApiLib in 'HookApiLib.pas',
  HookApi in 'HookApi.pas';

var
  iHook: HHook;
   hook: thookapi;
//下面存放原函数地址
var
  OldFindNextFileW: function (handle: dword; var data: TWin32FindDataW) : bool; stdcall;
                    
function CmpData(S: pchar): bool; stdcall; //判断是否符合条件
begin
  result := false;
    if S = '_ws' then
      result := true;
end;

//代理函数

function MyFindNextFileW(handle: dword; var data: TWin32FindDataW) : bool; stdcall;
begin
  repeat
    result := OldFindNextFileW(handle, data);
  until (not result) or (not CmpData(data.cFileName));
end;

procedure SetAPIHook; stdcall;
VAR
  L: POINTER;
begin
  L := GetProcAddress(LoadLibrary('kernel32.dll'), 'FindNextFileW');
  @OldFindNextFileW:=   HookApi(L, @MyFindnextFileW);
end;

procedure UnSetAPIHook; stdcall;
begin
  UNHookApi(@OldFindNextFilew);

end;

//勾子部份
function HookProc(nCode: Integer; WPARAM: wParam; LPARAM: lParam): LResult; stdcall;
begin
// Result:=0;
  // 勾子回调函数
// if nCode < 0 then
    Result := CallNextHookEx(iHook, nCode, wParam, lParam);
end;

procedure SetHook(FileList: String); stdcall; //
begin
  //安装勾子
  iHook := SetWindowsHookEx(WH_DEBUG, @HookProc, hInstance, 0);
end;

procedure UnSetHook; stdcall;
begin
  UnHookWindowsHookEx(iHook);
  iHook:=0;
end;

function IsHooking: bool; stdcall;
begin
  Result := (iHook<>0);
end;

procedure EntryPointProc(Reason: Integer);
begin
  case reason of
    DLL_PROCESS_ATTACH:
    begin
      SetAPIHook;   //修改API入口表
    end;

    DLL_PROCESS_DETACH:
    begin
      UnSetAPIHook;
    end;
  end;
end;

exports
  SetHook, UnSetHook,IsHooking;

begin
  iHook := 0;
  DllProc := @EntryPointProc;
  EntryPointProc(DLL_PROCESS_ATTACH);
end.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
开一个线程试试
2009-11-1 20:31
0
游客
登录 | 注册 方可回帖
返回
//