分类
版本:大小:115M
类别:游戏工具系统:WinAll,WinXP,Win7,Win8,Win10

游戏封包截取工具是一款非常好用的游戏工具,功能强大,使用方便,有需要的朋友不要错过了,还等什么,快约上你的小伙伴,一起来绿色资源网下载使用!
对游戏数据包进行抓取截图,有序要的朋友可以看看。截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。
首先
我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookex的声明如下:
HHOOK SetWindowsHookEx(
int idHook, / hook type
HOOKPROC lpfn, / hook procedure
HINSTANCE hMod, / handle to application instance
DWORD dwThreadId / thread identifier
);
具体的参数含义可以翻阅msdn,没有msdn可谓寸步难行。
这里Hook本身的功能并不重要,我们使用它的目的仅仅只是为了能够让Windows把我们的代码植入别的进程里去。hook Type我们任选一种即可,只要保证是目标程序肯定会调用到就行,这里我用的是WH_CALLWNDPROC。lpfn和hMod分别指向我们的钩子代码及其所在的dll,dwThreadId设为0,表示对所有系统内的线程都挂上这样一个hook,这样我们才能把代码放到别的进程里去。
之后,我们的代码就已经进入了系统内的所有进程空间了。必须注意的是,我们只需要截获我们所关心的目标程序的调用,因此还必须区分一下进程号。我们自己的钩子函数中,第一次运行将进行最重要的API重定向的工作。也就是通过将所需要截获的API的开头几个字节改为一个跳转指令,使其跳转到我们的API中来。这是最关键的部分。这里我想截三个调用,ws2_32.dll中的send和recv、user32.dll中的GetMessageA。
DWORD dwCurrentPID = 0;
HHOOK hOldHook = NULL;
DWORD pSend = 0;
DWORD pRecv = 0;
GETMESSAGE pGetMessage = NULL;
BYTE btNewBytes[8] = { 0x0B8, 0x0, 0x0, 0x40, 0x0, 0x0FF, 0x0E0, 0 };
DWORD dwOldBytes[3][2];
HANDLE hDebug = INVALID_HANDLE_value;
LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam )
{
DWORD dwSize;
DWORD dwPIDWatched;
HMODULE hLib;
if( dwCurrentPID == 0 )
{
dwCurrentPID = GetcurrentProcessId();
HWND hwndMainHook;
hwndMainHook = ::FindWindow( 0, "MainHook" );
dwPIDWatched = ::SendMessage( hwndMainHook, (WM_USER+100), 0, 0 );
hOldHook = (HHOOK)::SendMessage( hwndMainHook, (WM_USER+101), 0, 0 );
if( dwCurrentPID == dwPIDWatched )
{
hLib = LoadLibrary( "ws2_32.dll" );
pSend = (DWORD)GetProcAddress( hLib, "send" );
pRecv = (DWORD)GetProcAddress( hLib, "recv" );
::ReadProcessMemory( INVALID_HANDLE_value, (void *)pSend, (void *)dwOldBytes[0], sizeof(DWORD)*2, dwSize );
*(DWORD *)( btNewBytes + 1 ) = (DWORD)new_send;
::WriteProcessMemory( INVALID_HANDLE_value, (void *)pSend, (void *)btNewBytes, sizeof(DWORD)*2, dwSize );
::ReadProcessMemory( INVALID_HANDLE_value, (void *)pRecv, (void *)dwOldBytes[1], sizeof(DWORD)*2, dwSize );
*(DWORD *)( btNewBytes + 1 ) = (DWORD)new_recv;
::WriteProcessMemory( INVALID_HANDLE_value, (void *)pRecv, (void *)btNewBytes, sizeof(DWORD)*2, dwSize );
hLib = LoadLibrary( "user32.dll" );
pGetMessage = (GETMESSAGE)GetProcAddress( hLib, "GetMessageA" );
::ReadProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)dwOldBytes[2], sizeof(DWORD)*2, dwSize );
*(DWORD *)( btNewBytes + 1 ) = (DWORD)new_GetMessage;
::WriteProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)btNewBytes, sizeof(DWORD)*2, dwSize );
hDebug = ::CreateFile( "C:Trace.log", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
if( hOldHook != NULL )
return CallNextHookEx( hOldHook, nCode, wParam, lParam );
return 0;
上面的钩子函数,只有第一次运行时有用,就是把三个函数的首8字节修改一下(实际上只需要7个)。btNewBytes中的指令实际就是
mov eax, 0x400000
jmp eax
这里的0x400000就是新的函数的地址,比如new_recv/new_send/new_GetMessage,此时,偷梁换柱已经完成。再看看我们的函数中都干了些什么。以GetMessageA为例:
BOOL _stdcall new_GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax )
DWORD dwSize;
char szTemp[256];
BOOL r = false;
/Watch here before it's executed.
sprintf( szTemp, "Before GetMessage : HWND 0x%8.8X, msgMin 0x%8.8X, msgMax 0x%8.8x ", hWnd, wMsgFilterMin, wMsgFilterMax );
::WriteFile( hDebug, szTemp, strlen(szTemp), dwSize, 0 );
/Watch over
/ restore it at first
::WriteProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)dwOldBytes[2], sizeof(DWORD)*2, dwSize );
/ execute it
r = pGetMessage( lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax );
/ hook it again
*(DWORD *)( btNewBytes + 1 ) = (DWORD)new_GetMessage;
::WriteProcessMemory( INVALID_HANDLE_value, (void *)pGetMessage, (void *)btNewBytes, sizeof(DWORD)*2, dwSize );
/Watch here after it's executed
sprintf( szTemp, "Result of GetMessage is %d.", r );
::WriteFile( hDebug, szTemp, strlen( szTemp ), dwSize, 0 );
if( r )
{
sprintf( szTemp, "Msg : HWND 0x%8.8X, MSG 0x%8.8x, wParam 0x%8.8X, lParam 0x%8.8XTime 0x%8.8X, X %d, Y %d",
lpMsg-hwnd, lpMsg-message,
lpMsg-wParam, lpMsg-lParam, lpMsg-time,
lpMsg-pt.x, lpMsg-pt.y );
::WriteFile( hDebug, szTemp, strlen( szTemp ), dwSize, 0 );
}
strcpy( szTemp, "" );
::WriteFile( hDebug, szTemp, strlen( szTemp ), dwSize, 0 );
/Watch over
return r;
先将截获下来的参数,写入到一个log文件中,以便分析。然后恢复原先保留下来的GetMessageA的首8字节,然后执行真正的GetMessageA调用,完毕后再将执行结果也写入log文件,然后将GetMessageA的执行结果返回给调用者。
整个截获的过程就是这样。你可以把其中的写log部分改成你自己想要的操作。这里有个不足的地方是,截获动作是不能够并发进行的,如果目标进程是多线程的,就会有问题。解决办法是,可以在每次new_GetMessage中加入一个CriticalSection的锁和解锁,以使调用变为串行进行,但这个我没有试验过。
网络游戏的封包技术是大多数编程爱好者都比较关注的关注的问题之一,在这一篇里就让我们一起研究一下这一个问题吧。
别看这是封包这一问题,但是涉及的技术范围很广范,实现的方式也很多(比如说APIHOOK,VXD,Winsock2都可以实现),在这里我们不可能每种技术和方法都涉及,所以我在这里以Winsock2技术作详细讲解,就算作抛砖引玉。
由于大多数读者对封包类编程不是很了解,我在这里就简单介绍一下相关知识:
APIHooK:
由于Windows的把内核提供的功能都封装到API里面,所以大家要实现功能就必须通过API,换句话说就是我们要想捕获数据封包,就必须先要得知道并且捕获这个API,从API里面得到封包信息。
VXD:
直接通过控制VXD驱动程序来实现封包信息的捕获,不过VXD只能用于win9X。
winsock2:
winsock是Windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口,winsock2是winsock2.0提供的服务提供者接口,但只能在win2000下用。
好了,我们开始进入winsock2封包式编程吧。
在封包编程里面我准备分两个步骤对大家进行讲解:1、封包的捕获,2、封包的发送。
首先我们要实现的是封包的捕获:
Delphi的封装的winsock是1.0版的,很自然winsock2就用不成。如果要使用winsock2我们要对winsock2在Delphi里面做一个接口,才可以使用winsock2。
1、如何做winsock2的接口?
1)我们要先定义winsock2.0所用得到的类型,在这里我们以WSA_DATA类型做示范,大家可以举一仿三的来实现winsock2其他类型的封装。
我们要知道WSA_DATA类型会被用于WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer;,大家会发现WSData是引用参数,在传入参数时传的是变量的地址,所以我们对WSA_DATA做以下封装:
const
WSADESCRIPTION_LEN = 256;
WSASYS_STATUS_LEN = 128;
type
PWSA_DATA = ^TWSA_DATA;
WSA_DATA = record
wVersion: Word;
wHighVersion: Word;
szDescription: array[0..WSADESCRIPTION_LEN] of Char;
dnf无限多开器下载v1.0 正式版游戏工具57M
下载
彩虹文字游戏制作精灵免费版下载v1.16 电脑版游戏工具27M
下载
龙之矛修改器最新版下载游戏工具50M
下载
遇见造物主修改器电脑版下载v1.0游戏工具52M
下载
战地1942地图编辑器下载v2.1 官方版游戏工具176M
下载
明星三缺一2005完美硬盘版下载游戏工具155M
下载
游戏全自动翻译机下载v2.6 正式版游戏工具171M
下载
4399洛克王国旋风辅助最新版下载v51.9 官方版游戏工具80M
下载
小鸡模拟器Pc版下载v0.0.30游戏工具159M
下载
偶久官方注入器(魔兽争霸3修改器)下载v4.0 官方最新版游戏工具108M
下载
魔兽世界模型提取工具下载v1.0 绿色免费版游戏工具130M
下载
keyboardshield(改键工具)下载v1.7 绿色免费版游戏工具111M
下载
懿菲云LOL战斗力隐藏分查询器下载v1.0 免费版游戏工具190M
下载
极云普惠云电脑pc版下载v76 官方免费版游戏工具62M
下载
nes游戏打包汉化版下载共262款中文版游戏工具141M
下载
dnf掉线数据清理器下载v2017 绿色版游戏工具27M
下载
xpadder for win10下载v2015.1.1版 附使用教程游戏工具185M
下载
lol下等马插件PC版下载v2023.03.07游戏工具191M
下载
lol FPS优化神器下载v8.6 绿色版游戏工具39M
下载
魔兽世界大脚怀旧服插件包下载v2.5.2.122 最新绿色版游戏工具125M
下载
蜘蛛侠破碎维度下载中文版游戏工具92M
下载
疯狂坦克2电脑版下载单机版游戏工具34M
下载
eve舰船装配模拟器eve fitting tool下载v2.18.1 中文最新版游戏工具67M
下载
usbxtafgui chn.exe下载v44 免费中文版游戏工具53M
下载
dnf npc好感度查询器下载v1.0 绿色版游戏工具81M
下载
帮零点助手下载v1.0 绿色版游戏工具107M
下载
重启世界编辑器官方(reworld)下载v1.0.1 pc版游戏工具108M
下载
microsoft games for windows live下载v3.5 绿色版游戏工具122M
下载
辐射3WIN10可玩GFWL工具下载免费版游戏工具90M
下载
cf小苹果抽奖助手官方版下载v55.0x 正式版游戏工具56M
下载
英雄联盟lcu客户端下载v1.0.0 官方最新版游戏工具117M
下载
q炫舞下载器下载v4.1.7 精简客户端版游戏工具48M
下载
富甲天下6中文版下载最新版游戏工具164M
下载
龙珠激斗下载v2.8 flash版游戏工具101M
下载
多玩英雄联盟游戏修复工具下载v1.3 绿色版游戏工具125M
下载
cs乡巴佬登陆器下载v7.2官方免费版游戏工具22M
下载
BattleLAN(局域网游戏联机工具)下载v0.5 中文版游戏工具179M
下载
skplayer(反恐精英cs播放器)下载v1.1 免费汉化版游戏工具129M
下载
fraps中文修改版下载v3.5.99 无限录制版游戏工具35M
下载
发QQ红包恶搞好友链接下载v2015.7.9 最新版游戏工具52M
下载点击查看更多
LlOL隐藏分查询器下载v1.4.0123 绿色版游戏工具30M
下载
cf小苹果抽奖助手官方版下载v55.0x 正式版游戏工具56M
下载
三国志曹操传通用调试器下载v10.2.16 最新版游戏工具189M
下载
魔兽世界模型提取工具下载v1.0 绿色免费版游戏工具130M
下载
英雄联盟假投降白色字体工具下载免费版游戏工具180M
下载
360游戏优化工具独立版下载v1.6 提取版游戏工具111M
下载
魔兽世界燃烧的远征怀旧服插件下载v2.5.1.100 绿色版游戏工具74M
下载
键盘修复工具最新版下载v0.0.1游戏工具120M
下载
彩虹文字游戏制作精灵免费版下载v1.16 电脑版游戏工具27M
下载
三国志13图片声音导入工具下载v1.7 绿色版游戏工具138M
下载
陕西花花牌游戏下载v5.1.0 官方版游戏工具188M
下载
我的世界地球都市服务器客户端下载v1.0 官方版游戏工具93M
下载
战场的赋格曲2修改器最新版下载v1.0游戏工具129M
下载
pkhex最新版(宝可梦存档修改器)下载v21.10.01 官方版游戏工具124M
下载
1357wan网页游戏盒子下载v1.0 官方版游戏工具78M
下载
eve舰船装配模拟器eve fitting tool下载v2.18.1 中文最新版游戏工具67M
下载
富甲天下6中文版下载最新版游戏工具164M
下载
ContraDirector(魂斗罗编辑器)下载绿色版-绿色资源网游戏工具43M
下载
农场水果连连看2(Farm Connect 2)下载绿色版游戏工具140M
下载
多玩英雄联盟游戏修复工具下载v1.3 绿色版游戏工具125M
下载
大富翁3汉化版游戏下载中文版游戏工具174M
下载
仙剑奇侠传窗口化工具下载最新版游戏工具60M
下载
幻想神域专属下载器下载v6.0.1.6 官方版游戏工具77M
下载
天涯明月刀MD5校验器下载v1.0.1 官方版游戏工具121M
下载
多玩LOL盒子皮肤解除限制工具下载v2.0 最新绿色版游戏工具72M
下载
毁灭之王暗黑模式mod转换工具下载v2017 最新版游戏工具167M
下载
神途万能登录器1.5下载最新免费版游戏工具183M
下载
三国志13新武将登陆器下载v5 最终版游戏工具69M
下载
无敌边锋记牌辅助软件下载v1.76 官方绿色版游戏工具41M
下载
魔兽orpg地图登陆器下载v1.2 官方最新版游戏工具105M
下载
小百霸王游戏合集800合1下载游戏工具150M
下载
usbxtafgui chn.exe下载v44 免费中文版游戏工具53M
下载
小鸡模拟器Pc版下载v0.0.30游戏工具159M
下载
PMocketMine游戏工具31M
下载
Razer Cortex(雷游游戏启动器)下载v5.1.31.0 官方版游戏工具185M
下载
小鸡模拟器手柄驱动安装包下载v6.2.29.0游戏工具122M
下载
星球大战前线语言切换工具下载绿色版-绿色资源网游戏工具196M
下载
我的世界传奇修改器免费下载v1.0游戏工具166M
下载
景德镇同城游戏大厅下载2015 官方最新版游戏工具154M
下载
魂斗罗4铁血兵团下载完整版_附游戏秘籍游戏工具25M
下载点击查看更多