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

[建議] 夠了!不要再談改錢了!學懂封包修改吧!!!!!

lokyeahk 發表於 2008-8-11 11:02:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |
一直以來我上了這版子很久,大多人談的不是巨商心得就是moonlight的修改
單機遊戲你或許成為天下第一,因為記憶參數(角色等等資料)係存在ram中
online game不同,是存在game server中,你每進行一個動作(如交易),便會寄出封包到伺服器,經伺服器進行運算,會寄出封包到你的電腦,
這個封包就是你見到的畫面,因此,任何你所見到的參數都是在game的server中,你用moonligtht修改是你所見到的數值
你改了9999元又如何?在game server中却不是,你只是修改了ram中的數值,那是沒意義的
(以上有錯請插,中英夾雜不要見怪,但這個過程大多數網上遊戲大致一樣)
那麼..........(我寫不下去了,因為要解釋實在很難yociexp195.gif)
不知道大家可否聽過WPE(Winsock Packet Editor),它可以............還是看我的轉貼吧yociexp171.gif
收藏收藏1 分享分享 讚1 幹 分享分享 FB分享
回覆

使用道具 舉報


lokyeahk 當前離線
UID
569314
熱心
39 值
嘉獎
0 次
違規
0 次
在線時間
31 小時
經驗
34 點
積分
179
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-9-29
論壇幣
62 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
lokyeahk 2008-8-11 11:05:47
轉帖....
截包工具:
網址可能要自己搜索了,原來他給的網址有木馬,但是下載的(wpe)沒有...
   WPRO.rar      MD5: 2E1E8E48FCC78972905E4F40081B608C
   IRIS.rar         MD5: 6B919165C60D83379C1F825245100545  WPE 是通過注入dll的方式hook send, recv, WSASend, WSARecv等函數來截取封包, 如果進程有anti wpe , 有可能截不到數據包
  Iris 是sniffer工具, 對網卡進行截包, 需要適當設置IP,port過濾條件, 不可能漏包
調試工具:
  flyOdbg 1.1
  http://download.winzheng.com/SoftView/SoftView_30342.htm
  fly修改的ollydbg漢化第二版, 很棒的調試工具, 你能在bbs.pediy.com (看雪論壇)找到很多教程
分析工具:
  IDA 4.8
  http://www.crsky.com/soft/1604.html
16進制編輯工具:
  UE 11.0
  http://www.ultraedit.com/index.php?name=Downloads&;d_op=getit&lid=1
  http://bbs.pediy.com/upload/2005/10/files/UltraEdit.v11.00.Keymaker.zip

[ 本帖最後由 lokyeahk 於 2008-8-11 11:22 編輯 ]
回覆

使用道具 舉報

lokyeahk 當前離線
UID
569314
熱心
39 值
嘉獎
0 次
違規
0 次
在線時間
31 小時
經驗
34 點
積分
179
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-9-29
論壇幣
62 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
lokyeahk 2008-8-11 11:08:02
http://hack.gameres.com/showthread.asp?threadid=35587
字數太多,但為了方便觀看,還是轉了繁中,睇得開心吧yociexp193.gif
回覆

使用道具 舉報

lokyeahk 當前離線
UID
569314
熱心
39 值
嘉獎
0 次
違規
0 次
在線時間
31 小時
經驗
34 點
積分
179
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-9-29
論壇幣
62 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
lokyeahk 2008-8-11 11:10:23
轉貼:網絡遊戲封包基礎  作者不明
      
      要想在修改遊戲中做到百戰百勝,是需要相當豐富的計算機知識的。有很多計算機高手就是從玩遊戲,修改遊戲中,逐步對計算機產生濃厚的興趣,逐步成長起來的。不要在羨慕別人能夠做到的,因為別人能夠做的你也能夠!我相信你們看了
本教程後,會對遊戲有一個全新的認識,呵呵,因為我是個好老師!(別拿雞蛋砸我呀,救命啊!#¥%……*)   不過
要想從修改遊戲中學到知識,增加自己的計算機水平,可不能只是靠修改遊戲呀! 要知道,修改遊戲只是一個驗證你對
你所瞭解的某些計算機知識的理解程度的場所,只能給你一些發現問題、解決問題的機會,只能起到幫助你提高學習計算
機的興趣的作用,而決不是學習計算機的捷徑。

一:什麼叫外掛?
  現在的網絡遊戲多是基於Internet上客戶/服務器模式,服務端程序運行在遊戲服務器上,遊戲的設計者在其中創造
一個龐大的遊戲空間,各地的玩家可以通過運行客戶端程序同時登錄到遊戲中。簡單地說,網絡遊戲實際上就是由遊戲開
發商提供一個遊戲環境,而玩家們就是在這個環境中相對自由和開放地進行遊戲操作。那麼既然在網絡遊戲中有了服務器
這個概念,我們以前傳統的修改遊戲方法就顯得無能為力了。記得我們在單機版的遊戲中,隨心所欲地通過內存搜索來修
改角色的各種屬性,這在網絡遊戲中就沒有任何用處了。因為我們在網絡遊戲中所扮演角色的各種屬性及各種重要資料都
存放在服務器上,在我們自己機器上(客戶端)只是顯示角色的狀態,所以通過修改客戶端內存裡有關角色的各種屬性是
不切實際的。那麼是否我們就沒有辦法在網絡遊戲中達到我們修改的目的?回答是"否"。
  我們知道Internet客戶/服務器模式的通訊一般採用TCP/IP通信協議,數據交換是通過IP數據包的傳輸來實現的,一
般來說我們客戶端向服務器發出某些請求,比如移動、戰鬥等指令都是通過封包的形式和服務器交換數據。那麼我們把本
地發出消息稱為SEND,意思就是發送數據,服務器收到我們SEND的消息後,會按照既定的程序把有關的信息反饋給客戶端
,比如,移動的坐標,戰鬥的類型。那麼我們把客戶端收到服務器發來的有關消息稱為RECV。知道了這個道理,接下來我
們要做的工作就是分析客戶端和服務器之間往來的數據(也就是封包),這樣我們就可以提取到對我們有用的數據進行修
改,然後模擬服務器發給客戶端,或者模擬客戶端發送給服務器,這樣就可以實現我們修改遊戲的目的了。
  目前除了修改遊戲封包來實現修改遊戲的目的,我們也可以修改客戶端的有關程序來達到我們的要求。我們知道目前
各個服務器的運算能力是有限的,特別在遊戲中,遊戲服務器要計算遊戲中所有玩家的狀況幾乎是不可能的,所以有一些
運算還是要依靠我們客戶端來完成,這樣又給了我們修改遊戲提供了一些便利。比如我們可以通過將客戶端程序脫殼來發
現一些程序的判斷分支,通過跟蹤調試我們可以把一些對我們不利的判斷去掉,以此來滿足我們修改遊戲的需求。 在下
幾個章節中,我們將給大家講述封包的概念,和修改跟蹤客戶端的有關知識。大家準備好了嗎?
  遊戲數據格式和存儲:
  在進行我們的工作之前,我們需要掌握一些關於計算機中儲存數據方式的知識和遊戲中儲存數據的特點。本章節是提
供給菜鳥級的玩家看的,如果你是高手就可以跳過了,如果,你想成為無堅不摧的劍客,那麼,這些東西就會花掉你一些
時間;如果,你只想作個江湖的遊客的話,那麼這些東西,瞭解與否無關緊要。是作劍客,還是作遊客,你選擇吧!
  現在我們開始!首先,你要知道遊戲中儲存數據的幾種格式,這幾種格式是:字節(BYTE)、字(WORD)和雙字(DOUBLE
WORD),或者說是8位、16位和32位儲存方式。字節也就是8位方式能儲存0~255的數字;字或說是16位儲存方式能儲存
0~65535的數;雙字即32位方式能儲存0~4294967295的數。
  為何要瞭解這些知識呢?在遊戲中各種參數的最大值是不同的,有些可能100左右就夠了,比如,金庸群俠傳中的角
色的等級、隨機遇敵個數等等。而有些卻需要大於255甚至大於65535,象金庸群俠傳中角色的金錢值可達到數百萬。所以
,在遊戲中各種不同的數據的類型是不一樣的。在我們修改遊戲時需要尋找準備修改的數據的封包,在這種時候,正確判
斷數據的類型是迅速找到正確地址的重要條件。
  在計算機中數據以字節為基本的儲存單位,每個字節被賦予一個編號,以確定各自的位置。這個編號我們就稱為地址

  在需要用到字或雙字時,計算機用連續的兩個字節來組成一個字,連續的兩個字組成一個雙字。而一個字或雙字的地
址就是它們的低位字節的地址。 現在我們常用的Windows 9x操作系統中,地址是用一個32位的二進制數表示的。而在平
時我們用到內存地址時,總是用一個8位的16進制數來表示它。
  二進制和十六進制又是怎樣一回事呢?
  簡單說來,二進制數就是一種只有0和1兩個數碼,每滿2則進一位的計數進位法。同樣,16進制就是每滿十六就進一
位的計數進位法。16進制有0--F十六個數字,它為表示十到十五的數字採用了A、B、C、D、E、F六個數字,它們和十進制
的對應關係是:A對應於10,B對應於11,C對應於12,D對應於13,E對應於14,F對應於15。而且,16進制數和二進制數間
有一個簡單的對應關係,那就是;四位二進制數相當於一位16進制數。比如,一個四位的二進制數1111就相當於16進制的
F,1010就相當於A。
  瞭解這些基礎知識對修改遊戲有著很大的幫助,下面我就要談到這個問題。由於在計算機中數據是以二進制的方式儲
存的,同時16進制數和二進制間的轉換關係十分簡單,所以大部分的修改工具在顯示計算機中的數據時會顯示16進制的代
碼,而且在你修改時也需要輸入16進制的數字。你清楚了吧?
  在遊戲中看到的數據可都是十進制的,在要尋找並修改參數的值時,可以使用Windows提供的計算器來進行十進制和
16進制的換算,我們可以在開始菜單裡的程序組中的附件中找到它。
  現在要瞭解的知識也差不多了!不過,有個問題在遊戲修改中是需要注意的。在計算機中數據的儲存方式一般是低位
數儲存在低位字節,高位數儲存在高位字節。比如,十進制數41715轉換為16進制的數為A2F3,但在計算機中這個數被存
為F3A2。
  看了以上內容大家對數據的存貯和數據的對應關係都瞭解了嗎? 好了,接下來我們要告訴大家在遊戲中,封包到底
是怎麼一回事了,來!大家把袖口捲起來,讓我們來幹活吧!
二:什麼是封包?
  怎麼截獲一個遊戲的封包?怎麼去檢查遊戲服務器的ip地址和端口號? Internet用戶使用的各種信息服務,其通訊
的信息最終均可以歸結為以IP包為單位的信息傳送,IP包除了包括要傳送的數據信息外,還包含有信息要發送到的目的IP
地址、信息發送的源IP地址、以及一些相關的控制信息。當一台路由器收到一個IP數據包時,它將根據數據包中的目的IP
地址項查找路由表,根據查找的結果將此IP數據包送往對應端口。下一台IP路由器收到此數據包後繼續轉發,直至發到目
的地。路由器之間可以通過路由協議來進行路由信息的交換,從而更新路由表。
  那麼我們所關心的內容只是IP包中的數據信息,我們可以使用許多監聽網絡的工具來截獲客戶端與服務器之間的交換
數據,下面就向你介紹其中的一種工具:WPE。
  WPE使用方法:執行WPE會有下列幾項功能可選擇:
  SELECT GAME選擇目前在記憶體中您想攔截的程式,您只需雙擊該程式名稱即可。
  TRACE追蹤功能。用來追蹤擷取程式送收的封包。WPE必須先完成點選欲追蹤的程式名稱,才可以使用此項目。 按下
Play鍵開始擷取程式收送的封包。您可以隨時按下 | | 暫停追蹤,想繼續時請再按下 | | 。按下正方形可以停止擷取封
包並且顯示所有已擷取封包內容。若您沒按下正方形停止鍵,追蹤的動作將依照OPTION裡的設定值自動停止。如果您沒有
擷取到資料,試試將OPTION裡調整為Winsock Version 2。WPE 及 Trainers 是設定在顯示至少16 bits 顏色下才可執行

  FILTER過濾功能。用來分析所擷取到的封包,並且予以修改。
  SEND PACKET送出封包功能。能夠讓您送出假造的封包。
  TRAINER MAKER製作修改器。
  OPTIONS設定功能。讓您調整WPE的一些設定值。
  FILTER的詳細教學
  - 當FILTER在啟動狀態時 ,ON的按鈕會呈現紅色。- 當您啟動FILTER時,您隨時可以關閉這個視窗。FILTER將會保
留在原來的狀態,直到您再按一次 on / off 鈕。- 只有FILTER啟用鈕在OFF的狀態下,才可以勾選Filter前的方框來編
輯修改。- 當您想編輯某個Filter,只要雙擊該Filter的名字即可。
  NORMAL MODE:
  範例:
  當您在 Street Fighter Online ﹝快打旋風線上版﹞遊戲中,您使用了兩次火球而且擊中了對方,這時您會擷取到
以下的封包:SEND-> 0000 08 14 21 06 01 04 SEND-> 0000 02 09 87 00 67 FF A4 AA 11 22 00 00 00 00 SEND->
0000 03 84 11 09 11 09 SEND-> 0000 0A 09 C1 10 00 00 FF 52 44 SEND-> 0000 0A 09 C1 10 00 00 66 52 44
  您的第一個火球讓對方減了16滴﹝16 = 10h﹞的生命值,而您觀察到第4跟第5個封包的位置4有10h的值出現,應該就
是這裡了。
  您觀察10h前的0A 09 C1在兩個封包中都沒改變,可見得這3個數值是發出火球的關鍵。
  因此您將0A 09 C1 10填在搜尋列﹝SEARCH﹞,然後在修改列﹝MODIFY﹞的位置4填上FF。如此一來,當您再度發出火
球時,FF會取代之前的10,也就是攻擊力為255的火球了!
  ADVANCED MODE:
  範例: 當您在一個遊戲中,您不想要用真實姓名,您想用修改過的假名傳送給對方。在您使用TRACE後,您會發現有
些封包裡面有您的名字出現。假設您的名字是Shadow,換算成16進位則是﹝53 68 61 64 6F 77﹞;而您打算用moon﹝6D
6F 6F 6E 20 20﹞來取代他。1) SEND-> 0000 08 14 21 06 01 042) SEND-> 0000 01 06 99 53 68 61 64 6F 77 00 01
05 3) SEND-> 0000 03 84 11 09 11 094) SEND-> 0000 0A 09 C1 10 00 53 68 61 64 6F 77 00 11 5) SEND-> 0000 0A
09 C1 10 00 00 66 52 44
  但是您仔細看,您的名字在每個封包中並不是出現在相同的位置上
  - 在第2個封包裡,名字是出現在第4個位置上- 在第4個封包裡,名字是出現在第6個位置上
  在這種情況下,您就需要使用ADVANCED MODE- 您在搜尋列﹝SEARCH﹞填上:53 68 61 64 6F 77 ﹝請務必從位置1開
始填﹞- 您想要從原來名字Shadow的第一個字母開始置換新名字,因此您要選擇從數值被發現的位置開始替代連續數值﹝
from the position of the chain found﹞。- 現在,在修改列﹝MODIFY﹞000的位置填上:6D 6F 6F 6E 20 20 ﹝此為
相對應位置,也就是從原來搜尋欄的+001位置開始遞換﹞- 如果您想從封包的第一個位置就修改數值,請選擇﹝from the
beginning of the packet﹞
  瞭解一點TCP/IP協議常識的人都知道,互聯網是將信息數據打包之後再傳送出去的。每個數據包分為頭部信息和數據
信息兩部分。頭部信息包括數據包的發送地址和到達地址等。數據信息包括我們在遊戲中相關操作的各項信息。那麼在做
截獲封包的過程之前我們先要知道遊戲服務器的IP地址和端口號等各種信息,實際上最簡單的是看看我們遊戲目錄下,是
否有一個SERVER.INI的配置文件,這個文件裡你可以查看到個遊戲服務器的IP地址,比如金庸群俠傳就是如此,那麼除了
這個我們還可以在DOS下使用NETSTAT這個命令,
  NETSTAT命令的功能是顯示網絡連接、路由表和網絡接口信息,可以讓用戶得知目前都有哪些網絡連接正在運作。或
者你可以使用木馬客星等工具來查看網絡連接。工具是很多的,看你喜歡用哪一種了。
  NETSTAT命令的一般格式為:NETSTAT [選項]
  命令中各選項的含義如下:-a 顯示所有socket,包括正在監聽的。-c 每隔1秒就重新顯示一遍,直到用戶中斷它。
-i 顯示所有網絡接口的信息。-n 以網絡IP地址代替名稱,顯示出網絡連接情形。-r 顯示核心路由表,格式同"route -
e"。-t 顯示TCP協議的連接情況。-u 顯示UDP協議的連接情況。-v 顯示正在進行的工作。
回覆

使用道具 舉報

lokyeahk 當前離線
UID
569314
熱心
39 值
嘉獎
0 次
違規
0 次
在線時間
31 小時
經驗
34 點
積分
179
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-9-29
論壇幣
62 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
5
lokyeahk 2008-8-11 11:11:59
三:怎麼來分析我們截獲的封包?   首先我們將WPE截獲的封包保存為文本文件,然後打開它,這時會看到如下的數據(這裡我們以金庸群俠傳裡PK店小
二客戶端發送的數據為例來講解):
  第一個文件:SEND-> 0000 E6 56 0D 22 7E 6B E4 17 13 13 12 13 12 13 67 1BSEND-> 0010 17 12 DD 34 12 12
12 12 17 12 0E 12 12 12 9BSEND-> 0000 E6 56 1E F1 29 06 17 12 3B 0E 17 1ASEND-> 0000 E6 56 1B C0 68 12 12
12 5ASEND-> 0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12 12SEND-> 0000 E6 56 17 C9 12
  第二個文件:SEND-> 0000 83 33 68 47 1B 0E 81 72 76 76 77 76 77 76 02 7ESEND-> 0010 72 77 07 1C 77 77
77 77 72 77 72 77 77 77 6DSEND-> 0000 83 33 7B 94 4C 63 72 77 5E 6B 72 F3SEND-> 0000 83 33 7E A5 21 77 77
77 3FSEND-> 0000 83 33 67 AD 76 CF 1B 0E 81 72 75 50 42 76 77 77SEND-> 0000 83 33 72 AC 77
  我們發現兩次PK店小二的數據格式一樣,但是內容卻不相同,我們是PK的同一個NPC,為什麼會不同呢? 原來金庸群
俠傳的封包是經過了加密運算才在網路上傳輸的,那麼我們面臨的問題就是如何將密文解密成明文再分析了。
  因為一般的數據包加密都是異或運算,所以這裡先講一下什麼是異或。 簡單的說,異或就是"相同為0,不同為1"(
這是針對二進制按位來講的),舉個例子,0001和0010異或,我們按位對比,得到異或結果是0011,計算的方法是:0001
的第4位為0,0010的第4位為0,它們相同,則異或結果的第4位按照"相同為0,不同為1"的原則得到0,0001的第3位為0,
0010的第3位為0,則異或結果的第3位得到0,0001的第2位為0,0010的第2位為1,則異或結果的第2位得到1,0001的第1
位為1,0010的第1位為0,則異或結果的第1位得到1,組合起來就是0011。異或運算今後會遇到很多,大家可以先熟悉熟
悉,熟練了對分析很有幫助的。
  下面我們繼續看看上面的兩個文件,按照常理,數據包的數據不會全部都有值的,遊戲開發時會預留一些字節空間來
便於日後的擴充,也就是說數據包裡會存在一些"00"的字節,觀察上面的文件,我們會發現文件一里很多"12",文件二里
很多"77",那麼這是不是代表我們說的"00"呢?推理到這裡,我們就開始行動吧!
  我們把文件一與"12"異或,文件二與"77"異或,當然用手算很費事,我們使用"M2M 1.0 加密封包分析工具"來計算就
方便多了。得到下面的結果:
  第一個文件:1 SEND-> 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09SEND-> 0010 05 00 CF 26 00 00
00 00 05 00 1C 00 00 00 892 SEND-> 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 083 SEND-> 0000 F4 44 09 D2 7A 00
00 00 484 SEND-> 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 005 SEND-> 0000 F4 44 05 DB 00
  第二個文件:1 SEND-> 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09SEND-> 0010 05 00 70 6B 00 00
00 00 05 00 05 00 00 00 1A2 SEND-> 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 843 SEND-> 0000 F4 44 09 D2 56 00
00 00 484 SEND-> 0000 F4 44 10 DA 01 B8 6C 79 F6 05 02 27 35 01 00 005 SEND-> 0000 F4 44 05 DB 00
  哈,這一下兩個文件大部分都一樣啦,說明我們的推理是正確的,上面就是我們需要的明文!
  接下來就是搞清楚一些關鍵的字節所代表的含義,這就需要截獲大量的數據來分析。
  首先我們會發現每個數據包都是"F4 44"開頭,第3個字節是變化的,但是變化很有規律。我們來看看各個包的長度,
發現什麼沒有?對了,第3個字節就是包的長度! 通過截獲大量的數據包,我們判斷第4個字節代表指令,也就是說客戶
端告訴服務器進行的是什麼操作。例如向服務器請求戰鬥指令為"30",戰鬥中移動指令為"D4"等。 接下來,我們就需要
分析一下上面第一個包"F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09 05 00 CF 26 00 00 00 00 05 00 1C 00
00 00 89",在這個包裡包含什麼信息呢?應該有通知服務器你PK的哪個NPC吧,我們就先來找找這個店小二的代碼在什麼
地方。 我們再PK一個小嘍囉(就是大理客棧外的那個咯):SEND-> 0000 F4 44 1F 30 D4 75 F6 05 01 01 00 01 00 01
75 09SEND-> 0010 05 00 8A 19 00 00 00 00 11 00 02 00 00 00 C0 我們根據常理分析,遊戲裡的NPC種類雖然不會超
過65535(FFFF),但開發時不會把自己限制在字的範圍,那樣不利於遊戲的擴充,所以我們在雙字裡看看。通過"店小二
"和"小嘍囉"兩個包的對比,我們把目標放在"6C 79 F6 05"和"CF 26 00 00"上。(對比一下很容易的,但你不能太遲鈍
咯,呵呵)我們再看看後面的包,在後面的包裡應該還會出現NPC的代碼,比如移動的包,遊戲允許觀戰,服務器必然需
要知道NPC的移動坐標,再廣播給觀戰的其他玩家。在後面第4個包"SEND-> 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27
35 01 00 00"裡我們又看到了"6C 79 F6 05",初步斷定店小二的代碼就是它了!(這分析裡邊包含了很多工作的,大家
可以用WPE截下數據來自己分析分析)
  第一個包的分析暫時就到這裡(裡面還有的信息我們暫時不需要完全清楚了)
  我們看看第4個包"SEND-> 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 00",再截獲PK黃狗的包,(狗會
出來2只哦)看看包的格式:SEND-> 0000 F4 44 1A DA 02 0B 4B 7D F6 05 02 27 35 01 00 00SEND-> 0010 EB 03 F8
05 02 27 36 01 00 00
  根據上面的分析,黃狗的代碼為"4B 7D F6 05"(100040011),不過兩隻黃狗服務器怎樣分辨呢?看看"EB 03 F8
05"(100140011),是上一個代碼加上100000,呵呵,這樣服務器就可以認出兩隻黃狗了。我們再通過野外遇敵截獲的數
據包來證實,果然如此。
  那麼,這個包的格式應該比較清楚了:第3個字節為包的長度,"DA"為指令,第5個字節為NPC個數,從第7個字節開始
的10個字節代表一個NPC的信息,多一個NPC就多10個字節來表示。
  大家如果玩過網金,必然知道隨機遇敵有時會出現增援,我們就利用遊戲這個增援來讓每次戰鬥都會出現增援的NPC
吧。
  通過在戰鬥中出現增援截獲的數據包,我們會發現服務器端發送了這樣一個包:F4 44 12 E9 EB 03 F8 05 02 00 00
03 00 00 00 00 00 00 第5-第8個字節為增援NPC的代碼(這裡我們就簡單的以黃狗的代碼來舉例)。 那麼,我們就利用
單機代理技術來同時欺騙客戶端和服務器吧!
  好了,呼叫NPC的工作到這裡算是完成了一小半,接下來的事情,怎樣修改封包和發送封包,我們下節繼續講解吧。

四:怎麼冒充"客戶端"向"服務器"發我們需要的封包?
  這裡我們需要使用一個工具,它位於客戶端和服務器端之間,它的工作就是進行數據包的接收和轉發,這個工具我們
稱為代理。如果代理的工作單純就是接收和轉發的話,這就毫無意義了,但是請注意:所有的數據包都要通過它來傳輸,
這裡的意義就重大了。我們可以分析接收到的數據包,或者直接轉發,或者修改後轉發,或者壓住不轉發,甚至偽造我們
需要的封包來發送。
  下面我們繼續講怎樣來同時欺騙服務器和客戶端,也就是修改封包和偽造封包。 通過我們上節的分析,我們已經知
道了打多個NPC的封包格式,那麼我們就動手吧!
  首先我們要查找客戶端發送的包,找到戰鬥的特徵,就是請求戰鬥的第1個包,我們找"F4 44 1F 30"這個特徵,這是
不會改變的,當然是要解密後來查找哦。 找到後,表示客戶端在向服務器請求戰鬥,我們不動這個包,轉發。 繼續向下
查找,這時需要查找的特徵碼不太好辦,我們先查找"DA",這是客戶端發送NPC信息的數據包的指令,那麼可能其他包也
有"DA",沒關係,我們看前3個字節有沒有"F4 44"就行了。找到後,我們的工作就開始了!
  我們確定要打的NPC數量。這個數量不能很大,原因在於網金的封包長度用一個字節表示,那麼一個包可以有255個字
節,我們上面分析過,增加一個NPC要增加10個字節,所以大家算算就知道,打20個NPC比較合適。
  然後我們要把客戶端原來的NPC代碼分析計算出來,因為增加的NPC代碼要加上100000哦。再把我們增加的NPC代碼計
算出來,並且組合成新的封包,注意代表包長度的字節要修改啊,然後轉發到服務器,這一步在編寫程序的時候要注意算
法,不要造成較大延遲。
  上面我們欺騙服務器端完成了,欺騙客戶端就簡單了。
  發送了上面的封包後,我們根據新增NPC代碼構造封包馬上發給客戶端,格式就是"F4 44 12 E9 NPC代碼 02 00 00
03 00 00 00 00 00 00",把每個新增的NPC都構造這樣一個包,按順序連在一起發送給客戶端,客戶端也就被我們騙過了
,很簡單吧。
  以後戰鬥中其他的事我們就不管了,盡情地開打吧。

[本日誌由 looo 於 2005-02-10 01:21 PM 編輯]
looo 於 2005-02-10 01:16 PM 發表評論:
遊戲外掛基本原理及實現
解釋遊戲外掛的基本原理和實現方法
遊戲外掛已經深深地影響著眾多網絡遊戲玩家,今天在網上看到了一些關於遊戲外掛編寫的技術,於是轉載上供大家參考

[ 本帖最後由 lokyeahk 於 2008-8-11 11:13 編輯 ]
回覆

使用道具 舉報

lokyeahk 當前離線
UID
569314
熱心
39 值
嘉獎
0 次
違規
0 次
在線時間
31 小時
經驗
34 點
積分
179
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-9-29
論壇幣
62 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
6
lokyeahk 2008-8-11 11:15:27
由於太多,我不選擇貼出來了
而且字數太多POST出了問題,不能顯示....

[ 本帖最後由 lokyeahk 於 2008-8-11 11:20 編輯 ]
回覆

使用道具 舉報

lokyeahk 當前離線
UID
569314
熱心
39 值
嘉獎
0 次
違規
0 次
在線時間
31 小時
經驗
34 點
積分
179
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-9-29
論壇幣
62 幣
聯合幣
9 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
7
lokyeahk 2008-8-11 11:32:04
後記,其實封包修改器WPE PRO是會被巨商的nprotect gameguard 偵測出來,
我試了很多方法(辛苦了很多日,找了許多關鍵字了,什麼 封包修改器, packet editor ,反np , hide process, prevent nprotect,封包發送器 等等),
包括轉用其他同類封包修改器,用SaRuenG2ng屏蔽外掛(可惜被np害得reboot)
下場不是被偵測就是用不著,有些封包修改器連gersang的程序也找不到,其實大多都是後者的問題
因此請求各大協力找出能修改封包的方法或軟體,向身邊的電腦高手一塊聯手吧
回覆

使用道具 舉報

nonamed 當前離線
UID
185099
熱心
127 值
嘉獎
0 次
違規
0 次
在線時間
26 小時
經驗
128 點
積分
128
精華
0
最後登錄
2013-1-19
閱讀權限
20
註冊時間
2007-2-5
論壇幣
427 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
2578 點
查看詳細資料
Rank: 2Rank: 2
8
nonamed 2008-8-11 12:05:25
如果有人開班教授便好了
我一定第一個報名
回覆

使用道具 舉報

touch102 當前離線
UID
894918
熱心
13 值
嘉獎
0 次
違規
0 次
在線時間
25 小時
經驗
13 點
積分
13
精華
0
最後登錄
2009-9-3
閱讀權限
10
註冊時間
2008-6-18
論壇幣
19 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
9
touch102 2008-8-12 10:39:48
感謝神級的大大yociexp125.gif
小的連me都未學精yociexp162.gif
要向大大好好的學習yociexp190.gif
回覆

使用道具 舉報

初音 當前離線
UID
846013
熱心
259 值
嘉獎
0 次
違規
0 次
在線時間
43 小時
經驗
223 點
積分
640
精華
0
最後登錄
2019-6-28
閱讀權限
30
註冊時間
2008-5-3
論壇幣
85 幣
聯合幣
21 枚
幸運鑽
10 顆
招待卷
0 點
查看詳細資料
Rank: 4Rank: 4
10
初音 2008-8-13 13:14:43
不太明白你在說什麼yociexp178.gif
回覆

使用道具 舉報

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


手機版 | Archiver | 外掛聯合國

GMT+8, 2024-11-22 06:46 , Processed in 0.055845 second(s), 17 queries , Memcache On.

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

回頂部