'遊戲外掛之利用CE和OD查找被選中怪物和怪物列表'

彙編語言 操作系統 Windows 程序員 BigDataKer 2019-07-29
"

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

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將這個值選中到被選取,右擊被選取數據"找出什麼訪問了這個地址"。彈出一個對話框,可以看到這樣一行彙編指令:“004adb43 mov eax,[edi+00001478]”

我們將這行代碼記錄下來。這個時候關閉CE,我們需要打開另一個外掛人員和破解人員必備動態調試工具OD。首先來了解下OD工作區:

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將這個值選中到被選取,右擊被選取數據"找出什麼訪問了這個地址"。彈出一個對話框,可以看到這樣一行彙編指令:“004adb43 mov eax,[edi+00001478]”

我們將這行代碼記錄下來。這個時候關閉CE,我們需要打開另一個外掛人員和破解人員必備動態調試工具OD。首先來了解下OD工作區:

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

1區反彙編代碼區,這個區是程序被反彙編器放彙編出的彙編指令。

2區是寄存器區。這裡顯示了CPU中的寄存器,我們可以在動態調試的時候查看下寄存器的變化。

3區是內存註釋區

4區是內存區,這裡顯示了內存狀態。

5區是棧區,這裡會顯示程序在調用過程中堆棧的變化。

打開OD並且附加遊戲進程。

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將這個值選中到被選取,右擊被選取數據"找出什麼訪問了這個地址"。彈出一個對話框,可以看到這樣一行彙編指令:“004adb43 mov eax,[edi+00001478]”

我們將這行代碼記錄下來。這個時候關閉CE,我們需要打開另一個外掛人員和破解人員必備動態調試工具OD。首先來了解下OD工作區:

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

1區反彙編代碼區,這個區是程序被反彙編器放彙編出的彙編指令。

2區是寄存器區。這裡顯示了CPU中的寄存器,我們可以在動態調試的時候查看下寄存器的變化。

3區是內存註釋區

4區是內存區,這裡顯示了內存狀態。

5區是棧區,這裡會顯示程序在調用過程中堆棧的變化。

打開OD並且附加遊戲進程。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將這個值選中到被選取,右擊被選取數據"找出什麼訪問了這個地址"。彈出一個對話框,可以看到這樣一行彙編指令:“004adb43 mov eax,[edi+00001478]”

我們將這行代碼記錄下來。這個時候關閉CE,我們需要打開另一個外掛人員和破解人員必備動態調試工具OD。首先來了解下OD工作區:

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

1區反彙編代碼區,這個區是程序被反彙編器放彙編出的彙編指令。

2區是寄存器區。這裡顯示了CPU中的寄存器,我們可以在動態調試的時候查看下寄存器的變化。

3區是內存註釋區

4區是內存區,這裡顯示了內存狀態。

5區是棧區,這裡會顯示程序在調用過程中堆棧的變化。

打開OD並且附加遊戲進程。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

右擊轉的表達式,然後輸入我們記錄的那個地址004adb43。跳到訪問被選中怪物id存放的地址的彙編指令那個地方。MOV EAX,DWORD PTR DS:[EDI+1478]這樣一行代碼。就是將被選中怪物的ID放到EAX寄存器。CMP EAX,0FFFF緊接著這行代碼。0000FFFF是沒有怪物被選中時DS:[EDI+1478]中的值。

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將這個值選中到被選取,右擊被選取數據"找出什麼訪問了這個地址"。彈出一個對話框,可以看到這樣一行彙編指令:“004adb43 mov eax,[edi+00001478]”

我們將這行代碼記錄下來。這個時候關閉CE,我們需要打開另一個外掛人員和破解人員必備動態調試工具OD。首先來了解下OD工作區:

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

1區反彙編代碼區,這個區是程序被反彙編器放彙編出的彙編指令。

2區是寄存器區。這裡顯示了CPU中的寄存器,我們可以在動態調試的時候查看下寄存器的變化。

3區是內存註釋區

4區是內存區,這裡顯示了內存狀態。

5區是棧區,這裡會顯示程序在調用過程中堆棧的變化。

打開OD並且附加遊戲進程。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

右擊轉的表達式,然後輸入我們記錄的那個地址004adb43。跳到訪問被選中怪物id存放的地址的彙編指令那個地方。MOV EAX,DWORD PTR DS:[EDI+1478]這樣一行代碼。就是將被選中怪物的ID放到EAX寄存器。CMP EAX,0FFFF緊接著這行代碼。0000FFFF是沒有怪物被選中時DS:[EDI+1478]中的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

MOV ECX,DWORD PTR DS:[EAX*4+312DF20] 後面的DS:[EAX*4+312DF20]就是彙編中集合的訪問方式。312DF20是基址,那麼312DF20+0就是這個數組的第一個元素。我們猜測這個數組存放的就是怪物數組。

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將這個值選中到被選取,右擊被選取數據"找出什麼訪問了這個地址"。彈出一個對話框,可以看到這樣一行彙編指令:“004adb43 mov eax,[edi+00001478]”

我們將這行代碼記錄下來。這個時候關閉CE,我們需要打開另一個外掛人員和破解人員必備動態調試工具OD。首先來了解下OD工作區:

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

1區反彙編代碼區,這個區是程序被反彙編器放彙編出的彙編指令。

2區是寄存器區。這裡顯示了CPU中的寄存器,我們可以在動態調試的時候查看下寄存器的變化。

3區是內存註釋區

4區是內存區,這裡顯示了內存狀態。

5區是棧區,這裡會顯示程序在調用過程中堆棧的變化。

打開OD並且附加遊戲進程。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

右擊轉的表達式,然後輸入我們記錄的那個地址004adb43。跳到訪問被選中怪物id存放的地址的彙編指令那個地方。MOV EAX,DWORD PTR DS:[EDI+1478]這樣一行代碼。就是將被選中怪物的ID放到EAX寄存器。CMP EAX,0FFFF緊接著這行代碼。0000FFFF是沒有怪物被選中時DS:[EDI+1478]中的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

MOV ECX,DWORD PTR DS:[EAX*4+312DF20] 後面的DS:[EAX*4+312DF20]就是彙編中集合的訪問方式。312DF20是基址,那麼312DF20+0就是這個數組的第一個元素。我們猜測這個數組存放的就是怪物數組。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

我們在OD的命令行中輸入dd 0312DF20以堆棧形式轉儲。我們可以看到一個一個對象地址在這個數組中,這個就是怪物包括玩家的數組。當然有一個熟悉區別它是怪物還是其它對象。

"

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

選中兩者之間的值。輸入值1和值0xFFFFFFFF。這是為了過濾掉0值。否則多查詢出很多值。同時為了更快速的查詢,我將內存掃描選項設置成00010000和7FFEFFFF之間的內存中進程查找。那麼大家肯定會問,那如下的內存呢?如果我們要找的值在餘下的內存中怎麼辦??這個絕不用當心,如果對windows操作系統內存比較瞭解很容易知道,我設置的這個區間真好是windows的用戶模式區間。我們的程序都是在這個區間中的。0x00000000至0x0000FFFF是空指針賦值區。主要是用來輔助程序員捕捉空指針賦值。0x80000000至0xFFFFFFFF是內核模式分區,這個空間是2G。在內核模式分區和用戶模式分區之間的是64k禁入分區。所以大家毫無當心的在這個內存區間中去查找,肯定能查到我們想要的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將將掃描類型改成“改變的”,在次查詢。再選中其它的怪去查詢改變的值,這樣不停的改變選中的怪去查詢,直到查詢出幾個值,我這裡查詢出一個值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

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

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後將這個值選中到被選取,右擊被選取數據"找出什麼訪問了這個地址"。彈出一個對話框,可以看到這樣一行彙編指令:“004adb43 mov eax,[edi+00001478]”

我們將這行代碼記錄下來。這個時候關閉CE,我們需要打開另一個外掛人員和破解人員必備動態調試工具OD。首先來了解下OD工作區:

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

1區反彙編代碼區,這個區是程序被反彙編器放彙編出的彙編指令。

2區是寄存器區。這裡顯示了CPU中的寄存器,我們可以在動態調試的時候查看下寄存器的變化。

3區是內存註釋區

4區是內存區,這裡顯示了內存狀態。

5區是棧區,這裡會顯示程序在調用過程中堆棧的變化。

打開OD並且附加遊戲進程。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

然後

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

右擊轉的表達式,然後輸入我們記錄的那個地址004adb43。跳到訪問被選中怪物id存放的地址的彙編指令那個地方。MOV EAX,DWORD PTR DS:[EDI+1478]這樣一行代碼。就是將被選中怪物的ID放到EAX寄存器。CMP EAX,0FFFF緊接著這行代碼。0000FFFF是沒有怪物被選中時DS:[EDI+1478]中的值。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

MOV ECX,DWORD PTR DS:[EAX*4+312DF20] 後面的DS:[EAX*4+312DF20]就是彙編中集合的訪問方式。312DF20是基址,那麼312DF20+0就是這個數組的第一個元素。我們猜測這個數組存放的就是怪物數組。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

我們在OD的命令行中輸入dd 0312DF20以堆棧形式轉儲。我們可以看到一個一個對象地址在這個數組中,這個就是怪物包括玩家的數組。當然有一個熟悉區別它是怪物還是其它對象。

遊戲外掛之利用CE和OD查找被選中怪物和怪物列表

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

作者:egojit

原文:https://www.cnblogs.com/egojit/p/3150097.html

"

相關推薦

推薦中...