⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.pas

📁 sendudp源代码
💻 PAS
字号:
unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;

const
   WM_Send = WM_USER + 1201;
   WM_SendTo = WM_USER + 1202;
   WM_Connect = WM_USER + 1203;

const HOOK_MEM_FILENAME = 'MEM_FILE';

type

  TShared = record
    Buf: array[0..2048] of char; //save buf
    srcPort : array[0..5] of Char; //save srcport
    DestPort : array[0..5] of Char;
    srcIp :array[0..16] of Char;
    DestIp : array[0..16] of Char;
  end;
  PShared = ^TShared;

  TMainpas = class(TForm)
    MainMenu1: TMainMenu;
    Syste1: TMenuItem;
    Set1: TMenuItem;
    Exit1: TMenuItem;
    About1: TMenuItem;
    Memo1: TMemo;
    Start1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    procedure Set1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure Start1Click(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure Sendto(var Msg: TMessage); message WM_SendTo;
    procedure Send(var Msg: TMessage); message WM_Send;
    procedure Connect(var Msg: TMessage); message WM_Connect;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
    MapHandle: THandle;
    pShare: PShared;
    Procedure Starthook;
    Procedure StartMap;
  end;

var
  Mainpas: TMainpas;
  Hooked : Boolean;
  InstallHook : function   (SWindow:   THandle):Boolean;stdcall;
  UnHook:   procedure;stdcall;
function sendudp( srcip , dstip:String ; srcprt ,dstprt : integer; buf :string; bufsize:integer):integer;stdcall;external 'SendUdp.dll';

implementation

uses SetFrm;

{$R *.dfm}
procedure TMainpas.SendTo(var Msg: TMessage);
begin
  Mainpas.Memo1.Lines.Add('- - - - - - - - - - -Sendto- - - - - - - - - - -');
  Mainpas.Memo1.Lines.Add('srcIP:'+PShare^.srcIp);
  Mainpas.Memo1.Lines.Add('srcPort:'+PShare^.srcPort);
  Mainpas.Memo1.Lines.Add('DestIp:'+PShare^.DestIp);
  Mainpas.Memo1.Lines.Add('DestPort:'+PShare^.DestPort);
  Mainpas.Memo1.Lines.Add('Data:'+PShare^.Buf);
  Mainpas.Memo1.Lines.Add('- - - - - - - - - - -Sendto- - - - - - - - - - -');
  Mainpas.Memo1.Lines.Add('');  
end;

procedure TMainpas.Connect(var Msg: TMessage);
begin
  Mainpas.Memo1.Lines.Add('- - - - - - - - - - -Connect- - - - - - - - - - -');
  Mainpas.Memo1.Lines.Add('srcIP:'+PShare^.srcIp);
  Mainpas.Memo1.Lines.Add('srcPort:'+PShare^.srcPort);
  Mainpas.Memo1.Lines.Add('DestIp:'+PShare^.DestIp);
  Mainpas.Memo1.Lines.Add('DestPort:'+PShare^.DestPort);
  Mainpas.Memo1.Lines.Add('Data:'+PShare^.Buf);
  Mainpas.Memo1.Lines.Add('- - - - - - - - - - -Connect- - - - - - - - - - -');
  Mainpas.Memo1.Lines.Add('');  
end;

procedure TMainpas.Send(var Msg: TMessage);
begin
  Mainpas.Memo1.Lines.Add('- - - - - - - - - - -Send- -- - - - - - - - - - -');
  Mainpas.Memo1.Lines.Add('srcIP:'+PShare^.srcIp);
  Mainpas.Memo1.Lines.Add('srcPort:'+PShare^.srcPort);
  Mainpas.Memo1.Lines.Add('DestIp:'+PShare^.DestIp);
  Mainpas.Memo1.Lines.Add('DestPort:'+PShare^.DestPort);
  Mainpas.Memo1.Lines.Add('Data:'+PShare^.Buf);
  Mainpas.Memo1.Lines.Add('- - - - - - - - - - -Send- - - - - - - - - - - - -');
  Mainpas.Memo1.Lines.Add('');    
end;

Procedure TMainpas.Starthook;
var
  ModuleHandle:   THandle;
  TmpWndHandle:   THandle;
begin
  TmpWndHandle   :=   0;
  TmpWndHandle   :=   FindWindow(nil,   Pchar(setpas.Edit1.Text));
  if   not   isWindow(TmpWndHandle)   then
    begin
      mainpas.Memo1.Lines.Add('Windows not Find!');
      exit;
    end;
  ModuleHandle   :=   LoadLibrary('Hook.dll');
  @InstallHook   :=   GetProcAddress(ModuleHandle,   'InstallHook');
  @UnHook   :=   GetProcAddress(ModuleHandle,   'UnHook');

  if  InstallHook(FindWindow(nil, Pchar(setpas.Edit1.Text)))    then
  mainpas.Memo1.Lines.Add('Hook  init OK');
  Hooked := True;
end;

Procedure tMainpas.StartMap;
begin
  MapHandle := OpenFileMapping(FILE_MAP_WRITE,
    False,
    HOOK_MEM_FILENAME);
  if MapHandle = 0 then
  begin
    mainpas.Memo1.Lines.Add('Map Not init!');
    exit;
  end;        //Shared: PShared;
  pShare := PShared(MapViewOfFile(MapHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0));
  if pShare = nil then
  begin
    CloseHandle(MapHandle);
    mainpas.Memo1.Lines.Add('Can''t View Memory Map!');
    exit;
  end;
  FillChar(pShare^, SizeOf(TShared), 0);
  mainpas.Memo1.Lines.Add('Map Init OK!');
end;


procedure TMainpas.Set1Click(Sender: TObject);
begin
  Setpas.ShowModal;
end;

procedure TMainpas.Exit1Click(Sender: TObject);
begin
  //UnHook ;
  if Hooked then
    UnHook;
  CloseHandle(MapHandle);
  Close;
end;

procedure TMainpas.Start1Click(Sender: TObject);
begin
  Starthook  ;
  //Sleep(2000);
  StartMap;
end;

procedure TMainpas.Memo1Change(Sender: TObject);
begin
  if Memo1.Lines.Count >= strtoint(setpas.Edit2.Text) then
    memo1.Clear;
end;

procedure TMainpas.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Hooked then
    UnHook;
  CloseHandle(MapHandle);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -