遊戲外掛程式四之利用CE和OD查詢被選中怪物和怪物列表

2022-03-02 10:18:08 字數 2442 閱讀 1347

合肥程式設計師群:49313181。    合肥實名程式設計師群:128131462 (不願透露姓名和資訊者勿加入)

q  q:408365330     e-mail:[email protected]

這一節我們利用ce和od去找到被選中的怪物物件,和怪物列表。從而為後面自動遍歷怪物實現自動打怪的外掛程式做鋪墊。當然在這之前我們得了解彙編中陣列和列表是怎麼定位的。一般是[eax*4+0x0063fedd],這樣通過自增通用暫存器eax去實現陣列下標。0x0063fedd在這裡就是乙個基址。因為32位系統的位址是4位元組我想這個大家都非常清楚,所以乘以4.廢話不多說了,現在開始開啟遊戲盒ce。並且將遊戲程序附加到ce中去。

選中兩者之間的值。輸入值1和值0xffffffff。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將記憶體掃瞄選項設定成00010000和7ffeffff之間的記憶體中程序查詢。那麼大家肯定會問,那如下的記憶體呢?如果我們要找的值在餘下的記憶體中怎麼辦??這個絕不用當心,如果對windows作業系統記憶體比較了解很容易知道,我設定的這個區間真好是windows的使用者模式區間。我們的程式都是在這個區間中的。0x00000000至0x0000ffff是空指標賦值區。主要是用來輔助程式設計師捕捉空指標賦值。0x80000000至0xffffffff是核心模式分割槽,這個空間是2g。在核心模式分割槽和使用者模式分割槽之間的是64k禁入分割槽。所以大家毫無當心的在這個記憶體區間中去查詢,肯定能查到我們想要的值。

第一次查詢出的是乙個龐大的數字。然後我們將掃瞄型別改成「未改變的」,然後查詢,這樣重複幾次。然後我們在遊戲中去選中乙個怪。

然後將將掃瞄型別改成「改變的」,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出乙個值。

可以看出它的值是65535。當時我沒選中任何怪,說明未選中怪的時候這個記憶體中的值是0000ffffh(16進製制)

我們已經找出這個被選中怪id存放的位址。

我們將這行**記錄下來。這個時候關閉ce,我們需要開啟另乙個外掛程式人員和破解人員必備動態除錯工具od。首先來了解下od工作區:

1區反彙編**區,這個區是程式被反彙編器放彙編出的彙編指令。

2區是暫存器區。這裡顯示了cpu中的暫存器,我們可以在動態除錯的時候檢視下暫存器的變化。

3區是記憶體注釋區

4區是記憶體區,這裡顯示了記憶體狀態。

5區是棧區,這裡會顯示程式在呼叫過程中堆疊的變化。

開啟od並且附加遊戲程序。

然後

右擊轉的表示式,然後輸入我們記錄的那個位址004adb43。跳到訪問被選中怪物id存放的位址的彙編指令那個地方。mov eax,dword ptr ds:[edi+1478]這樣一行**。就是將被選中怪物的id放到eax暫存器。cmp eax,0ffff緊接著這行**。0000ffff是沒有怪物被選中時ds:[edi+1478]中的值。

mov ecx,dword ptr ds:[eax*4+312df20] 後面的ds:[eax*4+312df20]就是彙編中集合的訪問方式。312df20是基址,那麼312df20+0就是這個陣列的第乙個元素。我們猜測這個陣列存放的就是怪物陣列。

我們在od的命令列中輸入dd 0312df20以堆疊形式轉儲。我們可以看到乙個乙個物件位址在這個陣列中,這個就是怪物包括玩家的陣列。當然有乙個熟悉區別它是怪物還是其它物件。

我們進入這個陣列中的第二個物件。右擊第二個陣列-》資料視窗跟隨進入的第二個物件,可以看到+c這個位置就是物件陣列下標是1.恭喜我們已經找到物件陣列了。同時我們知道只要是放入[eax+00001478]中的id就是被選中怪物。這個就到這裡,下一節分析物件屬性。

python爬蟲之利用requests爬取墨跡天氣

import requests from lxml.html import etree import json import time 匯入模組 class mojiweather def city name self 定義乙個輸入城市名稱的函式 cityname str input 輸入城市名稱 ...

python之利用epoll實現http伺服器

usr bin python3.5 coding utf 8 time 18 7 2 下午7 39 author fengwr email fengwenrui1217 163.com file epoll實現http.py 建立epoll物件 epl select.epoll 將tcp sever...

Android之(利用服務實現)

1.啟動模擬器,部署應用 2.利用模擬器控制器傳送簡訊啟動服務 檢視日誌輸出判斷是否成功 清單設定 乙個receiver,乙個service,若干許可權 器服務類 phonelistenerservice package cn.class3g.phonelistener public class p...