m2m加密封包分析工具
㈠ 網路游戲數據編程修改
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 顯示正在進行的工作。
--------------------------------------------------------------------------------
三:怎麼來分析我們截獲的封包?
首先我們將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都構造這樣一個包,按順序連在一起發送給客戶端,客戶端也就被我們騙過了,很簡單吧。
以後戰斗中其他的事我們就不管了,盡情地開打吧,呵呵。 本欄文章均來自於互聯網,版權歸原作者和各發布網站所有,本站收集這些文章僅供學習參考之用。任何人都不能將這些文章用於商業或者其他目的。( ProgramFan.Com )
㈡ 如何抓取網路游戲內存值
首先我們要確定的第一問題就是你要抓取的是什麼
1.假如是數字類型就很簡單的了 打個比方 金錢 經驗 物品數量等
2.無數字提示 比如"可樂X"的"水果大戰" 人物的血是沒有數值的
但我們有個簡單的方法來確定內存位置 就是"金山游俠"
金山游俠的最大好處在於它的"熱起"和"內存判斷"的准確性 並且使用方法簡單 我這里就不多說了
............................................................................................................................................................................................
接下來 就該我們動腦子的時候的 呵呵
網路游戲的運行大概分為兩個部分
1.你的游戲客戶端(※一般情況下游戲里的大部分數據都在於此)
2.遠程的伺服器(※主要負責數據管理 如角色等級 金錢 物品等)
我們再來了解下網路游戲的運行
PC本地客戶端→網路封包數據
↓
↑遠程伺服器←網路封包發送
範例:
我在游戲中買了件物品 游戲系統把這個信息封包發送給伺服器 伺服器接受信息反饋給本地PC"並輸入至遠程伺服器的信息庫"
............................................................................................................................................................................................
我想到了這里 大家都基本明白網路游戲的運行原理了吧
細心的人也許會問 "數據"都在遠程伺服器 修改客戶端也沒用啊"
沒錯 數據是在遠程伺服器那 但是大家是否考慮過這個問題呢 那就是"遠程伺服器都是由本地客戶端發送指令才反饋"
※更明確的說 我們不是為了修改游戲數值 而是要"欺騙伺服器"主動還是掌握在客戶端的發送的指令上... ...
比如我賣了件10W的衣服 通過內存查找准確數值進行修改然後把數值修改成100W那麼發送給伺服器的就是你賣了100W
同樣的 我打了一個怪物得到了100經驗 通過修改封包成100W... ...
............................................................................................................................................................................................
使用工具
WPE(網路封包剪裁發送修改工具)
注意事項:務必掐8到10次重復信息進行對比 並注意數值的變化和修改
M2M(加密內存解讀工具)
注意事項:內存中一般00較多 通過這個常識 對特殊加密幫助很大
WINHEX(程序內存輔助工具)
㈢ crazybox顯示配置文件過期 更新配置文件中 但是毫無作用
怎麼截獲一個游戲的封包? 怎麼去檢查游戲伺服器的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 04 2) SEND-> 0000 01 06 99 53 68 61 64 6F 77 00 01 05 3) SEND-> 0000 03 84 11 09 11 09 4) 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 顯示正在進行的工作。
三:怎麼來分析我們截獲的封包?
首先我們將WPE截獲的封包保存為文本文件,然後打開它,這時會看到如下的數據(這里我們以金庸群俠傳里PK店小二客戶端發送的數據為例來講解):
第一個文件: SEND-> 0000 E6 56 0D 22 7E 6B E4 17 13 13 12 13 12 13 67 1B SEND-> 0010 17 12 DD 34 12 12 12 12 17 12 0E 12 12 12 9B SEND-> 0000 E6 56 1E F1 29 06 17 12 3B 0E 17 1A SEND-> 0000 E6 56 1B C0 68 12 12 12 5A SEND-> 0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12 12 SEND-> 0000 E6 56 17 C9 12
第二個文件: SEND-> 0000 83 33 68 47 1B 0E 81 72 76 76 77 76 77 76 02 7E SEND-> 0010 72 77 07 1C 77 77 77 77 72 77 72 77 77 77 6D SEND-> 0000 83 33 7B 94 4C 63 72 77 5E 6B 72 F3 SEND-> 0000 83 33 7E A5 21 77 77 77 3F SEND-> 0000 83 33 67 AD 76 CF 1B 0E 81 72 75 50 42 76 77 77 SEND-> 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 09 SEND-> 0010 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 89 2 SEND-> 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 08 3 SEND-> 0000 F4 44 09 D2 7A 00 00 00 48 4 SEND-> 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 00 5 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 09 SEND-> 0010 05 00 70 6B 00 00 00 00 05 00 05 00 00 00 1A 2 SEND-> 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 84 3 SEND-> 0000 F4 44 09 D2 56 00 00 00 48 4 SEND-> 0000 F4 44 10 DA 01 B8 6C 79 F6 05 02 27 35 01 00 00 5 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 09 SEND-> 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 00 SEND-> 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都構造這樣一個包,按順序連在一起發送給客戶端,客戶端也就被我們騙過了,很簡單吧。
以後戰斗中其他的事我們就不管了,盡情地開打吧,呵呵。
上面講的需要一定的編程基礎,但是不難,即使你不會編程,相信你繼續看下去就會有收獲了。
五:怎麼用計算機語言去寫一個單機代理?
在上一章,我們已經對於代理的原理進行了講解,大家對於代理已經有了一個初步的認識,現在我教大家如何用計算機語言編寫一個自己的代理,我們考慮到簡單明了,我們選用VB,因為用VB編寫代理只需要很少的代碼。
代碼如下:
Private Sub Form_Load() DaiLi.LocalPort = "1234" Server.RemotePort = "1234" Server.RemoteHost = "211.100.20.26" DaiLi.Listen End Sub
Private Sub DaiLi_ConnectionRequest(ByVal requestID As Long) Server.Connect Client.Accept requestIDEnd Sub
Private Sub Client_DataArrival(ByVal bytesTotal As Long) Dim ClientToServer() As Byte Client.GetData ClientToServer Server.SendData ClientToServerEnd Sub
Private Sub Server_DataArrival(ByVal bytesTotal As Long) Dim ServerToClient() As Byte Server.GetData ServerToClient Client.SendData ServerToClientEnd Sub
Form_Load()這個過程表示在程序啟動的時候要做的一些初始化操作。 DaiLi.LocalPort = "1234" 設定監聽埠 Server.RemotePort = "1234" 設定象游戲伺服器連接的埠(和監聽埠是相同的) Server.RemoteHost = "211.100.20.26" 設定游戲伺服器的IP地址 DaiLi.Listen 監聽本地的連接請求 這時你只要將游戲的伺服器列表的IP改成127.0.0.1,那麼游戲的客戶端程序就會來連接我們的代理,我們的代理會調用如下的過程: Private Sub DaiLi_ConnectionRequest(ByVal requestID As Long) Server.Connect 代理客戶端向伺服器連接 Client.Accept requestID 接受客戶端的連接請求 End Sub
當客戶端向伺服器發送數據時,就會調用下邊的過程 Private Sub Client_DataArrival(ByVal bytesTotal As Long) Dim ClientToServer() As Byte 變數定義,請求了一個用於存放數據的空間 Client.GetData ClientToServer 客戶端的連接接收這些數據 在這里我們可以添加自己的代碼,對封包進行修改,然後再發向伺服器。
Server.SendData ClientToServer 伺服器的連接把這些數據發向伺服器 End Sub
當伺服器發送數據給客戶端時,會調用下邊的過程 Private Sub Server_DataArrival(ByVal bytesTotal As Long) Dim ServerToClient() As Byte 變數定義,請求了一個用於存放數據的空間 Server.GetData ServerToClient 伺服器連接接收數據 在這里我們可以添加自己的代碼,對封包進行修改,然後再發給客戶端。
Client.SendData ServerToClient End Sub
用其他語言編寫基本的原理也是差不多的,不過可能稍微要麻煩一些,因為VB本身有一個MSWINSCK.OCX控制項,這個控制項封裝了WINDOWS的網路操作,而且介面很簡單,推薦大家使用。
㈣ WPE PRO 1.0使用方法
製作游戲外掛,更改封包 WPE pro
WPE pro部分功能讓我們來看一下網路游戲的工作原理:
網路游戲是這樣工作的:
1.由伺服器記錄保存所有用戶資料,所有信息的修改都是伺服器完成的
2.伺服器接受客戶機的請求發送必要的信息給客戶機,以使玩家正常游戲
3.伺服器接收客戶機的信息反饋,並根據反饋信息,對游戲帳號作相應修改
從以上簡單的介紹,我們可以看出,網路游戲可以認為是這樣工作的:
由客戶機電腦操作伺服器器電腦,對游戲帳號信息進行修改!
要操縱本地的電腦是很容易的,因此,要顯示所有已經從伺服器得到的信息是完全可能的,這就可以做到以下功能:
1、游戲沒有黑夜,因為地圖在本地,全部顯示是完全可以做到的!
2.自動加血是沒有問題的,因為血的多少也已經發到本地電腦,完全可以用外掛檢測到,並在必要時加血,加血本身只是一個滑鼠動作,完全可以交給外掛去做。類似的,自動加魔法,自動加氣,自動回城、自動打怪、自動采礦賣錢然後再自動回去采、自動練級等等都可以做到!
3.賣東西的過程很經典:你賣東西時,實際就是告訴伺服器電腦,你已經將一個東西賣了,真實過程是:你向伺服器發送了一個具體物品的封包,如果這個封包正確,伺服器就向你的游戲帳號加一定數量的錢,然後再反饋給你一些信息,假如封包不正確,自然就賣不到錢,因此,我們可以利用外掛不斷向伺服器發送封包,只要正確,那麼伺服器就認為我們再賣東西,即使我們什麼都沒有賣,伺服器也不斷給我們錢,這就是所謂的刷錢。如果封包沒有加密,那麼這個功能是非常容易實現的,如果封包加密,其實同樣可以做到,只是要解密而已,稍微復雜些而已!類似的,就可以實現買東西用假錢(不用錢)。攻擊、防禦增加,原理都是類似的!
以上的講解,大家應該明白,其實外掛是每個游戲都可能出現的,只要有人想做,那麼就沒有做不出外掛的游戲!除非這個游戲不能玩!!
WPE的使用:本站提供資料供大家學習使用,有了成果也拿出來分享啊 :)
明天你來自己做外掛 隨著網路游戲的日益火爆,很多玩家都投身到游戲中。目前很多玩家都依賴於一些游戲的外掛程序來進行游戲。那麼做一個游戲的外掛程序是否是一件很困難的事呢?回答是"否",誠然編寫一些程序是需要一些基本知識的,所以我們想以最簡單的語言來給你講授編寫外掛程序的一些技巧,一些方法,並提供給你一些基本的輔助工具,即使你是一個菜鳥,看了我們的教程,並技巧地使用我們提供給你的工具,你完全能夠編寫出一個完全屬於你自己的外掛。在本教程內,我們提供了金庸群俠傳,以及網路三國這兩個游戲的修改實際例子,因為這兩款游戲都是對封包進行過加密運算的,如果你對這兩個游戲的修改有了一定的了解後,相信你在其他游戲中也能非常好地做出屬於自己的外掛。我們提供了金庸打增援20個NPC和網路三國在PK中自動吃葯,自動發鏢這兩個實際的例子,讓你上手更容易。我們也會本教程內附上這兩個軟體以提供給你使用和學習。我們會在教程內講授給你怎麼去破解封包的加密演算法,怎麼利用我們提供給你工具來偽造和發送封包。本教程除了文字教程外,我們還會提供金庸群俠和三國的外掛程序,另外還提供6個外掛製作工具,以供你使用。希望在以後的游戲中,每一個玩家都能夠在游戲中成長起來,不但游戲玩的出色,修改游戲也同樣出色,做一個真正的游戲DIY。 要想在修改游戲中做到百戰百勝,是需要相當豐富的計算機知識的。有很多計算機高手就是從玩游戲,修改游戲中,逐步對計算機產生濃厚的興趣,逐步成長起來的。不要在羨慕別人能夠做到的,因為別人能夠做的你也能夠!我相信你們看了本教程後,會對游戲有一個全新的認識,呵呵,因為我是個好老師!(別拿雞蛋砸我呀,救命啊!#¥%……*) 不過要想從修改游戲中學到知識,增加自己的計算機水平,可不能只是*修改游戲呀! 要知道,修改游戲只是一個驗證你對你所了解的某些計算機知識的理解程度的場所,只能給你一些發現問題、解決問題的機會,只能起到幫助你提高學習計算機的興趣的作用,而決不是學習計算機的捷徑。
--------------------------------------------------------------------------------
一:什麼叫外掛?
現在的網路游戲多是基於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 顯示正在進行的工作。
--------------------------------------------------------------------------------
三:怎麼來分析我們截獲的封包?
首先我們將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都構造這樣一個包,按順序連在一起發送給客戶端,客戶端也就被我們騙過了,很簡單吧。
以後戰斗中其他的事我們就不管了,盡情地開打吧。
㈤ iris怎麼攔截某一程序
怎麼截獲一個游戲的封包? 怎麼去檢查游戲伺服器的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 04 2) SEND-> 0000 01 06 99 53 68 61 64 6F 77 00 01 05 3) SEND-> 0000 03 84 11 09 11 09 4) 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 顯示正在進行的工作。
三:怎麼來分析我們截獲的封包?
首先我們將WPE截獲的封包保存為文本文件,然後打開它,這時會看到如下的數據(這里我們以金庸群俠傳里PK店小二客戶端發送的數據為例來講解):
第一個文件: SEND-> 0000 E6 56 0D 22 7E 6B E4 17 13 13 12 13 12 13 67 1B SEND-> 0010 17 12 DD 34 12 12 12 12 17 12 0E 12 12 12 9B SEND-> 0000 E6 56 1E F1 29 06 17 12 3B 0E 17 1A SEND-> 0000 E6 56 1B C0 68 12 12 12 5A SEND-> 0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12 12 SEND-> 0000 E6 56 17 C9 12
第二個文件: SEND-> 0000 83 33 68 47 1B 0E 81 72 76 76 77 76 77 76 02 7E SEND-> 0010 72 77 07 1C 77 77 77 77 72 77 72 77 77 77 6D SEND-> 0000 83 33 7B 94 4C 63 72 77 5E 6B 72 F3 SEND-> 0000 83 33 7E A5 21 77 77 77 3F SEND-> 0000 83 33 67 AD 76 CF 1B 0E 81 72 75 50 42 76 77 77 SEND-> 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 09 SEND-> 0010 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 89 2 SEND-> 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 08 3 SEND-> 0000 F4 44 09 D2 7A 00 00 00 48 4 SEND-> 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 00 5 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 09 SEND-> 0010 05 00 70 6B 00 00 00 00 05 00 05 00 00 00 1A 2 SEND-> 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 84 3 SEND-> 0000 F4 44 09 D2 56 00 00 00 48 4 SEND-> 0000 F4 44 10 DA 01 B8 6C 79 F6 05 02 27 35 01 00 00 5 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 09 SEND-> 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 00 SEND-> 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都構造這樣一個包,按順序連在一起發送給客戶端,客戶端也就被我們騙過了,很簡單吧。
以後戰斗中其他的事我們就不管了,盡情地開打吧,呵呵。
上面講的需要一定的編程基礎,但是不難,即使你不會編程,相信你繼續看下去就會有收獲了。
五:怎麼用計算機語言去寫一個單機代理?
在上一章,我們已經對於代理的原理進行了講解,大家對於代理已經有了一個初步的認識,現在我教大家如何用計算機語言編寫一個自己的代理,我們考慮到簡單明了,我們選用VB,因為用VB編寫代理只需要很少的代碼。
代碼如下:
Private Sub Form_Load() DaiLi.LocalPort = "1234" Server.RemotePort = "1234" Server.RemoteHost = "211.100.20.26" DaiLi.Listen End Sub
Private Sub DaiLi_ConnectionRequest(ByVal requestID As Long) Server.Connect Client.Accept requestIDEnd Sub
Private Sub Client_DataArrival(ByVal bytesTotal As Long) Dim ClientToServer() As Byte Client.GetData ClientToServer Server.SendData ClientToServerEnd Sub
Private Sub Server_DataArrival(ByVal bytesTotal As Long) Dim ServerToClient() As Byte Server.GetData ServerToClient Client.SendData ServerToClientEnd Sub
Form_Load()這個過程表示在程序啟動的時候要做的一些初始化操作。 DaiLi.LocalPort = "1234" 設定監聽埠 Server.RemotePort = "1234" 設定象游戲伺服器連接的埠(和監聽埠是相同的) Server.RemoteHost = "211.100.20.26" 設定游戲伺服器的IP地址 DaiLi.Listen 監聽本地的連接請求 這時你只要將游戲的伺服器列表的IP改成127.0.0.1,那麼游戲的客戶端程序就會來連接我們的代理,我們的代理會調用如下的過程: Private Sub DaiLi_ConnectionRequest(ByVal requestID As Long) Server.Connect 代理客戶端向伺服器連接 Client.Accept requestID 接受客戶端的連接請求 End Sub
當客戶端向伺服器發送數據時,就會調用下邊的過程 Private Sub Client_DataArrival(ByVal bytesTotal As Long) Dim ClientToServer() As Byte 變數定義,請求了一個用於存放數據的空間 Client.GetData ClientToServer 客戶端的連接接收這些數據 在這里我們可以添加自己的代碼,對封包進行修改,然後再發向伺服器。
Server.SendData ClientToServer 伺服器的連接把這些數據發向伺服器 End Sub
當伺服器發送數據給客戶端時,會調用下邊的過程 Private Sub Server_DataArrival(ByVal bytesTotal As Long) Dim ServerToClient() As Byte 變數定義,請求了一個用於存放數據的空間 Server.GetData ServerToClient 伺服器連接接收數據 在這里我們可以添加自己的代碼,對封包進行修改,然後再發給客戶端。
Client.SendData ServerToClient End Sub
用其他語言編寫基本的原理也是差不多的,不過可能稍微要麻煩一些,因為VB本身有一個MSWINSCK.OCX控制項,這個控制項封裝了WINDOWS的網路操作,而且介面很簡單,推薦大家使用。
六:如果單機代理被封,我們怎麼利用底層的技術來接管游戲的發包?
在WINDOWS系統中,網路通訊的任務是由一個叫WSOCK32.DLL(在SYSTEM目錄下)來完成的,每當游戲被運行時,他都會自動的去調用這個動態連接庫,因為在WINDOWS系統中對於文件的搜索順序是 程序目錄>系統目錄>路徑中設置的目錄,所以我們就有機會替換掉系統的WSOCK32.DLL使的游戲調用我們的WSOCK32.DLL,這樣我們就有了對於游戲封包絕對的控制權,有人問:"我們應該怎麼做呢?",我們只要自己編寫一個WSOCK32.DLL放到游戲的目錄下,就OK了,當然讓我們完全自己去編寫一個WSOCK32.DLL是不太現實的,因為本身網路通訊要處理很多更底層的東西,比如說從網卡讀取BIT流,所以我們選擇由我們的WSOCK32.DLL去調用系統的WSOCK32.DLL來完成這個功能。
WSOCK32.DLL有很多的輸出函數,函數如下: __WSAFDIsSet accept AcceptEx Arecv Asend bind closesocket closesockinfo connect dn_expand EnumProtocolsA EnumProtocolsW GetAcceptExSockaddrs GetAddressByNameA GetAddressByNameW gethostbyaddr gethostbyname gethostname GetNameByTypeA GetNameByTypeW getnetbyname getpeername getprotobyname getprotobynumber getservbyname getservbyport GetServiceA GetServiceW getsockname getsockopt GetTypeByNameA GetTypeByNameW htonl htons inet_addr inet_network inet_ntoa ioctlsocket listen MigrateWinsockConfiguration NPLoadNameSpaces NSPStartup ntohl ntohs rcmd recv recvfrom rexec rresvport s_perror select send sendto sethostname SetServiceA SetServiceW setsockopt shutdown socket TransmitFile WEP WSAAsyncGetHostByAddr WSAAsyncGetHostByName WSAAsyncGetProtoByName WSAAsyncGetProtoByNumber WSAAsyncGetServByName WSAAsyncGetServByPort WSAAsyncSelect WSACancelAsyncRequest WSACancelBlockingCall WSACleanup WSAGetLastError WSAIsBlocking WSApSetPostRoutine WSARecvEx WSASetBlockingHook WSASetLastError WSAStartup WSAUnhookBlockingHook WsControl WSHEnumProtocols
在這里,不是所有的函數都要修改,因為我們只關心發送和接收的封包,所以我們只要修改send 和recv兩個函數,前者是發送封包的後者是接收封包的,我們在這兩個函數的處理中加入我們自己的代碼,來完成封包的辨認,修改以及轉發等功能。
七:怎麼來分析客戶端的有關資料?
自己作外掛,大多時候要分析封包,不過因為有的功能是由客戶端來辨別的,所以分析客戶端的程序同樣也很重要,分析客戶端首先要求你能看懂匯編指令(只要"看懂",要求很低的),其次是要能夠熟練的運用一些工具,然後能剩下的也就是運氣和游戲公司的漏洞了。(哈,不是每次都能成功的啊)下邊我分步教給大家。
第一章 8086匯編指令
註:AX,BX,CX...,EAX,EBX,ECX...這些都是CPU用來存儲數據的地方。
一、數據傳輸指令 作用:它們在存貯器和寄存器、寄存器和輸入輸出埠之間傳送數據. 1. 通用數據傳送指令. MOV 傳送字或位元組. MOVSX 先符號擴展,再傳送. MOVZX 先零擴展,再傳送. PUSH 把字壓入堆棧. POP 把字彈出堆棧. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧. BSWAP 交換32位寄存器里位元組的順序 XCHG 交換字或位元組.( 至少有一個操作數為寄存器,段寄存器不可作為操作數) CMPXCHG 比較並交換操作數.( 第二個操作數必須為累加器AL/AX/EAX ) XADD 先交換再累加.( 結果在第一個操作數里 ) XLAT 位元組查表轉換. BX 指向一張 256 位元組的表的起點, AL 為表的索引值 (0-255,即 0-FFH); 返回 AL 為查表結果. ( [BX+AL]->AL )
2. 輸入輸出埠傳送指令. IN I/O埠輸入. ( 語法: IN 累加器, {埠號│DX} ) OUT I/O埠輸出. ( 語法: OUT {埠號│DX},累加器 ) 輸入輸出埠由立即方式指定時, 其范圍是 0-255; 由寄存器 DX 指定時,其范圍是 0-65535.
3. 目的地址傳送指令. LEA 裝入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS 傳送目標指針,把指針內容裝入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES 傳送目標指針,把指針內容裝入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 傳送目標指針,把指針內容裝入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 傳送目標指針,把指針內容裝入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 傳送目標指針,把指針內容裝入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
4. 標志傳送指令. LAHF 標志寄存器傳送,把標志裝入AH. SAHF 標志寄存器傳送,把AH內容裝入標志寄存器. PUSHF 標志入棧. POPF 標志出棧. PUSHD 32位標志入棧. POPD 32位標志出棧.
二、算術運算指令 ADD 加法. ADC 帶進位加法. INC 加 1. AAA 加法的ASCII碼調整. DAA 加法的十進制調整. SUB 減法. SBB 帶借位減法. DEC 減 1. NEC 求反(以 0 減之). CMP 比較.(兩操作數作減法,僅修改標志位,不回送結果). AAS 減法的ASCII碼調整. DAS 減法的十進制調整. MUL 無符號乘法. IMUL 整數乘法. 以上兩條,結果回送AH和AL(位元組運算),或DX和AX(字運算), AAM 乘法的ASCII碼調整. DIV 無符號除法. IDIV 整數除法. 以上兩條,結果回送: 商回送AL,余數回送AH, (位元組運算); 或 商回送AX,余數回送DX, (字運算). AAD 除法的ASCII碼調整. CBW 位元組轉換為字. (把AL中位元組的符號擴展到AH中去) CWD 字轉換為雙字. (把AX中的字的符號擴展到DX中去) CWDE 字轉換為雙字. (把AX中的字元號擴展到EAX中去) CDQ 雙字擴展. (把EAX中的字的符號擴展到EDX中去)
三、邏輯運算指令 AND 與運算. OR 或運算. XOR 異或運算. NOT 取反. TEST 測試.(兩操作數作與運算,僅修改標志位,不回送結果). SHL 邏輯左移. SAL 算術左移.(=SHL) SHR 邏輯右移. SAR 算術右移.(=SHR) ROL 循環左移. ROR 循環右移. RCL 通過進位的循環左移. RCR 通過進位的循環右移. 以上八種移位指令,其移位次數可達255次. 移位一次時, 可直接用操作碼. 如 SHL AX,1. 移位>1次時, 則由寄存器CL給出移位次數. 如 MOV CL,04 SHL AX,CL
四、串指令 DS:SI 源串段寄存器 :源串變址. ES:DI 目標串段寄存器:目標串變址. CX 重復次數計數器. AL/AX 掃描值. D標志 0表示重復操作中SI和DI應自動增量; 1表示應自動減量. Z標志 用來控制掃描或比較操作的結束. MOVS 串傳送. ( MOVSB 傳送字元. MOVSW 傳送字. MOVSD 傳送雙字. ) CMPS 串比較. ( CMPSB 比較字元. CMPSW 比較字. ) SCAS 串掃描. 把AL或AX的內容與目標串作比較,比較結果反映在標志位. LODS 裝入串. 把源串中的元素(字或位元組)逐一裝入AL或AX中. ( LODSB 傳送字元. LODSW 傳送字. LODSD 傳送雙字. ) STOS 保存串. 是LODS的逆過程. REP 當CX/ECX<>0時重復. REPE/REPZ 當ZF=1或比較結果相等,且CX/ECX<>0時重復. REPNE/REPNZ 當ZF=0或比較結果不相等,且CX/ECX<>0時重復. REPC 當CF=1且CX/ECX<>0時重復. REPNC 當CF=0且CX/ECX<>0時重復.
五、程序轉移指令 1>無條件轉移指令 (長轉移) JMP 無條件轉移指令 CALL 過程調用 RET/RETF過程返回. 2>條件轉移指令 (短轉移,-128到+127的距離內) ( 當且僅當(SF XOR OF)=1時,OP1循環控制指令(短轉移) LOOP CX不為零時循環. LOOPE/LOOPZ CX不為零且標志Z=1時循環. LOOPNE/LOOPNZ CX不為零且標志Z=0時循環. JCXZ CX為零時轉移. JECXZ ECX為零時轉移. 4>中斷指令 INT 中斷指令 INTO 溢出中斷 IRET 中斷返回 5>處理器控制指令 HLT 處理器暫停, 直到出現中斷或復位信號才繼續. WAIT 當晶元引線TEST為高電平時使CPU進入等待狀態. ESC 轉換到外處理器. LOCK 封鎖匯流排. NOP 空操作. STC 置進位標志位. CLC 清進位
㈥ 網路封包分析軟體對網路安全有什麼意義 網路封包分析軟體對網路知識學習有什麼幫助
一、背景分析
提起網路信息安全,人們自然就會想到病毒破壞和黑客攻擊。其實不然,政府和企業因信息被竊取所造成的損失遠遠超過病毒破壞和黑客攻擊所造成的損失,據權威機構調查:三分之二以上的安全威脅來自泄密和內部人員犯罪,而非病毒和外來黑客引起。
目前,政府、企業等社會組織在網路安全防護建設中,普遍採用傳統的內網邊界安全防護技術,即在組織網路的邊緣設置網關型邊界防火牆、AAA認證、入侵檢測系統IDS等等網路邊界安全防護技術,對網路入侵進行監控和防護,抵禦來自組織外部攻擊、防止組織網路資源、信息資源遭受損失,保證組織業務流程的有效進行。
這種解決策略是針對外部入侵的防範,對於來自網路內部的對企業網路資源、信息資源的破壞和非法行為的安全防護卻無任何作用。對於那些需要經常移動的終端設備在安全防護薄弱的外部網路環境的安全保障,企業基於網路邊界的安全防護技術就更是鞭長莫及了,由此危及到內部網路的安全。一方面,企業中經常會有人私自以Modem撥號方式、手機或無線網卡等方式上網,而這些機器通常又置於企業內網中,這種情況的存在給企業網路帶來了巨大的潛在威脅;另一方面,黑客利用虛擬專用網路VPN、無線區域網、操作系統以及網路應用程序的各種漏洞就可以繞過企業的邊界防火牆侵入企業內部網路,發起攻擊使內部網路癱瘓、重要伺服器宕機以及破壞和竊取企業內部的重要數據。
二、內網安全風險分析
現代企業的網路環境是建立在當前飛速發展的開放網路環境中,顧名思義,開放的環境既為信息時代的企業提供與外界進行交互的窗口,同時也為企業外部提供了進入企業最核心地帶——企業信息系統的便捷途徑,使企業網路面臨種種威脅和風險:病毒、蠕蟲對系統的破壞;系統軟體、應用軟體自身的安全漏洞為不良企圖者所利用來竊取企業的信息資源;企業終端用戶由於安全意識、安全知識、安全技能的匱乏,導致企業安全策略不能真正的得到很好的落實,開放的網路給企業的信息安全帶來巨大的威脅。
1.病毒、蠕蟲入侵
目前,開放網路面臨的病毒、蠕蟲威脅具有傳播速度快、范圍廣、破壞性大、種類多、變化快等特點,即使再先進的防病毒軟體、入侵檢測技術也不能獨立有效地完成安全防護,特別是對新類型新變種的病毒、蠕蟲,防護技術總要相對落後於新病毒新蠕蟲的入侵。
病毒、蠕蟲很容易通過各種途徑侵入企業的內部網路,除了利用企業網路安全防護措施的漏洞外,最大的威脅卻是來自於內部網路用戶的各種危險應用:不安裝殺毒軟體;安裝殺毒軟體但不及時升級;網路用戶在安裝完自己的辦公桌面系統後,未採取任何有效防護措施就連接到危險的網路環境中,特別是Internet;移動用戶計算機連接到各種情況不明網路環境,在沒有採取任何防護措施的情況下又連入企業網路;桌面用戶在終端使用各種數據介質、軟體介質等等都可能將病毒、蠕蟲在不知不覺中帶入到企業網路中,給企業信息基礎設施,企業業務帶來無法估量的損失。
2.軟體漏洞隱患
企業網路通常由數量龐大、種類繁多的軟體系統組成,有系統軟體、資料庫系統、應用軟體等等,尤其是存在於廣大終端用戶辦公桌面上的各種應用軟體不勝繁雜,每一個軟體系統都有不可避免的、潛在的或已知的軟體漏洞。無論哪一部分的漏洞被利用,都會給企業帶來危害,輕者危及個別設備,重者成為攻擊整個企業網路媒介,危及整個企業網路安全。
3.系統安全配置薄弱
企業網路建設中應用的各種軟體系統都有各自默認的安全策略增強的安全配置設置,例如,賬號策略、審核策略、屏保策略、匿名訪問限制、建立撥號連接限制等等。這些安全配置的正確應用對於各種軟體系統自身的安全防護的增強具有重要作用,但在實際的企業網路環境中,這些安全配置卻被忽視,尤其是那些網路的終端用戶,導致軟體系統的安全配置成為「軟肋」、有時可能嚴重為配置漏洞,完全暴露給整個外部。例如某些軟體系統攻擊中採用的「口令強制攻擊」就是利用了弱口令習慣性的使用安全隱患,黑客利用各種網路應用默認安裝中向外部提供的有限信息獲取攻擊的必要信息等等。
4.脆弱的網路接入安全防護
傳統的網路訪問控制都是在企業網路邊界進行的,或在不同的企業內網不同子網邊界進行且在網路訪問用戶的身份被確認後,用戶即可以對企業內網進行各種訪問操作。在這樣一個訪問控制策略中存在無限的企業網路安全漏洞,例如,企業網路的合法移動用戶在安全防護較差的外網環境中使用VPN連接、遠程撥號、無線AP,乙太網接入等等網路接入方式,在外網和企業內網之間建立一個安全通道。
另一個傳統網路訪問控制問題來自企業網路內部,尤其對於大型企業網路擁有成千上萬的用戶終端,使用的網路應用層出不窮,目前對於企業網管很難准確的控制企業網路的應用,這樣的現實導致安全隱患的產生:員工使用未經企業允許的網路應用,如郵件伺服器收發郵件,這就可能使企業的保密數據外泄或感染郵件病毒;企業內部員工在終端上私自使用未經允許的網路應用程序,在此過程中就有可能下載到帶有病毒、木馬程序等惡意代碼的軟體,從而感染內部網路,進而造成內部網路中敏感數據的泄密或損毀。
5.企業網路入侵
現階段黑客攻擊技術細分下來共有8類,分別為入侵系統類攻擊、緩沖區溢出攻擊、欺騙類攻擊、拒絕服務攻擊、對防火牆的攻擊、病毒攻擊、偽裝程序/木馬程序攻擊、後門攻擊。
對於採取各種傳統安全防護措施的企業內網來說,都沒有萬無一失的把握;對於從企業內網走出到安全防護薄弱的外網環境的移動用戶來說,安全保障就會嚴重惡化,當移動用戶連接到企業內網,就會將各種網路入侵帶入企業網路。
6.終端用戶計算機安全完整性缺失
隨著網路技術的普及和發展,越來越多的員工會在企業專網以外使用計算機辦公,同時這些移動員工需要連接回企業的內部網路獲取工作必須的數據。由於這些移動用戶處於專網的保護之外,很有可能被黑客攻陷或感染網路病毒。同時,企業現有的安全投資(如:防病毒軟體、各種補丁程序、安全配置等)若處於不正常運行狀態,終端員工沒有及時更新病毒特徵庫,或私自卸載安全軟體等,將成為黑客攻擊內部網路的跳板。
三、內網安全實施策略
1.多層次的病毒、蠕蟲防護
病毒、蠕蟲破壞網路安全事件一直以來在網路安全領域就沒有一個根本的解決辦法,其中的原因是多方面的,有人為的原因,如不安裝防殺病毒軟體,病毒庫未及時升級等等,也有技術上的原因,殺毒軟體、入侵防範系統等安全技術對新類型、新變異的病毒、蠕蟲的防護往往要落後一步。危害好像是無法避免的,但我們可以控制它的危害程度,只要我們針對不同的原因採取有針對性的切實有效的防護辦法,就會使病毒、蠕蟲對企業的危害減少到最低限度,甚至沒有危害。這樣,僅靠單一、簡單的防護技術是難以防護病毒、蠕蟲的威脅的。
2.終端用戶透明、自動化的補丁管理,安全配置
為了彌補和糾正運行在企業網路終端設備的系統軟體、應用軟體的安全漏洞,使整個企業網路安全不至由於個別軟體系統的漏洞而受到危害,完全必要在企業的安全管理策略中加強對補丁升級、系統安全配置的管理。
用戶可通過管理控制台集中管理企業網路終端設備的軟體系統的補丁升級、系統配置策略,定義終端補丁下載。將補丁升級策略、增強終端系統安全配置策略下發給運行於各終端設備上的安全代理,安全代理執行這些策略,以保證終端系統補丁升級、安全配置的完備有效,整個管理過程都是自動完成的,對終端用戶來說完全透明,減少了終端用戶的麻煩和企業網路的安全風險,提高企業網路整體的補丁升級、安全配置管理效率和效用,使企業網路的補丁及安全配置管理策略得到有效的落實。
3.全面的網路准入控制
為了解決傳統的外網用戶接入企業網路給企業網路帶來的安全隱患,以及企業網路安全管理人員無法控制內部員工網路行為給企業網路帶來的安全問題,除了有效的解決企業員工從企業內網、外網以各種網路接入方式接入企業網路的訪問控制問題,同時對傳統的網路邊界訪問控制沒有解決的網路接入安全防護措施,而採用邊界准入控制、接入層准入控制等技術進行全面的實現准入控制。當外網用戶接入企業網路時,檢查客戶端的安全策略狀態是否符合企業整體安全策略,對於符合的外網訪問則放行。一個全面的網路准入檢測系統。
4.終端設備安全完整性保證
主機完整性強制是確保企業網路安全的關鍵組件。主機完整性可確保連接到企業網的客戶端正運行著所需的應用程序和數據文件。信息安全業界已經開發出了多種基於主機的安全產品,以確保企業網路和信息的安全,阻止利用網路連接技術、應用程序和操作系統的弱點和漏洞所發起的攻擊。並已充分採用了在個人防火牆、入侵檢測、防病毒、文件完整性、文件加密和安全補丁程序等方面的技術進步來有效地保護企業設備。然而,只有在充分保證這些安全技術的應用狀態、更新級別和策略完整性之後,才能享受這些安全技術給企業網路安全帶來的益處。如果企業端點設備不能實施主機完整性,也就不能將該設備看成企業網路受信設備。
僅供參考,請自借鑒
希望對您有幫助
㈦ 求一個軟體的下載 M2M 1.0 加密封包分析工具
對不起,我沒用過M2M 1.0 加密封包分析工具,但我可以提供以個類似工具的使用方法,你可以類比一下,看能不能學會。
遠程盜QQ,不用木馬
先說明:不支持任何人去做小偷!
這個方法什麼號都可以盜,只要是號!!!!!
首先,我們要用到wpe 你別說你不知道是什麼,這是一個攔截個修改封包數據的工具,很好用哦
好我們先演示一下WPE的使用,便於初次使用的朋友學習
先啟動這個IE,然後進入WPE選擇 IEXPLORE。EXE這個程序
就是白色字那個了,我們選定它,作為我們研究的對象!然後是發送封包接收封包的問題了,為了從最簡單的入手,我們先把網線拔了,什麼?不明白網線是什麼?那我無法說明了,你別問我,問旁邊的人吧,一定有人知道的,反正就是你上網那根線,先把它拔下來,這樣就沒有封包返回,方便研究!下面看看,我們從最簡單的入手,首先我們發送一個地址,就在IE中輸入地址,然後按回車,這里我們輸入的地址是:http://fengyes.con.cn/結果看到了吧,右邊有封包的分析,對於簡單的未加密的封包,WPE可以自動分析,下面我們輸入地址:http://fengyes.con.cn/ 結果又看到了哦
這是第一步如果你順利完成,看下一步,分析封包了哦,注意~
我們比較一下兩個封包,可以發現,相同的部分很多,按我們的分析應該差別只應該在「ee」與"ff"的區別,因為發送的內容只有這點差別,但是上面的封包顯示出來的卻不是這樣,為什麼?
其實,他們確實是一樣的,在IE的封包裡面,01、02、03、04都代表點的意思,也就是代表:"."這個意思,那麼你再分析就發現完全和我們預料的一樣了,這里是IE發送的封包,沒有加密的,您可以直接讀出來的!但是這不是10進制,而是16進制,因此,我們必須把它翻譯成為10進制,以方便我們閱讀,怎麼辦?
別忘了,我在WPE下載頁給出了一個Asic II工具,現在就用吧,
好,我們來翻譯這個封包,前面的不管,我們只關心封包裡面的數據:打開Asic II工具,輸入"W",點查看,看到了什麼?------「77」(十六進制),看到了吧,我們輸入的有3個「W」,這里是不是有3個77啊?前面已經講過,02代表點號,那麼,接下來是不是也是我們預料的是「f」呢?我們繼續用工具查一下看看,果然不出我們分析所料,真是f,不用多猜了,接下來的內容就是".com"怎麼樣?是不是很簡單呢?
還不懂?**,那我還講一次吧
在Internet Exproler中輸入http://fengyes.con.cn/,然後按回車
在WPE中點攔截
點三角形
收到封包後點紅色的正方形,封包就出現了
們來分析一下上面的內容!
首先幾點說明,這是對Internet Exproler進行的封包操作,請求的地址暫時不說,您可以分析出來的!下面是分析說明!
首先,本地發送請求到伺服器!發送內容是「21」,注意:您一定很容易地認為發送的是「21」,其實,數字也好,字母也好,一定要注意,全都是16進制的,所以,這個「21」不是我們平常的21,而是16進制的21,那我們來算一下21等於多少(計算21轉換為10進制等於多少)?21(16位)=2 x 16 + 1 = 33 (10進制),關於進制計算,我們專門的章節有說明的
再查ASCII表,看看33對應的是什麼字元?查到了嗎?是「!」,呵呵,WPE不是已經在右邊給我們顯示了嗎?不過我們要習慣分析哦,到游戲裡面可就沒那麼多的方便了!
那麼發送一個!是什麼意思呢?其實這個是網路連接的問題了,不必細究,要詳細了解的請查看關於網路連接3次握手的相關內容!這里不做講解!這個與游戲修改無關!
第3行47是什麼意思呢?算一下:47(16)=4 x 16 + 7 = 71(10)括弧內16代表16進制,10代表10進制,那麼71代表什麼?查表ASCII結果:71對應字母「G」
45呢?45(16)=4 X 16 +5 =69(10),查表出來的結果是:E
請你不要看右邊的分析,我知道右邊有現成的結果,但是你要自己分析,不然你拿著游戲就無從下手了!簡單的分析就是這樣了,是不是很輕松?好,再繼續分析幾個!
第15行,的3A什麼意思?
3A(16)=3 X 16 + 10 = 58(10)
查表得,58對應「 :」
倒數第2行B7什麼意思?
B7(16)=11 X 16 + 7 =183(10)
查表得到183對應:特殊字元,這里我無法幫你打出這個字元,抱歉!
注意,這里WPE也翻譯不出來對應的字元了,看到了嗎?WPE只翻譯了最後兩個,如果我們自己需要怎麼辦?當然是自己分析了,所以說不要看WPE幫你的分析,自己分析很重要
同樣,盜QQ也簡單嘛~~攔截他對伺服器所發送的登陸封包數據,看看,分析一下,密碼來了,脫離木馬的感覺爽嗎。
㈧ wep封包求解析!!!!!
明顯解密的玩意是錯的,還沒見過可以固定解封包的工具。
這個封包如果加密肯定是局部加密,你截取兩個相同類型的包比較一下就出來了,能把28=40的包長解密成下面垃圾的工具,千萬別用
㈨ 求一個軟體(M2M1.0)
QQ415284610
㈩ 游戲封包應該如何截取
怎麼來分析我們截獲的封包?
首先我們將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的工作到這里算是完成了一小半,接下來的事情,怎樣修改封包和發送封包,我們下節繼續講解吧。