日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于魔兽T人和延迟的恶劣挂原理及实现

發布時間:2023/12/8 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于魔兽T人和延迟的恶劣挂原理及实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現如今在平臺打魔獸,全圖泛濫,基本上每一把都有好幾個開圖的,而且好多主機開延遲掛 T人掛,非常惡劣的行為,打不過開掛T人....

從魔獸機制上講,是沒辦法防止主機踢人的,你跟主機連接,主機就可以獲取你的IP地址和端口,斷開你連接沒辦法。

我對其中踢人和延遲比較感興趣,所以自己編寫著試了試,完全乃殺人放火之必備利器!

延遲掛和T人掛原理都差不多,延遲就是在IP數據包發送之前,加個延遲函數sleep(),然后再把數據包返回給你,

這樣就造成你比如釋放技能,要過好久才有反應,如果延遲比較高,則直接掉線;

而T人則直接斷開你的連接,就造成掉線了。

魔獸通過winsocket 傳輸數據,使用的是 wsock32.dll 我們可以HOOK "send" 和 "sendto",在WSPRecv()上做手腳;

比如要延遲玩家,可以Sleep()幾秒后再把數據發送出去。

int WSPAPI WSPRecv( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, LPWSATHREADID lpThreadId, LPINT lpErrno ) { int iError; int iRet; //判斷如果開啟全部延遲 則全部延遲 if(g_AllToBlock) { Sleep(g_DelaySec); } else if(g_IsDelay) { //s_Socket里面存的是玩家的Socket 判斷如果不為null 則延遲 for (int i=0;i<10;i++) { if(s_Socket[i]!=NULL && s==s_Socket[i]) Sleep(g_DelaySec); } } return g_NextProcTable.lpWSPRecv(s, lpBuffers, dwBufferCount, lpNumberOfBytesRecvd, lpFlags, lpOverlapped , lpCompletionRoutine, lpThreadId, lpErrno); }

然后我們可以攔截WSPSend()函數來得到聊天信息,判斷是否開啟踢人和延遲;

int WSPAPI WSPSend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno) {unsigned char * bp=(unsigned char *)lpBuffers->buf;DWORD i=0;BOOL flag=TRUE;u_long bufferlen=lpBuffers->len;int iError;if(*(bp+i) == 0xf7){if(*(bp+i+1) == 0x0F){ if(*(bp+i+12)=='-' ){if(*(bp+i+13)=='d' && *(bp+i+14)=='e'&& *(bp+i+15)=='l' && *(bp+i+16)=='a' && *(bp+i+16)=='y'){ g_DelaySec= 2000;//延遲2000毫秒AddSocket(s); //把該玩家Socket存到數組里面g_IsDelay=TRUE; }else if( *(bp+i+13)=='a' && *(bp+i+14)=='g'){ g_DelaySec =2000;g_AllToBlock=TRUE; }return 0;}}} return g_NextProcTable.lpWSPSend(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, lpOverlapped, lpCompletionRoutine, lpThreadId, lpErrno); }

我在BreezeMH V2.5的基礎上編寫了延遲功能,測試開啟延遲,對方根本沒辦法玩!

  聊天輸入-ag延遲全部玩家 連續打幾次 -ag 全部掉線? 加分或VS顯示‘游戲由于網絡異常結束’

  私聊-laji 延遲對方? 延遲毫秒數可以在配置文件修改 點擊托盤的M圖標打開配置文件 修改默認延遲毫秒? 如果需要對方掉線 請在配置文件把默認延遲毫秒設置高點

  隨便找個人私聊 -jia 增加延遲 -jian 減少延遲? 每次加減延遲毫秒可以在配置文件修改

  聊天輸入-as 取消所有延遲? 為了防止打錯命令 所有“-”開頭的命令對方都看不到

以下是軟件的下載地址:
http://files.cnblogs.com/intcry/%E4%BC%98%E5%8C%96%E7%89%88.rar

?

此軟件僅供學習交流使用

?

轉載于:https://www.cnblogs.com/intcry/archive/2011/08/30/2159524.html

總結

以上是生活随笔為你收集整理的关于魔兽T人和延迟的恶劣挂原理及实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。