黃易群俠傳M脫機外掛應用程式黃易神行
48894
0

[分享] VB WinSock 發送封包&脫機外掛原理和舉例

wen0116 發表於 2009-3-28 13:39:24 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |
VB WinSock 發送封包&脫機外掛原理和舉例


1.連接請求

2.連接成功

3.發送資料

4.判斷接收資料

而脫機掛 主要也是用封包組成 通過程式的計算 把封包解密加密進行讀取

簡單的來說 就是模擬一個遊戲用戶端

現在網遊的檢測越來越強大了,脫機掛也就越來越難做了

先找個比較菜的遊戲試試吧

下面來說說一些winsock函數和方法

byte received 接收到的位元組數

local hostname 本地機器名

Local IP 本地IP地址

Local port 本地通信程式的埠

Remote host 遠端機器名

Remote host IP 遠程IP地址

Remote port 遠端通信程式埠

Socket handle 提供調用API得控制碼參數

State 連接得當前狀態

Protocol 使用協定

Bytereceived:反應接收到得資料量,以位元組為單位。

State:返回當前連接狀態

0 關閉狀態

1 打開狀態

2 監聽狀態

3 連接掛起

4 解析功能變數名稱

5 正在連接

6 以建立連接

7 正在關閉

8 出錯

2.控制項

accept接受一個連接請求。格式:對象.accept request ID

bind:多協定介面下,把介面卡,IP位址捆綁再一起。格式:對象。Bina埠號,ip位址

close:關閉連接。格式:對象。Close

connect:發送連接請求。格式:對象。Connectip,遠端埠〕

getdata:取出資料後清除緩衝區。

Peekdata:取出資料後不清楚緩衝區。格式:對象。Getdatapeekdata)變數〔,資料類型〔,最大長度〕〕

Listen:偵聽。格式:對象。Listen

Senddata:發送資料。格式:對象。Senddata

3.控制項事件

Close 遠端設備關閉連接時觸發事件

Connect 建立連接,進行通信時觸發

Connectrequest 有連接請求時觸發

Data arrival 有資料到達時觸發

Error 錯誤時觸發

Send complete 完成一次資料傳送觸發

Send progress 資料傳送進度

以上就是能用到的函數和事件

下面來說下一些實際的問題

1.封包的發送

舉例1.陣列方式的發送

複製內容到剪貼板代碼:

Dim Id1(0 To 14) As Byte

Id1(0) = &H59

Id1(1) = &HE9

Id1(2) = &HA6

Id1(3) = &HAD

Id1(4) = &H51

Id1(5) = &H6C

Id1(6) = &H6F

Id1(7) = &H6E

Id1(8) = &H6E

Id1(9) = &H6E

Id1(10) = &H6E

Id1(11) = &H6E

Id1(12) = &H6E

Id1(13) = &H6E

Id1(14) = &H6E

Winsock.SendData Id1()

這個方法有點太麻煩..也不太實際 大家參考就好了

舉例2.把封包存為檔,用讀取方式發送

複製內容到剪貼板代碼:

Function ReadFile(filePath As String) As String

Dim fileNo As Long


fileNo = FreeFile


Open filePath For Binary As fileNo


ReadFile = Input(LOF(fileNo), fileNo)


Close fileNo

End Function

winsock.SendData ReadFile(App.Path & "\封包\....\*.dat")

有些人就問了 存成什麼樣的呢?

記事本肯定不行了,建議用Winhex ,把封包的16位直接輸入到16位編輯 保存即可

舉例3.直接發送

複製內容到剪貼板代碼:

winsock.SendData (Chr(&H59) & Chr(&H59) & Chr(&H59) & ..........)

有些人不知道怎麼直接發送16位封包...用這樣的就可以發出去了

以上就是3個發送封包的舉例

下面來說說另一個實際的問題

封包接收的判斷

複製內容到剪貼板代碼:

'先來把封包換成16位的

Public Function StrToHex(ByVal S As String) As String

On Error Resume Next

Dim ByteArr() As Byte

ByteArr = StrConv(S, vbFromUnicode)

Dim Temps As String

Dim Temp As Byte

Dim i As Long

Dim outs As String

For i = 0 To UBound(ByteArr)


Temp = ByteArr(i)



Temps = Hex(Temp)



Temps = Right("00" & Temps, 2)



outs = outs & Temps


Next

StrToHex = outs

End Function


Private Sub WinMove1_DataArrival(ByVal bytesTotal As Long)
'DataArrival
事件

winsock.GetData GetMoveSend

GetMoveSend = StrToHex(Trim(StrConv(GetMoveSend, vbUnicode)))
'
轉換為16位元資料

If InStr(GetMoveSend, "59E9A9ADA8B1A8AC59E9AFAD8E00") Then
'
下麵就不用說了吧...

StatusBar1.Panels(2).Text = "登陸成功,進入選擇角色介面"
'StatusBar1
這個是狀態欄...

ElseIf InStr(GetMoveSend, "59E9AFADB9A559") Then

StatusBar1.Panels(2).Text = "進入遊戲..."

ElseIf InStr(GetMoveSend, "59E9AFADAD00") Then

StatusBar1.Panels(2).Text = "重複登陸斷線"

ElseIf InStr(GetMoveSend, "59E9A2AD636D6F") Then

StatusBar1.Panels(2).Text = "檢測到帳號加入隊伍"

'.....................

End If

End Sub



另外說下 封包發送的時候會出現兩個合到一起的

WinMove1.SendData ReadFile(App.Path & "\.....\*.dat")

DoEvents

WinMove1.SendData ReadFile(App.Path & "\.....\*.dat")

加上DoEvents 就可以分開了
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


您需要登錄後才可以回帖 登錄 | 註冊


手機版 | Archiver | 外掛聯合國

GMT+8, 2024-5-15 15:31 , Processed in 0.064868 second(s), 19 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?