免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

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

  1. VB WinSock 發送封包&脫機外掛原理和舉例


  2. 1.連接請求

  3. 2.連接成功

  4. 3.發送資料

  5. 4.判斷接收資料

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

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

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

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

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

  11. byte received 接收到的位元組數

  12. local hostname 本地機器名

  13. Local IP 本地IP地址

  14. Local port 本地通信程式的埠

  15. Remote host 遠端機器名

  16. Remote host IP 遠程IP地址

  17. Remote port 遠端通信程式埠

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

  19. State 連接得當前狀態

  20. Protocol 使用協定

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

  22. State:返回當前連接狀態

  23. 0 關閉狀態

  24. 1 打開狀態

  25. 2 監聽狀態

  26. 3 連接掛起

  27. 4 解析功能變數名稱

  28. 5 正在連接

  29. 6 以建立連接

  30. 7 正在關閉

  31. 8 出錯

  32. 2.控制項

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

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

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

  36. connect:發送連接請求。格式:對象。Connect〔ip,遠端埠〕

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

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

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

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

  41. 3.控制項事件

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

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

  44. Connectrequest 有連接請求時觸發

  45. Data arrival 有資料到達時觸發

  46. Error 錯誤時觸發

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

  48. Send progress 資料傳送進度

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

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

  51. 1.封包的發送

  52. 舉例1.陣列方式的發送

  53. 複製內容到剪貼板代碼:

  54. Dim Id1(0 To 14) As Byte

  55. Id1(0) = &H59

  56. Id1(1) = &HE9

  57. Id1(2) = &HA6

  58. Id1(3) = &HAD

  59. Id1(4) = &H51

  60. Id1(5) = &H6C

  61. Id1(6) = &H6F

  62. Id1(7) = &H6E

  63. Id1(8) = &H6E

  64. Id1(9) = &H6E

  65. Id1(10) = &H6E

  66. Id1(11) = &H6E

  67. Id1(12) = &H6E

  68. Id1(13) = &H6E

  69. Id1(14) = &H6E

  70. Winsock.SendData Id1()

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

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

  73. 複製內容到剪貼板代碼:

  74. Function ReadFile(filePath As String) As String

  75. Dim fileNo As Long


  76. fileNo = FreeFile

  77. Open filePath For Binary As fileNo


  78. ReadFile = Input(LOF(fileNo), fileNo)

  79. Close fileNo

  80. End Function

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

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

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

  84. 舉例3.直接發送

  85. 複製內容到剪貼板代碼:

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

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

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

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

  90. 封包接收的判斷

  91. 複製內容到剪貼板代碼:

  92. '先來把封包換成16位的

  93. Public Function StrToHex(ByVal S As String) As String

  94. On Error Resume Next

  95. Dim ByteArr() As Byte

  96. ByteArr = StrConv(S, vbFromUnicode)

  97. Dim Temps As String

  98. Dim Temp As Byte

  99. Dim i As Long

  100. Dim outs As String

  101. For i = 0 To UBound(ByteArr)


  102. Temp = ByteArr(i)


  103. Temps = Hex(Temp)


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


  105. outs = outs & Temps

  106. Next

  107. StrToHex = outs

  108. End Function


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

  111. winsock.GetData GetMoveSend

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

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

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

  118. ElseIf InStr(GetMoveSend, "59E9AFADB9A559") Then

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

  120. ElseIf InStr(GetMoveSend, "59E9AFADAD00") Then

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

  122. ElseIf InStr(GetMoveSend, "59E9A2AD636D6F") Then

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

  124. '.....................

  125. End If

  126. End Sub



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

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

  129. DoEvents

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

  131. 加上DoEvents 就可以分開了
複製代碼
返回列表