od過濾心跳包
① 伺服器不能收到客戶端的心跳包
不知這個心跳包傳輸模式是廣播還是點到點呢
也許是交換機工作模式不匹配你的應用,二級交換可直接廣播,三級交換會過濾廣播的心跳包.需要三級交換配置下轉發廣播
檢查幾點,心跳包發包模式,網路互通,程序設置,交換機工作模式
② 在OD數據窗口中下內存寫入或硬體寫入怎麼過濾心跳包
send 函數頭下條件斷點
[esp+*]!=數據包長度 && [esp+*]!= 數據包長度
③ OD下bp send斷點 斷下的都一樣 請高人指點一下怎樣解決 我想找各種CALLA 可以的話留個QQ 我會加你
不清楚你說什麼
bp send 就是在send函數的入口設置軟中斷,send函數有4個參數,當然就有4個數據
用od下斷點時,要及時把堆棧區的信息保存,已防止心跳斷開連接
④ od下bp send 游戲不操作自己斷下
廢話,游戲本身就有心跳包
⑤ OD 匯編 找CALL
你代碼太亂了,根本沒法看,手動整理了下,苦逼。
你找的地方根本不對,沒法注入,這是其一。
其二就是,就算你的功能函數是對的,不給我OD,起碼也給個IDA靜態分析下吧。給這么一段,神仙也寫不出注入代碼來。
你這里的2個call,一個是ws2_32.send,一個是ws2_32.recv.分別是windows系統中的收包/發包函數。現在是在系統領空的,你在ws2_32.,dll里,這里根本就不在游戲的主線程中,不可能有打坐功能。自己進去send內部,在send頭部下個斷點,或者在command bar 里 bp send。這兩個都是在send頭部下斷。
注意避免心跳包干擾,然後去游戲執行打坐功能。斷下來後Ctrl+F9,執行到返回。一般次數要多一點,因為一開始2-3次還是在組包函數里,外面才是正常的游戲功能。不確定的話可以返回2層以後在每次返回後下斷,不放心可以多下點。這個層數跟游戲有關系。一般從明文call出來,不會超過5層就能找到合適的調用介面。
斷點下完了,F9游戲跑起來。看看是否馬上會有斷點斷下。斷了的刪了,應該是層數返回的太多,跑到GUI上去了,肯定不是。然後執行些無關緊要的操作,把斷下來的斷點刪掉。
然後打坐,看看第一個斷下的斷點,那個call是什麼形式。首先看看調用介面好不好,push參數多不多,push了幾個,有沒有ecx賦值,這個一般要進去看retn語句,反正自己細看下,找出參數個數。
然後找個代碼注入器,寫個匯編測試下,能用最好,崩潰了也很正常。看看push參數個數是否正確,多查找一下。
測試成功了,就要找參數來源了。這個是OD基本功,跟著反匯編層層返回,直到找到基址。
一般來說,當前斷下的位置不一定是最合適的調用位置。找參數之前可以長個心眼,看看這個call的內層call的參數含義是否更明確。或者你找到了這個call,它的push參數,都是[esp+0xXXX]讀取的,如果從堆棧看都是外層call的push參數,可以考慮是否調用外層call來的更方便。
總之就是要夠雞賊,怎麼好弄怎麼來。
都找到了,請用E,Delphi,VC等寫出注入程序,用內聯匯編嵌入你的代碼,完成調用。
基本就是這樣了,祝你成功,如果感覺我這些還夠辛苦費,請採納。
⑥ mina 同時發送心跳包 和數據 要加入兩個字元編碼過濾器嗎,該怎麼弄啊
你如果心跳包的格式跟數據格式一樣,就不需要加兩個了
⑦ bp wsasend 怎樣過濾心跳包
用 wsasend 斷下後 在堆棧中可以看到包大小,用 bp wsasend [包大小地址]>包大小
⑧ OD找Call的疑問
你問的比較概括。我也只能概括性的回答
並不是bp send沒用。是用處大了。而網路通信的封包發送是基於函數send 或者函數WSASend進行的。某些游戲用其中一種通信。或者兩種都用。有些游戲是用send發送密碼封包。wsasend發送游戲數據封包。
時時刻刻在發送封包,有3個原因。
1是心跳包。比如10秒發送一次。且發送有規律。判斷你是否掉線。
2是游戲里怪物或別的玩家在移動。這個比較好控制。找個沒人沒怪的地方進行下斷。
3是你正在下載地圖。因為有數據交流所以造成recv和send
所以bp send會一直下斷。
如果你是下斷某個call的話。這個call可能涵蓋加密演算法。或者這個call裡面的某功能,其它程序需要調用。比如心跳包,游戲玩家的移動包,地圖下載之類都需要它。造成一直下斷。
此時,斷到這樣的call的時候大多都不對。我以前搞大型網游時候。斷過這樣的call
LZ需要多讀讀書。看看帖。封包的加解密需要一些技巧和層層剝離分析。主要在於自己的分析和聯想。