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

[分享] 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分享
回覆

使用道具 舉報


Goldenwolf 當前離線
UID
1166302
熱心
75 值
嘉獎
0 次
違規
0 次
在線時間
17 小時
經驗
75 點
積分
426
精華
0
最後登錄
2009-10-8
閱讀權限
25
註冊時間
2009-3-28
論壇幣
259 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 3
Goldenwolf 2009-3-31 11:58:20
封包是怎什麼樣子我不知道耶!看起來就不怎麼好做!不過感謝大大的分享喔!!
回覆

使用道具 舉報

dingokito 當前離線
UID
1177164
熱心
123 值
嘉獎
0 次
違規
0 次
在線時間
57 小時
經驗
105 點
積分
285
精華
0
最後登錄
2015-4-26
閱讀權限
25
註冊時間
2009-4-7
論壇幣
1527 幣
聯合幣
7 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 3
dingokito 2009-4-7 21:01:31
謝謝大大分享.... YCT47B
回覆

使用道具 舉報

阿丼 當前離線
UID
1117583
熱心
42 值
嘉獎
0 次
違規
0 次
在線時間
49 小時
經驗
30 點
積分
30
精華
0
最後登錄
2013-10-2
閱讀權限
20
註冊時間
2009-1-24
論壇幣
66 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
400 點
查看詳細資料
Rank: 2Rank: 2
阿丼 2009-4-15 07:35:10
這應該可以用來參考= ="

全範圍打怪
回覆

使用道具 舉報

jodan0929 當前離線
UID
1125582
熱心
38 值
嘉獎
0 次
違規
0 次
在線時間
15 小時
經驗
31 點
積分
31
精華
0
最後登錄
2014-6-2
閱讀權限
20
註冊時間
2009-2-3
論壇幣
7 幣
聯合幣
1 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
5
jodan0929 2009-4-22 05:39:03
重點是封包要怎麼解開啊
看來解封包還是一個大問題呢
回覆

使用道具 舉報

阿德Sky 當前離線
UID
1216034
熱心
10 值
嘉獎
0 次
違規
0 次
在線時間
1 小時
經驗
10 點
積分
10
精華
0
最後登錄
2010-10-27
閱讀權限
10
註冊時間
2009-5-16
論壇幣
6 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
6
阿德Sky 2009-5-16 02:46:48
封包每次接收和發送都不同吧...
所以要找到一套演算法才能模擬用戶端~~~
回覆

使用道具 舉報

jamany 當前離線
UID
653154
熱心
10 值
嘉獎
0 次
違規
0 次
在線時間
1 小時
經驗
10 點
積分
10
精華
0
最後登錄
2009-5-4
閱讀權限
10
註冊時間
2007-11-22
論壇幣
15 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
7
jamany 2009-6-4 18:23:04
感恩感恩感恩 推推推推推推推推
回覆

使用道具 舉報

LEVIS18888 當前離線
UID
586501
熱心
78 值
嘉獎
0 次
違規
0 次
在線時間
50 小時
經驗
63 點
積分
229
精華
0
最後登錄
2018-8-5
閱讀權限
80
註冊時間
2007-10-10
論壇幣
13 幣
聯合幣
18 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 5Rank: 5Rank: 5
8
LEVIS18888 2009-6-21 18:50:13
感謝~~~~~~~~好有用
回覆

使用道具 舉報

ms2121s 當前離線
UID
308178
熱心
33 值
嘉獎
0 次
違規
0 次
在線時間
36 小時
經驗
33 點
積分
33
精華
0
最後登錄
2011-7-14
閱讀權限
20
註冊時間
2007-3-24
論壇幣
1 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
9
ms2121s 2009-6-23 12:56:35
感覺是一個很方便的軟體 可以讓我多學學使用程式
回覆

使用道具 舉報

cyc0z 當前離線
UID
497886
熱心
128 值
嘉獎
0 次
違規
0 次
在線時間
58 小時
經驗
26 點
積分
26
精華
0
最後登錄
2011-3-19
閱讀權限
20
註冊時間
2007-8-16
論壇幣
2995 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
10
cyc0z 2009-6-23 19:04:43
thx for sharing
回覆

使用道具 舉報

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

12345下一頁

手機版 | Archiver | 外掛聯合國

GMT+8, 2024-4-29 15:40 , Processed in 0.070863 second(s), 18 queries , Memcache On.

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

回頂部
第二步?
第三步?