國服遊戲封包解密-外掛製作全過程
[工具]OD,Wep,以及其它的一些文字工具
[目的]研究遊戲保護技術,深論協議級分析。
意在拋磚引玉,抵制遊戲外掛。我會在每個分析點做出一些保護上的思考。
開始正文。
一個多月前,有看過一些遊戲,DNF,路尼亞戰記。他們大概是屬於那種靠操作,連招一張地圖一張地圖那種遊戲。DNF是由騰迅公司代理的,自己做了點不強的小保護,但是還是被別人開發出了外掛。居然還有全屏秒殺怪功能。
從朋友那裡大概瞭解了點遊戲開發的一些設計思路,就伺服器和客戶端而言,有強伺服器弱客戶端,和強客戶端,弱伺服器。之類的分別。
大概dnf這樣的遊戲是屬於強客戶端這樣的遊戲,所以才有可能開發出全屏秒殺。二者主要的區別在於,把主要運算是放在伺服器端,還是放在客戶端。
經過我的分析,像路尼亞戰記這樣的遊戲,是屬於強伺服器的。
前邊所有的東西------我就不說了,開始分析。
首先,註冊個帳號,建立角色,然後登陸游戲。OD--附加遊戲程序。
既然是分析協議,我們就在send處下段。
在開始講解之前,首先要明確以下一些事。第一,我們明確的知道,我們的傳送包是經過加密處理了的。第二,我們要明確,我們要分析的send動作大概是什麼,比如說走一步,又比如說要開啟一個倉庫。
對於第二點,我們採用在send處,下段,然後在很快的反映時間裡,給遊戲一個動作。然後觀察send資料。
這裡我選擇的是開啟武器鋪,我們發現其開啟武器鋪的資料長度是0x0e.
71A24288 90 nop
71A24289 90 nop
71A2428A > 8BFF mov edi, edi ; dword ptr [esp+0x0c] == 0x0e
71A2428C . 55 push ebp
71A2428D . 8BEC mov ebp, esp
71A2428F . 83EC 10 sub esp, 10
71A24292 . 56 push esi
71A24293 . 57 push edi
71A24294 . 33FF xor edi, edi
71A24296 . 813D 2840A371>cmp dword ptr [71A34028], 71A29448 ; 入口地址
71A242A0 . 0F84 AD730000 je 71A2B653
71A242A6 > 8D45 F8 lea eax, dword ptr [ebp-8]
71A242A9 . 50 push eax
下條件斷點。
然後,當我們開啟武器鋪的時候,程式就會中斷在那裡。
然後,這時候,我們想知道的是,什麼時候,其向send資料包裡,那段記憶體寫入了資料,我們才能回爍跟蹤。
方法很多,我就不一一說了,就針對這個遊戲。談談...
我們多次開啟武器庫,觀察發現,其每次傳送的資料的記憶體地址都是一個。我們根據這個地方下硬體訪問斷點就好了。
-------這裡,要談談遊戲保護技術了。我覺得好點的保護,特別是在send點這裡,send的資料記憶體地址,應該盡力保持活躍,跳動。不能一直固定。好象(分析有段時間了,記憶就忘記了),朱仙這點就做的比較好,在send資料的時候。記憶體點會變。
但是使用alloc和reallloc等函式,又難免會被別人在這些關鍵點的地方下斷點。作為一個破解分析者,首先會考慮的是以最高效的方法做出分析。不會把所有的遊戲程式碼,反彙編讀完。所以一些關鍵點,應該考慮離散性高,偶合性高。高的偶合會讓分析者迷茫,找不到關鍵點。高的離散,會讓分析者解讀不出確實的意義。
接下來繼續。
007332C0 51 push ecx
007332C1 8B4424 0C mov eax, dword ptr [esp+C]
007332C5 85C0 test eax, eax
007332C7 55 push ebp
007332C8 8B6C24 0C mov ebp, dword ptr [esp+C]
007332CC 57 push edi
007332CD 8BF9 mov edi, ecx
007332CF 74 63 je short 00733334
007332D1 53 push ebx
007332D2 894424 18 mov dword ptr [esp+18], eax
007332D6 56 push esi
007332D7 EB 07 jmp short 007332E0
007332D9 8DA424 00000000 lea esp, dword ptr [esp]
007332E0 8A45 00 mov al, byte ptr [ebp]
007332E3 884424 18 mov byte ptr [esp+18], al
007332E7 8B47 04 mov eax, dword ptr [edi+4]
007332EA 8D48 01 lea ecx, dword ptr [eax+1]
007332ED 894424 10 mov dword ptr [esp+10], eax
007332F1 04 04 add al, 4
007332F3 894F 04 mov dword ptr [edi+4], ecx
007332F6 8D5424 10 lea edx, dword ptr [esp+10]
007332FA 8AC8 mov cl, al
007332FC BE 03000000 mov esi, 3
00733301 8A42 01 mov al, byte ptr [edx+1]
00733304 42 inc edx
00733305 B3 49 mov bl, 49
00733307 F6EB imul bl
00733309 34 15 xor al, 15
0073330B 02C8 add cl, al
0073330D 4E dec esi
0073330E ^ 75 F1 jnz short 00733301
00733310 0FB64424 18 movzx eax, byte ptr [esp+18]
00733315 0FB6D1 movzx edx, cl
00733318 8B4F 08 mov ecx, dword ptr [edi+8]
0073331B C1E2 08 shl edx, 8
0073331E 03D0 add edx, eax
00733320 8A140A mov dl, byte ptr [edx+ecx]
00733323 8B4424 1C mov eax, dword ptr [esp+1C]
00733327 8855 00 mov byte ptr [ebp], dl
0073332A 45 inc ebp ; 這裡
0073332B 48 dec eax
0073332C 894424 1C mov dword ptr [esp+1C], eax
00733330 ^ 75 AE jnz short 007332E0
00733332 5E pop esi
00733333 5B pop ebx
00733334 5F pop edi
00733335 5D pop ebp
00733336 59 pop ecx
00733337 C2 0800 retn 8
我們在硬體斷點的第二次F9條到這裡。
一般經過N次的觀察之後,我們會發現。這裡其實就是封包的加密函式。
這裡談談經驗之談。通常加密函式,都會和普通函式有所不同。因為從意義上來說,加密函式,主要完成的是資料加密,變換。所以其使用的指令,和其指令的方式會和正常函式有所不同。比如涉及到位操作,byte操作,會比較多。比如md5等,一看就shl什麼指令就是一篇篇。
這裡我們再談談,保護上的一些東西。--我覺得,位的變換,和其它的東西,不能一步寫死到一個函式頭,不然,解密者,就會像我做的一樣。找到加密call,分析加密call引數,然後分析出具體加密函式。然後就可以自己寫封包加密了。
這遊戲這點做的相當之差。
然後一個ctrl+F9,就來到下邊這裡。
00733340 56 push esi
00733341 8B7424 08 mov esi, dword ptr [esp+8]
00733345 8B06 mov eax, dword ptr [esi]
00733347 57 push edi
00733348 8BF9 mov edi, ecx
0073334A 8BCE mov ecx, esi
0073334C FF50 04 call dword ptr [eax+4] ; 取長度
0073334F 8B16 mov edx, dword ptr [esi]
00733351 50 push eax
00733352 8BCE mov ecx, esi
00733354 FF52 10 call dword ptr [edx+10] ; 取包明問
00733357 50 push eax
00733358 8BCF mov ecx, edi
0073335A E8 61FFFFFF call 007332C0 ; 堆疊結構依次為-封包明問-長度-解碼錶地址
0073335F 8B06 mov eax, dword ptr [esi]
00733361 8BCE mov ecx, esi
00733363 FF50 04 call dword ptr [eax+4]
00733366 5F pop edi
00733367 5E pop esi
00733368 C2 0400 retn 4
然後就慢慢分析了哈。
下邊貼出,一個月前,寫的針對這個遊戲的內掛的一些測試程式碼。各位可以配合到看,方便理解。
#include "InjectDll.h"
//BYTE nCmd[0x0e]={0x0E,0x00,0xe0,0x55,0x91,0x10,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned long MyApi = 0;
unsigned long hookApi = 0;
DWORD dwWrite = 0;
BYTE lpResetSend[0x05]={0x8B,0XFF,0X55,0X8B,0XEC};//用於恢復HookSend的5個位元組
HINSTANCE hws2_32 = NULL;//ws2_32控制代碼
HANDLE my_sendhandle;//儲存用語傳送send的控制代碼
int WINAPI DllMain(HANDLE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
{
// MessageBox( NULL, "yes", "yes", MB_OK);
相關推薦
國服遊戲封包解密-外掛製作全過程
[軟體]國服遊戲-路尼亞戰記 [工具]OD,Wep,以及其它的一些文字工具 [目的]研究遊戲保護技術,深論協議級分析。 意在拋磚引玉,抵制遊戲外掛。我會在每個分析點做出一些保護上的思考。 開始正文。 一個多月前,有看過一些遊戲,DNF,路尼亞戰記。他
網路遊戲封包基礎 作者不明
截包工具: http://free.ys168.com/?shoooo WPRO.rar MD5: 2E1E8E48FCC78972905E4F40081B608C IRIS.rar MD5: 6B919165C60D83
WPE製作遊戲外掛 更改封包
製作遊戲外掛 更改封包 以上地址本人未測試 可能含有惡意成分 大家下載之後,請先查毒 WPE pro部分功能讓我們來看一下網路遊戲的工作原理:網路遊戲是這樣工作的:1.由伺服器記錄儲存所有使用者資料,所有資訊的修改都是伺服器完成的2.伺服器接受客戶機的請求傳送必要的資訊給客戶機,以使玩家正常遊戲3.伺
網路封包基礎,執著遊戲外掛教程
要想在修改遊戲中做到百戰百勝,是需要相當豐富的計算機知識的。有很多計算機高手就是從玩遊戲,修改遊戲中,逐步 對計算機產生濃厚的興趣,逐步成長起來的。不要在羨慕別人能夠做到的,因為別人能夠做的你也能夠!我相信你們看了 本教程後,會對遊戲有一個全新的認識,呵呵,因為我是個好老師!
網曝“吃雞”國服17日上線,關於外掛,這些你都知道嗎?
後來 湖北 height 相對 一位 ots 付費 大於 方法 先來一組思考題:聽舅舅黨說,騰訊《絕地求生》國服會在1月17日上線?如果不免費,你會不會玩?如果沒外拐,你會不會玩?如果免費+道具付費,你會不會玩?如果只收你皮膚的錢,你會不會玩?為什麽“吃雞”官方對外掛認慫?
遊戲外掛製作原理
遊戲外掛開發原理 外掛現在大體上來講分為三種,分別是模擬按鍵,WPE封包和記憶體掛。比如模擬鍵盤的,滑鼠的,這種就叫做按鍵模擬,也叫指令碼精靈;還有修改資料包的,這種就叫做WPE封包外掛,這種外掛相對而言比較穩定,但是對於技術要求難度也比較高
遊戲外掛製作教材
前言: 做自己喜歡的!------ 明天你來自己做外掛 隨著網路遊戲的日益火爆,很多玩家都投身到遊戲中。目前很多玩家都依賴於一些遊戲的外掛程式來進行遊戲。那麼做一個遊戲的外掛程式是否是一件很困難的事呢?回答是"否",誠然編寫一些程式是需
1 使用WPE工具分析遊戲網路封包
WPE工具說明 在大多數的程式設計工具中winsock已經封裝成一個控制元件,成為網路程式設計的控制元件,是非常方便的,利用這個控制元件,程式設計工具就可以編寫外掛工具。 Client/server模式網路遊戲,我們的資訊全在伺服器上面,想從伺服器上修改我們的個人使
1.使用WPE工具分析遊戲網路封包
WPE工具說明 在大多數的程式設計工具中winsock已經封裝成一個控制元件,成為網路程式設計的控制元件,是非常方便的,利用這個控制元件,程式設計工具就可以編寫外掛工具。 Client/server模式網路遊戲,我們的資訊全在伺服器上面,想從伺服器上修改我們的個人使用者
網路遊戲協議封包需注意點
對於強客戶端的遊戲,就有很大可能出現離線掛,因為一切客戶端的計算、處理邏輯都不需要進行,只需要將最理想的作弊資料包直接發給伺服器,就能達到遊戲收益最大化。 下面這幾點是需要多加註意的點。 1.send函式 根據send呼叫的buffer,進行回溯,找到加密函式。對於send
簡單遊戲外掛製作教程
在幾年前我看到別人玩網路遊戲用上了外掛,做為程式設計師的我心裡實在是不爽,想搞清楚這到底是怎麼回事。就拿了一些來研究,小有心得,拿出來與大家共享,外掛無非就是分幾種罷了(依製作難度): 1、動作式,所謂動作式,就是指用API發命令給視窗或API控制滑鼠、鍵盤等,使遊戲裡的
SOCKET 封包和拆包
資源 isl 個數 遊戲服務器 指正 長度 num 部分 程序開發 對於基於TCP開發的通訊程序,有個很重要的問題需要解決,就是封包和拆包.自從我從事網絡通訊編程工作以來(大概有三年的時間了),我一直在思索和改進封包和拆包的方法.下面就針對這個問題談談我的想法,拋磚引玉.若
c++實現對windwos 下socket 的封裝(實現封包及拆包處理)
nth word temp add ips object invalid protected 數據 SuperSocket.h #pragma once #include<string> #include<iostream> #include &
Wolf RPG Editor遊戲解包
.exe 代碼 高亮 list 內容 order exe sha 改名 筆記地址(擁有代碼高亮,同時可以下載附件)http://ccdd6ec5.wiz03.com/share/s/3cTmX51TMQ-b2QTact03UPg81-T8i-379Qru2xkkfp1q7Q
Linux雲計算-完美解決Linux源代碼封包失敗問題
linux rpm 選項未知 解決Linux源代碼封包--host選項未知問題:錯誤信息:[[email protected] SPECS]# rpmbuild -ba ./nginx.spec Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.
【華為】華為模擬器 huawei ensp 靜態動態NAT ICMP 封包 wireshark抓包驗證telnet明文傳輸密碼
【華為】華為模擬器huawei ensp 靜態動態nat icmp 封包 wireshark抓包驗證telnet明文傳輸密碼詳細實踐過程,請見下方附件!本文出自 “我的Linux之夢” 博客,請務必保留此出處http://12098022.blog.51cto.com/12088022/198
bzoj 1025[SCOI2009]遊戲 - 背包dp
algorithm hide pen 長度 學會 read iostream nbsp const 1025: [SCOI2009]遊戲 Time Limit: 1 Sec Memory Limit: 162 MB Description windy學會了一種遊戲
asp.net core中遇到需要自定義數據包解密方法的時候
聲明 AD AR 但是 sof AC asp 參數聲明 request 最近將公司的項目用.netcore重寫, 服務的http外部接口部分收發消息是DES加解密的, 那麽在asp.net core mvc的action處理之前需要加入解密這個步驟. 我第一想到的是用f
西安傳奇1.76復古私服遊戲高防服務器
範範 發 高防服務器租用&托管聯系 QQ:2880990298TEL:19906909062 其實,我們如今回過頭來瀏覽QQ西遊一條龍服務器曬的產品,總是能整理緊接著的多少點:、曬自拍,自拍主是具有臉非常好啊,腰身次這類東西來體現自己具體比較好的出租房。 、曬優越感,主如逛了單個雄壯上
一款成功的全球服遊戲該如何進行架構選型與設計?
建議 滿足 異步 family tom 擁塞 支持 印度 特點 全球服遊戲如今正在成為出海遊戲的主要考慮模式,跨國對戰、全球通服打破國界的限制,將不同地區不同語言的玩家放在一起合作/競技,成功吸引了大量玩家的關註,並逐漸成為主流的遊戲玩法。遊戲廠商們也在嘗試采用一地部署多地