1. 程式人生 > >全面的學習 遊戲外掛 程式設計開發 視訊教程+原始碼

全面的學習 遊戲外掛 程式設計開發 視訊教程+原始碼

有遊戲分析,CALL基址分析,封包分析,外掛製作 ,逆向除錯,過驅動保護等課程

VC++外掛教程大綱(另有delphi版 大致相同)

程安排,暫定,有可能會實時修改
開發環境:VC++6.0
分析工具主要為(OD1.1,CE5.4,CE5.5)
預計平均3天左右更新一課
www.yjxsoft.net //主站,不定期開放註冊
www.yjxsoft.com //學員站,學員專用交流,永不對外開放
http://taobao.yjxsoft.com //淘寶擔保交易

大家好,我是鬱金香灬老師:QQ:150330575
歡迎大家參加鬱金香灬技術 VC++外掛程式設計VIP培訓班
在接下來的一段時間將由我和大家一起學習遊戲外掛的分析,製作。

課程分四個大章節
初級篇,中級篇,進階篇,高階篇
初級篇內容:編寫一個完整的,簡單的外掛
C++的資料型別:Byte,Word,DWORD,int,float
API函式的調mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage)
CE5.4工具的使用方法
中級篇內容:除錯工具的使用技巧,功能CALL的概念
除錯工具OD1.1的使用技巧(如硬體斷點,條件斷點,記憶體斷點。
常用匯編指令與對應高階語言的轉換。
遊戲功能CALL概念
找第一個功能CALL
外掛框架的構建(通用)
進階篇內容:分析遊戲內部資料,分析常用功能CALL
遊戲資料實踐找各種功能CALL(如打怪,選怪,物品使用,技能欄之類)及相應的程式碼編寫
高階篇內容:編寫完整外掛
完成一個相對完整的外掛,實現 自動掛機,打怪,存放物品之類的功能

1 入門篇. 主要講解CE工具使用技巧
1.1、一個最簡單的外掛
1.1.1、遊戲視窗資料分析(SPY++)
a、取得視窗相對座標
b、讀出遊戲視窗資訊GetWindowRect
c、移動滑鼠指標SetCursorPos
1.1.2 用VC++寫個最簡單的外掛(實現遊戲開局)
a、鼠擬滑鼠單擊mouse_event
b、滑鼠指標移動還原
c、整合到startgame函式裡
1.2、用CE查詢棋盤資料
1.2.1、CE中的資料型別
a、資料型別:Bit,Byte,Word,Dword,float,double
b、用CE查找出坐位號;
c、儲存分析資料
1.2.2、程式設計讀出坐位號;
a、遠端讀取程序資料
b、開啟遠端程序
c、讀取遠端程序資料
1.2.3、用CE查出棋盤基址;


a、找棋盤資料基址
b、分析棋盤資料結構
1.2.4、讀出當前棋盤資料
a、程式設計讀出棋盤資料
b、棋盤資料顯示出來
1.3、用模擬技術編制外掛
1.3.1 分析棋子與棋盤座標關係

a、滑鼠軟體模擬,函式SendMessage
b、分析視窗內棋子相對座標X,Y
c、軟體模擬點選棋盤座標x,y處的棋子
1.3.2 消掉一對棋子的演算法框架
a、遍歷棋盤同類型棋子配對
b、構建演算法框架
1.3.3 (Check2p)大致框架(演算法核心)
a、在這一對棋子間找相通路徑的原理
b、(Check2p函式)框架程式碼
c、(CheckLine函式)檢測2點是否有連通.
1.3.4 CheckLine實現
a、CheckLine函式實現
b、Check2p核心程式碼架構
1.3.5 Check2p完整程式碼實現
a、完整的Ceheck2p程式碼解析
b、完善CheckLine函式
1.3.6 Click2p函式實現,單消棋子功能實現
a、完成Click2p函式
b、單消一對棋子的實現
c、修改ClearPair函式
1.3.7 掛機/秒殺/
a、自動開局
b、掛機下棋
1.3.8 遊戲外掛介面美化
a、新增進度條
b、介面調整
c、Slider控制元件屬性設定
1.3.9 倒計時與棋子數(基址查詢)
a、查詢棋子數
b、查詢倒計時
c、開局標誌
1.4 編寫完整外掛
1.4.1 優化自動開局函式StartGame

a、讓遊戲視窗高高在上
b、優化開局函式
1.4.2 去掉遊戲倒計時限制
a、找到計時程式碼
b、動態修改遊戲程式碼(OD使用初探)
c、去掉計時限制
1.4.3 編寫完整外掛
a、功能測試
b、修改完善外掛
c、讀出當前棋子數
d、秒殺實現
1.4.4 初級篇小結
a、遊戲分析小結
b、程式設計小結

2 中級篇 以XX3D遊戲為例
2.1、分析前的準備..CALL簡介:
2.1.1、CALL的概念(遠端呼叫CALL)

a、寫個呼叫示例(假想遊戲客戶端)
b、用OD找CALL,初探(用OD找出我們自己寫的CALL)
c、程式碼注入器,遠端CALL呼叫
2.1.2、遠端CALL呼叫程式碼實現(遠端注入程式碼)(遠端插入執行緒)
a、CreateRemoteThread API函式
b、無引數的遠端CALL呼叫(程式碼實現)
2.1.3、除錯工具OD簡介(人物角色)血值,魔力值,座標偏移
a、CE找出當前血值偏移
b、OD 分析出魔力值,座標偏移
c、匯出遊戲關鍵程式碼
2.1.4、遊戲基址概念;
a、基址+偏移 概念
b、讀寫記憶體函式 引數簡介
c、程式設計實現讀出(血值,魔力值)
2.1.5、常用匯編指令詳解
a、Mov指令的幾種形式
b、彙編指與高階語言的轉換
c、push指令
2.1.6、內聯彙編程式設計例項
a、加法add
b、減法sub
c、純彙編呼叫函式CALL(引數的傳遞)
d、堆疊平衡

2.2、技能欄使用-遊戲分析利器OD(OllyDbg) 講解OD除錯分析 技巧
2.2.1、吃金創藥CALL

a、CE工具使用技巧
b、OD斷點F2
c、分析CALL的引數
d、程式碼注入器測試CALL
2.2.2、編寫自己的CALL測試程式碼
a、遠端分配記憶體空間VirtualAllocEx
b、向遊戲程序注入自己程式碼
c、遠端呼叫《吃金創藥》
2.3、DLL外掛框架構建
2.3.1、DLL動態連結庫構建,與呼叫

a、建立MFC動態連結庫dll
b、EXE程式中呼叫DLL函式
2.3.2、API與回撥函式
a、鍵盤勾子回撥函式keyProc
b、安裝函式SetupFun
c、注入DLL至遊戲程序空間
2.3.3、DLL中構建視窗
a、DLL中插入視窗資源
b、在遊戲內建立DLL視窗
c、DLL內CALL程式碼書寫(以吃紅藥為例)
2.4、選怪功能實現
2.4.1、找怪物列表基址
a、選定怪ID
b、怪物陣列基址
c、怪物陣列大小
2.4.2、分析怪物件屬性
a、怪物件ID
b、怪與玩家距離
c、怪物死亡狀態
2.4.3、遍歷怪物列表
a、選怪關鍵程式碼
b、定位一個怪物件
c、選怪功能實現
2.4.4、選怪功能優化
a、OD分析選怪功能對應程式碼
b、寫測試程式碼讓選定怪物血條正確顯示
c、整合選怪函式到SelMon()
2.5、用OD分析遊戲功能CALL.《XXXXXX》為例:主要是找CALL2.5.1、普通攻擊CALL關鍵程式碼分析
a、更新遊戲選怪基址
b、分析攻擊CALL關鍵程式碼
c、彙編指令與應高階語言對照翻譯
d、程式設計測試
2.5.2、掛機打怪功能
1、更新選怪CALL地址
2、優化程式碼結構
3、自動選怪程式碼編寫
4、自動打怪程式碼編寫
5、程式碼測試
2.5.3、物品揹包陣列基址+偏移分析(CE+OD)
a、確定突破口
b、回溯基址
c、用OD驗證
d、推匯出基址+偏移公式
2.5.4 、使用指定物品 UseGoods(int index=0);
a、演算法原理
b、返回物品在揹包中的下標 int GetGoodsIndex(char* name);
c、useGoods(GetGoodsIndex("金創藥(小)");
2.5.5、TabCtrl控制元件的使用(VC++基礎好的可跳過)
a、m_tab.InsertItem
b、m_tab.GetCurSel()
c、Create(IDD_PAG1,GetDlgItem(IDC_TAB))
2.5.6、TabCtrl控制元件BUG修證(VC++基礎好的可跳過)
a、修證亂碼
b、修證對齊
c、區域性美化(位置大小調整)
2.5.7、撿物功能分析實現
a、撿物功能CALL分析
b、撿物CALL引數分析
c、找出所有動作CALL(打坐/普攻/撿物/交易/組隊/走跑切換....)
d、測試及封裝到pickgoods()函式
2.5.8: F1-F10技能陣列分析
a、F1-F10技能欄陣列(基址+偏移)
b、F1-F10功能呼叫核心程式碼分析
2.5.9、F1-F10功能CALL
a、找出真的功能CALL
b、F1-F10功能CALL引數分析
c、F1-F10功能CALL測試(整合功能至GameProc.h)

3、進階篇
主要講功能CALL的引數分析
各種常用匯編指令/浮點指令/浮點數整數轉換/彙編裡的指標
3.1.1、喊話功能CALL地址
a、找喊話內容地址
b、分析出關鍵CALL
c、測試關鍵CALL
3.1.2、喊話功能VC++實現
a、分析喊話CALL引數基址+偏移
b、彙編指令lea
c、字串操作REPNZ/REPNE與SCAS
d、V++程式碼實現
3.2.1、走路相關資料分析(為分析走路/尋路CALL做準備)
a、查詢當前角色座標(xhy)
b、查詢目的地座標(xhy)偏移+基址
c、找出相關CALL
3.2.2、走路功能CALL及相關分析
a、隱藏的push指令
b、測試走路CALL
c、確定功能CALL及引數
3.2.3、對找到的幾個疑是CALL進行測試
a、分析出疑是CALL相關引數
b、對找到的CALL進行逐一測試
c、確定真正的走路CALL
3.2.4、人物走跑站狀態開關分析
a、走路CALL 狀態開關分析
b、分析狀態開關 基址+偏移
c、分析走路目的地址相關基址+偏移
3.2.5、利用分析資料 實現走路/尋路
a、走路功能程式碼實現
b、測試
c、封裝到walk(x,y)
d、瞬移(穿牆)
3.3、 怪物過濾
3.3.1、怪物列表關鍵程式碼分析

a、怪物列表(分析原理)
b、回溯怪物列表基址+偏移
c、取得怪物物件的公式
3.3.2、怪物屬性分析
a、怪物名
b、怪物血量
c、怪物ID
d、怪物與玩家距離
e、提取特徵碼
3.3.3、怪物過濾的編寫程式碼
a、讀出怪物列表
b、過濾掉指定怪物
c、選定特定怪物
d、過濾打怪測試
e、選中最近怪物
3.4、 物品過濾
3.4.1、物品屬性分析

a、物品ID
b、物品物件
c、物品屬性分析
3.4.2、物品過濾(程式設計讀出物品列表資料)
a、讀出物品列表
b、條件判斷是否撿物(距離,物品名)
c、顯示出提示資訊
3.4.3、撿物過濾
a、分析撿物深層CALL
b、PickID(物品ID);
c、撿物過濾
d、撿物範圍控制
3.4.4、遊戲多開實現
a、遊戲防止多開的原理
b、找出本遊戲多開的方法
c、測試驗證

3.5、 組隊相關
3.5.1、 選定指定角色

a、多開BUG修證
b、分析玩家屬性
c、遍歷玩家列表
d、選定指定玩家角色原理
e、int SelPlayEr(pchar 玩家名);
3.5.2、計算玩家間的距離(已知座標)
a、座標系內的點1與點2
b、2點間的距離計算公式
c、準備知識
d、planRange(int p1,int p2)函式構建
3.5.3、 組隊功能
a、更新組隊動作CALL
b、選定指定玩家
c、邀請指定玩家加入隊伍int Invite(char* playName);
3.5.4、 離隊功能
a、分析離隊動作
b、逆向分析離隊程式碼
c、初識封包
d、Rep stos [edi]
e、記憶體中的資料與 byte,int的對應關係
f、封裝離隊函式void exitTeam();
3.6、售物/購物(封包的世界)
3.6.1、售物功能封包分析
1、封包回溯,找未加密的封包
2、確家關鍵CALL
3、分析封包(物品數量,型別,位置)
4、功能測試SellGoods函式構建
3.6.2 售物封包引數來源分析
1、數量分析
2、出售物品型別分析
3、出售物品在揹包裡的格數
4、各種資料的來源
3.6.3、程式設計實現出售揹包指定物品
1、遍歷揹包指定物品
2、出售揹包第一格物品
3、出售揹包第N格物品
3.6.4、完善售物功能
1、構建函式int FindIndex(char* name);
FindIndex//用來查詢指定物品名name在揹包中的位置
2、垃圾物品清單
3、遍歷出售所有垃圾物品SellGoods
4、移植函式到Gameproc.h
3.6.5、開啟NPC購物/售物對話方塊
1、開啟NPC對話
2、開啟NPC(買進/賣出)視窗
3、封裝到int OpenNpc_buysell();測試
3.6.6、購物功能封包分析
1、封包回溯,找未加密的封包
2、確家關鍵CALL
3、分析封包
4、數量分析
5、出售物品型別分析
6、功能測試

3.7、 擺攤.開店
a、開店CALL引數分析
b、寫程式碼測試

4、高階篇
4.0、編寫相對完整的外掛
4.1、遊戲更新後的外掛更新
4.2、指令碼功能
4.3、盜號的實現

封包分析

1.明文發包CALL的找法以及分析
2.明文收包CALL的找法以及分析
3.呼叫明文發包call進行工作lol
4.呼叫明文收包call進行工作lol
5.分析各個伺服器連線地址以及埠
6.分析原始封包1 登陸上
7.分析原始封包1 登陸中
8.分析原始封包1 登陸下
9.自寫socket 進行純發包操作的學習
10.自寫socket 進行純發包操作的學習
11.分析原始封包2 攻擊
12.分析原始封包3 移動
13.聊天包的分析
14.某遊戲資源解壓分析1
15.某遊戲資源解壓分析2
16.某遊戲資源解壓分析3
17.組隊包分析
18.NPC對話包分析
19.地圖的分析
20.尋路演算法的應用
21.答題驗證的分析
22.LUA指令碼的實現
23.外掛本身驗證的實現
24.針對某成熟離線掛程式碼進行分析,並取其精華
25.針對某成熟離線掛程式碼進行分析,並取其精華2

逆向分析課程

1.VC6 和Vs2008 反彙編程式碼分析和區別檢視
2.針對反彙編程式碼指令的簡單學習1
3.針對反彙編程式碼指令的簡單學習2
4.針對反彙編程式碼指令的簡單學習3
5.分析VC程式碼生成的流程,講解符號和pdb檔案的用處
6.動態除錯加靜態反彙編的技巧
6-1(IDA的講解需要兩課)
7.C語句的反彙編程式碼還原1
8.C語句的反彙編程式碼還原2
9.C語句的反彙編程式碼還原3
10.C++反彙編程式碼還原1
12.C++反彙編程式碼還原2
13.C++反彙編程式碼還原3
14.演算法的分析1
15.演算法的分析2
16.某熱門遊戲外掛驅動反彙編程式碼分析以及還原(針對6-8個外掛進行分析)
17.某下載者程式碼分析還原
18.某CrackMe演算法程式碼還原
19.壓縮殼核心程式碼分析
20.壓縮殼核心程式碼分析2
21.加密殼核心程式碼分析
22.加密殼核心程式碼分析2
23.淺析VMP程式碼
24.人肉分析VMP程式碼
25.人肉分析VMP程式碼2
26.分析網路驗證程式碼
27.分析外掛網路驗證核心演算法
28.分析外掛網路驗證核心演算法2
29.分析外掛網路驗證核心演算法3
30.分析外掛網路驗證核心演算法4
31.分析ollydbg 1.1
32.分析ollydbg 1.1 (2)
33.分析ollydbg 1.1 (3)
34.分析ollydbg 1.1 (4)
35.課程總結

驅動程式設計+bypass遊戲保護

1.DDK的build (easy sys)
2.寫一個helloddk 
3.helloddk的標頭檔案部分的結構分析
4.作業系統的基本概念以及API得流程
5.驅動各個檔案的分析
6.編寫驅動載入工具
7.windbg +debugview的使用
7-1 單機+VM除錯驅動的方法
8.KMD驅動的基本結構
9.驅動的記憶體結構,分頁和非分頁
10.斷言
11.字串操作
12.檔案讀寫操作
13.登錄檔操作
14.IRP派遣歷程 
15.io控制程式碼的編寫 與ring3程式通訊的關鍵
16.IRQL等級的分析
17.多執行緒 互斥體
18.自選鎖的學習和實際應用
19.ring0中的定時器
20.分層驅動的概念
21.直接I/O埠操作 winio.sys傳說中的驅動模擬鍵盤
22.磁碟過濾驅動的編寫,鍵盤過濾的編寫(GameMon.dxx使用的)
23.核心函式的使用
猥瑣篇
1.反彙編引擎的選擇
lde xde 
2.切入ring0的幾種方法
3.SSDT HOOK
4.inline hook
5.idt hook
6.object hook
7.shadow ssdt hook
8.殺遊戲程序的方法
9.程序隱藏
10.檔案隱藏
11.某 ark驅動程式碼分析
12.某 ark驅動程式碼分析2
13.自寫一個山寨ark
14.某遊戲反鍵盤模擬的分析
15.多開檢測的分析
16.程式碼完整性的分析
17.txxxx.sys黑盒分析
18.shxxx反除錯分析
19.apoxxx.sys保護系統分析
20.perfectxxx.sys保護系統分析
21.x-trap 保護系統分析
20.hackxxxx保護系統分析
21.Npxxxxxx保護系統分析