关于魔兽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人和延迟的恶劣挂原理及实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARP和DNS欺骗以及网站钓鱼分析
- 下一篇: 美国诚实签经验——不要插队