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

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

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

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

我們先看下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

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

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

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

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

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


分享到:


相關文章: