100分求解 用madCodeHook Hook Send和Recv的问题

100分求解 用madCodeHook Hook Send和Recv的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061124075201178.html
目前可以正常呼出HOOK窗口..但是记录不到封包....  
   
  全部代码如下....  
  还试过   HookAPI('wsock32.dll'   同样不行....  
   
  Unit   MainUnit;  
   
  Interface  
   
  Uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs;  
   
  Type  
      TFrmMain=Class(TForm)  
          Procedure   FormCreate(Sender:TObject);  
      Private  
      Public  
      End;  
   
  Var  
      FrmMain:TFrmMain;  
   
  Function   HookIn(bHook:Boolean):Longint;   Stdcall;External'Hook.DLL';  
   
  Implementation  
   
  {$R   *.dfm}  
   
  Procedure   TFrmMain.FormCreate(Sender:TObject);  
  Begin  
      HookIn(True);  
  End;  
   
  End.  
   
  --------------------------------------------------------------------------  
  Library   Hook;  
   
  Uses  
      Windows,  
      WinSock2,  
      Messages,  
      SysUtils,  
      madCodeHook,  
      FrmUnit   In'FrmUnit.pas'{frm};  
   
  Type  
      TSock=Function(s:TSocket;Var   Buf;Len,   flags:Integer):Integer;Stdcall;  
   
  Var  
      OldSend,   OldRecv:TSock;  
      hMesHWnd:HWnd;  
   
  Function   pCharToHex(Buf:pChar;Len:Integer):String;  
  Var  
      I:Integer;  
  Begin  
      For   I   :=   0   To   Len-1   Do  
          Result   :=   Result+IntToHex(Ord(Buf[I]),   2)+'   ';  
  End;  
   
  Function   MySend(s:TSocket;Var   Buf;Len,   flags:Integer):Integer;   Stdcall;  
  Begin  
      frm.Logs.Lines.Add('Send:   '+pCharToHex(@Buf,   Len));  
      Result   :=   OldSend(s,   Buf,   Len,   flags);  
  End;  
  Function   MyRecv(s:TSocket;Var   Buf;Len,   flags:Integer):Integer;   Stdcall;  
  Begin  
      Result   :=   OldRecv(s,   Buf,   Len,   flags);  
      frm.Logs.Lines.Add('Reav:   '+pCharToHex(@Buf,   Len));  
  End;  
   
  Function   MesHook(nCode:Integer;WPARAM:WPARAM;lParam:lParam):LRESULT;   Stdcall;  
  Var  
      Msg:PMsg;  
      //tID:DWORD;  
  Begin  
      If   (nCode=HC_ACTION)   Then   Begin  
          If   (GetModuleHandleA('iexplore.exe')>0)   Then   Begin  
              Msg   :=   PMsg(lParam);  
              Case   Msg.Message   Of  
                  WM_KEYUP:Case   Msg.WPARAM   Of  
                          VK_F12:Begin  
                                  If   (frm=Nil)   Then   Begin  
                                      frm   :=   Tfrm.Create(Nil);  
                                      HookAPI('ws2_32.dll',   'send',   @MySend,   @OldSend);  
                                      HookAPI('ws2_32.dll',   'recv',   @MyRecv,   @OldRecv);  
                                      //HookCode(@send,   @MySend,   @OldSend);  
                                      //HookCode(@recv,   @MyRecv,   @OldRecv);  
                                  End;  
                                  frm.Show;  
                              End;  
                      End;//Case   Msg.WPARAM  
              End;//Case   Msg.message  
          End;//if   GetModuleHandleA  
      End;//If   nCode  
      Result   :=   CallNextHookEx(hMesHWnd,   nCode,   WPARAM,   lParam);  
  End;  
   
  Function   HookIn(bHook:Boolean):LongInt;   Stdcall;  
  Begin  
      If   bHook   Then   Begin  
          hMesHWnd   :=   SetWindowsHookEx(WH_GETMESSAGE,   @MesHook,   HInstance,   0);  
      End   Else   Begin  
          If   (hMesHWnd<>0)   Then   UnhookWindowsHookEx(hMesHWnd);  
          hMesHWnd   :=   0;  
      End;  
      Result   :=   hMesHWnd;  
  End;  
   
  {$R   *.res}  
  Exports  
      HookIn;  
  Begin  
   
  End.  
   
  --------------------------------------------------------------------------  
 

弄了1晚上..都不行...高手们帮帮忙了...  
  菜鸟我先去睡一觉先...55555

已经知道了问题所在...是因为没有madCHook.dll这个文件的问题...  
 

转载于:https://www.cnblogs.com/delphi2007/archive/2008/11/27/1342614.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
// madCodeHook.pas version: 2.0 ? date: 2003-08-10 // ---------- // API hooking, code hooking // ---------- // Copyright (C) 1999 - 2003 www.madshi.net, All Rights Reserved // ********** // 2003-08-10 2.0 (1) HookCode parameters changed -> only one flags parameter // (2) (Un)InjectLibrary: user/session/system wide injection! // (3) InjectLibrary2 replaced by InjectLibrary (auto detect) // (4) static lib for Microsoft C++ added // (5) CreateIpcQueue + SendIpcMessage + DestroyIpcQueue added // (6) AmSystemProcess + AmUsingInputDesktop added // (7) GetCurrentSessionId + GetInputSessionId added // (8) GetCallingModule function added // (9) ProcessIdToFileName added // (a) Create/OpenGlobalMutex + Event + FileMapping added // (b) WideToAnsi + AnsiToWide functions added // (c) RenewHook function added // (d) madCodeHook.dll -> madCHook.dll (8.3 dos name logic) // (e) UnhookAPI added (= UnhookCode, added just for the look) // (f) AddAccessForEveryone added // 2002-10-17 1.3f InjectLibrary2(W) was not stdcall (dumb me) // 2002-10-03 1.3e (1) InjectLibraryW added // (2) InjectLibrary2(W) added for use in CreateProcess(W) hooks // 2002-09-22 1.3d CreateProcessExW added // 2002-03-24 1.3c CollectHooks/FlushHooks speed up mixture initialization // 2002-02-24 1.3b LPSTARTUPINFO -> LPSTARTUPINFOA // 2002-01-21 1.3a ProcessHandleToId exported // 2001-07-08 1.3 new functions (1) AllocMemEx & FreeMemEx // (2) CopyFunction // (3) CreateRemoteThread and // (4) InjectLibrary added // 2001-04-20 1.2a you can now force HookCode/API to use the mixture mode // 2001-04-16 1.2 new function CreateProcessEx -> dll injecting

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值