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

📄 netdata.pas

📁 神迹监视器1.3源代码 神迹监视器1.3源代码
💻 PAS
字号:
unit NetData;
{---------无影开发小组敬告:-------------------}
{        外挂研究无罪,开放源码有理!           }
{ 希望以此献给各位想研究外挂的朋友一窥外挂之容 }
{    本代码只供研究之用,不得用于非法用途      }
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls,GameCode,WinSock2,FilterForm;


type
  TFrmNetData = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    GBRecv: TGroupBox;
    Edit1: TEdit;
    CBSend: TCheckBox;
    CBRecv: TCheckBox;
    LvRecv: TListView;
    BtnSendClear: TButton;
    BtnRecvClear: TButton;
    TabSheet2: TTabSheet;
    GBSend: TGroupBox;
    LvSend: TListView;
    Label1: TLabel;
    EditPN: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    BtnMySend: TButton;
    EdtTagFlag: TEdit;
    Label3: TLabel;
    CBTagFlag: TCheckBox;
    BtnFilter: TButton;
    CBwCmd: TCheckBox;
    SaveSend: TCheckBox;
    SaveRecv: TCheckBox;
    Label4: TLabel;
    Edit3: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure BtnSendClearClick(Sender: TObject);
    procedure BtnMySendClick(Sender: TObject);
    procedure BtnRecvClearClick(Sender: TObject);
    procedure BtnFilterClick(Sender: TObject);
    procedure LvSendSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure LvRecvSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
  private
    { Private declarations }
  public
    procedure AddSendData(buf:PChar;len:Integer);
    procedure AddRecvData(buf:PChar;len:Integer;op:Char);
    procedure AddPN(PN:byte);
    function DataFilter1(data:PChar):Integer;
    function DataFilter2(data:PChar):Integer;
    function SaveLog(LogStr:string):integer;
    { Public declarations }
  end;

function MyWSASend(SendBuf:PChar;SendLen:Integer):Integer;

var
  FrmNetData: TFrmNetData;
  SendNum:integer;
  RecvNum:integer;
  GameSocket:TSocket=0;//socket保存
  MyPN:char='0';  //send封包序号标记
implementation

{$R *.dfm}

function TFrmNetData.DataFilter1(data:PChar):Integer;
begin
 DataFilter1:=0;
 if strcomp(PChar(StrToASCII(@data[0],4)),PChar(EdtTagFlag.Text))=0 then
  begin
   DataFilter1:=1;
  end;
end;
 //log记录
 function TFrmNetData.SaveLog(LogStr:String):integer;
var
   Log:textfile;
begin
   assignfile(Log,edit3.Text);
   if fileexists(edit3.Text)=false then rewrite(Log)
   else append(Log);
   Writeln(Log,LogStr);
   closefile(Log);
end;

function TFrmNetData.DataFilter2(data:PChar):Integer;
var
 i:integer;
 Tag:string;
begin
 DataFilter2:=1;
 Tag:=StrToASCII(@data[4],2);
 DBGOut('Tag=%s',[Tag]);
 if FrmFilter1.RBOut.Checked=true then
  begin
   DataFilter2:=1;
   for i:=0 to FrmFilter1.LBOut.Items.Count-1 do
    begin
     if Tag=FrmFilter1.LBOut.Items[i] then
      begin
       DataFilter2:=0;
       exit;
      end;
    end;
  end;
 if FrmFilter1.RBIn.Checked=true then
  begin
   DataFilter2:=0;
   for i:=0 to FrmFilter1.LBIn.Items.Count-1 do
    begin
     if Tag=FrmFilter1.LBIn.Items[i] then
      begin
       DataFilter2:=1;
       exit;
      end;
    end;
  end;
end;

//----------------------------------------------------------
function MyWSASend(Sendbuf:PChar;SendLen:Integer):Integer;
var
 Buffers : WSABUF;
 NumberOfSent:dword;
begin
 Buffers.buf:=Sendbuf;
 Buffers.len:=SendLen;
 Buffers.buf[0]:='#';
 Buffers.buf[1]:=MyPN;
 Buffers.buf[SendLen-1]:='!';
 MyWSASend:=WSASend(GameSocket,@Buffers,1,NumberOfSent,0,nil,nil);
end;
//----------------------------------------------------------

procedure TFrmNetData.AddPN(PN:byte);
begin
 EditPN.Text:=IntToStr(PN);
end;
procedure TFrmNetData.FormCreate(Sender: TObject);
begin
SendNum:=0;
RecvNum:=0;
end;
procedure TFrmNetData.AddSendData(buf:PChar;len:Integer);
var
   LogStr:String;
begin
 if CBSend.Checked=false then
  exit;
  //在Send表里添加东西
 With LvSend.Items.add do
  begin
    Caption:=IntToStr(SendNum);//添加包序号
    Inc(SendNum);
    Subitems.add(StrToASCII(@buf[0],4));//添加dowrd
    subitems.add(StrToASCII(@buf[4],2));//添加ctrlword
    subitems.add(StrToASCII(@buf[6],2));//添加w1
    subitems.add(StrToASCII(@buf[8],2));//添加w2
    subitems.add(StrToASCII(@buf[10],2));//添加w3
    subitems.Add(PChar(@buf[12]));//添加char
    subitems.add(StrToASCII(@buf[12],len-12)); //添加asc char
   end;
   //保存SEND数据
  if  SaveSend.Checked then
  LogStr:=TimeToStr(time)+'  '+'Send'+'  '+StrToASCII(@buf[0],4)+' '+StrToASCII(@buf[4],2)+' '+StrToASCII(@buf[6],2)+'  '+StrToASCII(@buf[8],2)+'  '+StrToASCII(@buf[10],2)+'  '+PChar(@buf[12])+'  '+StrToASCII(@buf[12],len-12);
  SaveLog(LogStr);//保存到PACKLOG文件
end;

procedure TFrmNetData.AddRecvData(buf:PChar;len:Integer;op:Char);
var
  LogStr:String;
begin
 if CBRecv.Checked=false then
  exit;
  //dwflag过滤
 if (CBTagFlag.Checked=true) and (DataFilter1(buf)=0) then
  exit;
  //wcmd过滤
 if (CBwCmd.Checked=true) and (DataFilter2(buf)=0) then
  exit;
//在Send表里添加东西
 if ((op='#') or (op='*')) then
  begin
   With LvRecv.Items.add do
    begin
     Caption:=op+IntToStr(RecvNum);//添加包序号
     Inc(RecvNum);
     Subitems.add(StrToASCII(@buf[0],4));//添加dowrd
     subitems.add(StrToASCII(@buf[4],2));//添加ctrlword
     subitems.add(StrToASCII(@buf[6],2));//添加w1
     subitems.add(StrToASCII(@buf[8],2));//添加w2
     subitems.add(StrToASCII(@buf[10],2));//添加w3
     subitems.Add(PChar(@buf[12]));//添加char
     subitems.add(StrToASCII(@buf[12],len-12)); //添加asc char
    end;
   end
 else
  begin
   With LvRecv.Items.add do
    begin
     Caption:=op+IntToStr(RecvNum);
     Inc(RecvNum);
     Subitems.add('--');//添加dowrd
     subitems.add('--');//添加ctrlword
     subitems.add('--');//添加w1
     subitems.add('--');//添加w2
     subitems.add('--');//添加w3
     subitems.add(PChar(@buf[0]));
     subitems.add(StrToASCII(@buf[0],len));
   end;
  end;
  //包存RECV数据
   if  SaveRecv.Checked then
  LogStr:=TimeToStr(time)+'  '+'Recv'+'  '+StrToASCII(@buf[0],4)+' '+StrToASCII(@buf[4],2)+' '+StrToASCII(@buf[6],2)+'  '+StrToASCII(@buf[8],2)+'  '+StrToASCII(@buf[10],2)+'  '+PChar(@buf[12])+'  '+StrToASCII(@buf[12],len-12);
  SaveLog(LogStr); //保存到PACKLOG文件
end;

procedure TFrmNetData.BtnSendClearClick(Sender: TObject);
begin
 LvSend.Items.Clear;
end;

procedure TFrmNetData.BtnMySendClick(Sender: TObject);
var
 buf:array[0..1000] of char;
 Text:array[0..1000] of char;
 TLen:Integer;
 Len:Integer;
begin
 TLen:=(Length(Edit2.Text)) div 2;
 buf[0]:='#';
 buf[1]:='0';
 ASCStrToPChar(Edit2.Text,@Text[0]);
 Len:=EncodeA(@Text[0],@buf[2],TLen);
 if GameSocket<>0 then
  MyWSASend(@buf[0],len+3)
 else
  ShowMessage('Game socket error!');
end;

procedure TFrmNetData.BtnRecvClearClick(Sender: TObject);
begin
 LvRecv.Items.Clear;
end;

procedure TFrmNetData.BtnFilterClick(Sender: TObject);
begin
 FrmFilter1.Show;
end;

procedure TFrmNetData.LvSendSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
    edit1.Text:=item.subitems.Text;//取得数据内容
end;

procedure TFrmNetData.LvRecvSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
    edit1.Text:=item.subitems.Text;//取得数据内容
end;

end.

⌨️ 快捷键说明

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