您的位置:首頁>正文

遊戲封包發送的另類發法:注入彙編CALL實現封包發送

以前寫過很多遊戲發送封包的文章, 在絕大部分人的認識中, 發送封包的唯一方法就是注入DLL到遊戲進程, 然後在發送!

其實我們可以換一種發送的方法, 這樣就可以避免遊戲注入DLL的檢測。

我們先看下send這個API定義:

Private Declare Function Send Lib "ws2_32.dll" Alias "send" (ByVal hSocket As Long, Buf As Any, ByVal BufLen As Long, ByVal Flags As Long) As Long

我們可以看到總共有四個參數:

參數1:hSocket:遊戲發送封包的通訊端

參數2:Buf:封包內容

參數3:BufLen:封包大小

參數4:Flags:識別字, 通常為0

我們知道了參數, 就可以構造彙編然後向遊戲發送注入CALL。

我一個專案中部分的代碼:

WriteAsmByte1 JU1, "00010000", "90 90 90 90 90 90" '寫入要發送的封包內容到記憶體中

AsmClear '清空彙編

AsmAdd "PUSH 0" '識別字

AsmAdd "PUSH 06" '封包大小

AsmAdd "MOV EAX,00010000"

AsmAdd "PUSH EAX" '封包內容

AsmAdd CStr("PUSH" & " 0" & CStr(Val("&H" & Text1.Text))) 'socketid(通訊端)

AsmAdd CStr("MOV EAX," & "0" & CStr(Hex(GetProcAddress(LoadLibrary("ws2_32.dll"), "send")))) '獲取send API的記憶體位址

AsmAdd "CALL EAX" 'call send

我們測試效果向某遊戲發送封包:A1 B2 C3 D3 E5 F6

是不是很簡單呢?大家有什麼想法或者建議留和我交流哦!

有喜歡程式設計及電腦技術的可以關注我, 也可以點擊我的頭條主頁加群哦!

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示