返回列表 发帖

大家好我是新来的 小妹想问一些封包高手请进

请问现在的大多数网游 我能用WPE7。0截取封包但是 我怎么 和数据同步 谁能详细教教我在下谢谢了

大家好我是新来的 小妹想问一些封包高手请进

没做封包~~你搜索过了么??

TOP

大家好我是新来的 小妹想问一些封包高手请进

探索了 这是4次攻击的结果 第一次 是10HP 5HP 5HP 10HP你帮我看看规律23 32 6B 6B 47 7A 6B 3C 42 79 6B 6B 7A 5A 6B 77 48 77 21
23 33 6B 6B 47 7A 6B 3E 42 7A 6B 6B 7A 5A 6B 7A 48 78 21
23 34 77 79 66 77 6C 3C 42 78 6D 6B 73 5A 6B 78 48 78 21
23 35 73 5E 66 72 6C 3C 42 78 6D 6B 79 5A 6B 79 48 77 21
23 36 73 48 65 6E 6C 3C 42 78 6D 6B 5D 5A 6B 5B 48 7A 21

TOP

大家好我是新来的 小妹想问一些封包高手请进

没研究过这个,真的不懂~~看看其他人有懂的么

TOP

大家好我是新来的 小妹想问一些封包高手请进

好饿麻烦你了 你有朋友知道也帮我问问

TOP

大家好我是新来的 小妹想问一些封包高手请进

最好是自己实现一个代理的DLL.用HOOK API的方法
  
HOOK.DLL代码:
library Hook;
uses
SysUtils,
windows,
Messages,
APIHook in ’APIHook.pas’;
type
PData = ^TData;
TData = record
Hook: THandle;
Hooked: Boolean;
end;
var
DLLData: PData;
{------------------------------------}
{过程名:HookProc
{过程功能:HOOK过程
{过程参数:nCode, wParam, lParam消息的相
{ 关参数
{------------------------------------}
procedure HookProc(nCode, wParam, lParam: LongWORD);stdcall;
begin
if not DLLData^.Hooked then
begin
HookAPI;
DLLData^.Hooked := True;
end;
//调用下一个Hook
CallNextHookEx(DLLData^.Hook, nCode, wParam, lParam);
end;

{------------------------------------}
{函数名:InstallHook
{函数功能:在指定窗口上安装HOOK
{函数参数:sWindow:要安装HOOK的窗口
{返回值:成功返回TRUE,失败返回FALSE
{------------------------------------}
function InstallHook(SWindow: LongWORD):Boolean;stdcall;
var
ThreadID: LongWORD;
begin
Result := False;
DLLData^.Hook := 0;
ThreadID := GetWindowThreadProcessId(sWindow, nil);
//给指定窗口挂上钩子
DLLData^.Hook := SetWindowsHookEx(WH_GETMESSAGE, @HookProc, Hinstance, ThreadID);
if DLLData^.Hook > 0 then
Result := True //是否成功HOOK
else
exit;
end;
{------------------------------------}
{过程名:UnHook
{过程功能:卸载HOOK
{过程参数:无
{------------------------------------}
procedure UnHook;stdcall;
begin
UnHookAPI;
//卸载Hook
UnhookWindowsHookEx(DLLData^.Hook);
end;
{------------------------------------}
{过程名:DLL入口函数
{过程功能:进行DLL初始化,释放等
{过程参数:DLL状态
{------------------------------------}
procedure MyDLLHandler(Reason: Integer);
var
FHandle: LongWORD;
begin
case Reason of
DLL_PROCESS_ATTACH:
begin //建立文件映射,以实现DLL中的全局变量
FHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, $ffff, ’MYDLLDATA’);
if FHandle = 0 then
if GetLastError = ERROR_ALREADY_EXISTS then
begin
FHandle := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, ’MYDLLDATA’);
if FHandle = 0 then Exit;
end else Exit;
DLLData := MapViewOfFile(FHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if DLLData = nil then
CloseHandle(FHandle);
end;
DLL_PROCESS_DETACH:
begin
if Assigned(DLLData) then
begin
UnmapViewOfFile(DLLData);
DLLData := nil;
end;
end;
end;
end;
{$R *.res}
exports
InstallHook, UnHook, HookProc;
begin
DLLProc := @MyDLLHandler;
MyDLLhandler(DLL_PROCESS_ATTACH);
DLLData^.Hooked := False;
end.
----------------------------------------------------------------------------------------
APIHook.Pas的代码:
unit APIHook;
interface
uses
SysUtils,
Windows, WinSock;
type
//要HOOK的API函数定义
TSockProc = function (s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
PJmpCode = ^TJmpCode;
TJmpCode = packed record
JmpCode: BYTE;
Address: TSockProc;
MovEAX: Array [0..2] of BYTE;
end;
//--------------------函数声明---------------------------
procedure HookAPI;
procedure UnHookAPI;
var
OldSend, OldRecv: TSockProc; //原来的API地址
JmpCode: TJmpCode;
OldProc: array [0..1] of TJmpCode;
AddSend, AddRecv: pointer; //API地址
TmpJmp: TJmpCode;
ProcessHandle: THandle;
implementation
{---------------------------------------}
{函数功能:Send函数的HOOK
{函数参数:同Send
{函数返回值:integer
{---------------------------------------}
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行发送的数据处理
MessageBeep(1000); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;
{---------------------------------------}
{函数功能:Recv函数的HOOK
{函数参数:同Recv
{函数返回值:integer
{---------------------------------------}
function MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行接收的数据处理
MessageBeep(1000); //简单的响一声
//调用直正的Recv函数
WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
Result := OldRecv(S, Buf, len, flags);
JmpCode.Address := @MyRecv;
WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);
end;
{------------------------------------}
{过程功能:HookAPI
{过程参数:无
{------------------------------------}
procedure HookAPI;
var
DLLModule: THandle;
dwSize: cardinal;
begin
ProcessHandle := GetCurrentProcess;
DLLModule := LoadLibrary(’ws2_32.dll’);  
AddSend := GetProcAddress(DLLModule, ’send’); //取得API地址
AddRecv := GetProcAddress(DLLModule, ’recv’);
JmpCode.JmpCode := $B8;
JmpCode.MovEAX[0] := $FF;
JmpCode.MovEAX[1] := $E0;
JmpCode.MovEAX[2] := 0;
ReadProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize); //修改Send入口
ReadProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
JmpCode.Address := @MyRecv;
WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize); //修改Recv入口
OldSend := AddSend;
OldRecv := AddRecv;
end;
{------------------------------------}
{过程功能:取消HOOKAPI
{过程参数:无
{------------------------------------}
procedure UnHookAPI;
var
dwSize: Cardinal;
begin
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
end;
end.
---------------------------------------------------------------------------------------------
编译这个DLL后,再新建一个程序调用这个DLL的InstallHook并传入目标进程的主窗口句柄就可:
unit fmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
InstallHook: function (SWindow: THandle):Boolean;stdcall;
UnHook: procedure;stdcall;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
ModuleHandle: THandle;
TmpWndHandle: THandle;
begin
TmpWndHandle := 0;
TmpWndHandle := FindWindow(nil, ’目标窗口的标题’);
if not isWindow(TmpWndHandle) then
begin
MessageBox(self.Handle, ’没有找到窗口’, ’!!!’, MB_OK);
exit;
end;
ModuleHandle := LoadLibrary(’Hook.dll’);
@InstallHook := GetProcAddress(ModuleHandle, ’InstallHook’);
@UnHook := GetProcAddress(ModuleHandle, ’UnHook’);
if InstallHook(FindWindow(nil, ’Untitled’)) then
ShowMessage(’Hook OK’);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
UnHook
end;
end.

 

TOP

大家好我是新来的 小妹想问一些封包高手请进

如果是用WPE截获封包后,s框后面的数字是发送封包的内容,r框后面的数字是接收封包的内容,以16进制数和acsII两种方式体现
下面就要进行过滤

TOP

大家好我是新来的 小妹想问一些封包高手请进

然后你使用Filter 执行滤镜功能,把截获到的封包中的数据进行修改,然后将修改后的数据传输到服务器,达到欺骗服务器的目的
双击Filter打开
Normal是一般模式
如果你所修改的数据在数据包中的位置是固定的,可以用一般模式
Advanced 是递进模式
如果你所修改的数据在数据包中的位置不是固定的,只能用递进模式
Form the beginning of the packet
从截获到的封包的第一个位置开始替换
Form the position of the chain found
从数值被发现的位置开始替换连续数值
这最后两个只有选了2才能选择

TOP

大家好我是新来的 小妹想问一些封包高手请进

[这个贴子最后由漫天樱舞在 2005/05/03 08:29pm 第 1 次编辑]

你在三楼说的情况要用到ADVANCED MODE模式
因为不是在相同位置封包出现的
然后在修改列相对应位置开始递换

TOP

大家好我是新来的 小妹想问一些封包高手请进

听不懂。。。。。

TOP

大家好我是新来的 小妹想问一些封包高手请进

就算你能截获封包也不太可能修改发送到服务器上`~
现在的网游服务器对数据包检查异常严格`
要不然一人一个~不是乱了~

TOP

大家好我是新来的 小妹想问一些封包高手请进

哎谁会咙 能成功就教教我吧

TOP

返回列表 回复 发帖