西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

魔獸3內(nèi)存修改器

v13 綠色免費(fèi)版
  • 魔獸3內(nèi)存修改器v13 綠色免費(fèi)版
  • 軟件大小:63KB
  • 更新時(shí)間:2018-09-13 10:07
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國產(chǎn)軟件 / 免費(fèi)軟件 / 游戲其他
  • 軟件等級(jí):2級(jí)
  • 應(yīng)用平臺(tái):WinAll
  • 官方網(wǎng)站:暫無
  • 應(yīng)用備案:
好評(píng):50%
壞評(píng):50%

裝機(jī)必備軟件

軟件介紹

魔獸3內(nèi)存修改器是一款為喜歡玩魔獸爭霸3各種RPG地圖的玩家們提供的輔助工具,當(dāng)然只限于單機(jī)玩家,想在魔獸爭霸官方平臺(tái)上用的玩家就別下了,反正有檢測(cè)機(jī)制這個(gè)也沒啥用。魔獸3內(nèi)存修改器可以幫你修改地圖數(shù)據(jù),有時(shí)候碰到特別變態(tài)的地圖的時(shí)候,可以通過這款軟件來通關(guān)。

魔獸3內(nèi)存修改器

更新內(nèi)容:

V13

2016.8.12

支持1.27

V12

2014.1.4

支持1.26

V11

2011.4.6

新增對(duì)win7 x64的支持

修正了修改列表焦點(diǎn)與選擇項(xiàng)不一致的Bug

使用教程:

(地址以1.22.0.6328版本為例,數(shù)字全部是十六進(jìn)制。)

一、從選中單位的列表獲得單位ESI

0、也可以利用".?AUCUnitListNode@@",以下沒有用這個(gè)方法

1、[6FAA2FFC],參考sub_6F416AE0

2、[上面+58+4*a2],參考6f3a0564

   其中a2=word ptr[上面+28],參考6F042B76

3、[上面+34]記為鏈表基地址,參考6f2cc0a8

這個(gè)地址還有一種獲得方法,用.\CPlayerWar3.cpp所在的段+90,我不知道是否準(zhǔn)確

4、這個(gè)基地址的結(jié)構(gòu):

[基地址+1F0]:表頭

[基地址+1F4]:表尾

[基地址+1F8]:表長度

參考sub_6F415B70: 6f415b95 mov eax, [ebx+1f4]

5、展開當(dāng)前地址(假設(shè)一開始等于表頭)。

即[表頭],其結(jié)構(gòu)為:

[節(jié)點(diǎn)+0]:下一個(gè)節(jié)點(diǎn)

[節(jié)點(diǎn)+4]:not 下一個(gè)節(jié)點(diǎn)(二者為not關(guān)系,不知道為什么要這樣)

[節(jié)點(diǎn)+8]:單位ESI

參考:6F412504 mov eax, [edi+0c](eax為節(jié)點(diǎn)位置)

參考:6f412518 mov edi, [esi+08](edi為選中的單位,夢(mèng)寐以求的單位ESI)

二、重要說明

1、ESI的使用

● ESI記為ThisUnit

● [ThisUnit + 1E4]記為UnitAttributes

● [ThisUnit + 1EC]記為HeroAttributes

2、重要的內(nèi)存提取算法

算法0(6F03F180):從GameMemory取得數(shù)據(jù),需要索引號(hào)Index1和一個(gè)參考數(shù)ReferenceNumber1。注意Index1最高位不得為1,不然不是這個(gè)算法。建議判一下正負(fù)。

(1)[6FAA4178]記為ThisGame

(2)[ThisGame + 0xC]計(jì)為ThisGameMemory

(3)[ThisGameMemory + Index1 * 8 + 4]計(jì)為Address1,返回之

(4)[Address1 + 0x18]應(yīng)當(dāng)?shù)扔赗eferenceNumber1,不相等游戲會(huì)異常(訪問地址0),所以做修改器不用考慮這里

算法1(6F4634E0):也需要Index1

(1)用算法0

(2)Address1 + 0x78輸出為地址

算法2(6F468A20):也需要Index1

(1)[ThisGameMemory + Index1 * 8 + 4],記為Address3

(2)[Address3 + 20]為零的前提下返回[Address + 54]的內(nèi)容

三、單位的修改

1、HP float

[HPMax地址-C]

2、HPMax float

(1)ThisUnit + 98 // 參考sub_6F28A760

(2)[上面 + 8] // 參考sub_6F467710

(3)用算法0解開上面

(4)解開后內(nèi)容在[上面 + 84] // 參考6F46752F: fcompp, EDX

3、MP float

[MPMax地址-C]

4、MPMax float

(1)ThisUnit + 98 // 參考sub_6F28A760

(2)[上面 + 28] // 參考sub_6F467750

(3)用算法0解開上面

(4)解開后內(nèi)容在[上面 + 84] // 參考sub_6F467750

5、經(jīng)驗(yàn)值:[HeroAttributes + 8C] int

源代碼:6F26DFF0

即:getHeroExp()

6、力量初值:[HeroAttributes + 94] int

源代碼:6F353D06

即:int __thiscall DrawHeroProperty(int *GameContext, int **HeroAttributes, int *AttributeBias, unsigned int *GBuffer)

7、敏捷初值:[HeroAttributes + A8] int

源代碼:同上

8、智力初值:int

源代碼:6F0DA9D0

即:int __fastcall getHeroIntellect_NotSure(int pAttribute1)

[HeroAttributes + 7C + 2 * 4] 記為Index1

[HeroAttributes + 7C + 3 * 4] 記為ReferenceNumber1

用算法1得到地址

9、攻擊頻率:[UnitAttributes + 1B0] float

源代碼:6F0C64E0

即:int __thiscall getHeroROF_NotSure(int *this, int a2, int a3, int a4)

這是一個(gè)比值,對(duì)兩種武器均適用。

10、武器射程

從UnitAttributes開始,參考:6F352CA3

公式為[UnitAttributes + 258 + index * 8],參考:6F0C61A5

其中index是指武器的編號(hào),取0和1

11、其它攻擊相關(guān):int

地址為 UnitAttributes + 下面的偏移量

攻擊1 - 基礎(chǔ)1 A0

攻擊1 - 基礎(chǔ)2 AC

攻擊1 - 倍乘 94

攻擊1 - 骰子 88

攻擊1 - 種類 F4

攻擊2 - 基礎(chǔ)1 A4

攻擊2 - 基礎(chǔ)2 B0

攻擊2 - 倍乘 98

攻擊2 - 骰子 8C

攻擊2 - 種類 F8

12、移動(dòng)速度:[“參數(shù)” + 70h] float 當(dāng)前的移動(dòng)速度

或者:[“參數(shù)” + 78h] float 當(dāng)前的移動(dòng)速度的比值

源代碼:6F201190

即:void __thiscall sub_6F201190(int this, int a2, int a3)

而“參數(shù)”的獲得:似乎是將某個(gè)指針壓入一系列(回調(diào))函數(shù)中處理,但是大部分的處理函數(shù)是空白的,只有一個(gè)與移動(dòng)速度有關(guān)。寫修改器,就是要依次檢索這些函數(shù),直到發(fā)現(xiàn)這個(gè)函數(shù)后,代入這個(gè)函數(shù)的參數(shù),計(jì)算出移動(dòng)速度所需的“參數(shù)”

整件事情是從6F077693開始

(1)[ThisUnit + 1D8]記為MoveAbilityIndex

參考:斷點(diǎn)下在6F0776F6

(2)算法2(MoveAbilityIndex) 記為I

(3)此時(shí),只要[I + 24] & [I + 28] != -1,那么:

(4)檢驗(yàn)[[I] + 2D4]是否等于6F201190(如果是6F052080,實(shí)際執(zhí)行的函數(shù)只有ret指令)

(5)如果是相等的,那么算法結(jié)束,用[I + 70]或者[I + 78]得到移動(dòng)速度

源代碼:6f2011a1: mov eax, [ecx+70] ecx=07c50094

(6)如果不相等,那么下一個(gè)I = 算法2([I + 24])

13、防御:[ThisUnit + E0] float

源代碼:6F353250

6F3532A2: mov eax, dword ptr [ebx+e0]

即:void __thiscall sub_6F353250(int this, int a2, int a3, int a4)

14、防御類型:[ThisUnit + E4] int

15、坐標(biāo)X:

[ThisUnit + 164],參考:6F2776C4

[上面+8]作為index,[上面+C]作為Refrence,用算法0,參考:6F464685

[上面+78],參考:6F38A52C

[上面]為坐標(biāo)X,參考:6f6de775

16、[坐標(biāo)Y] = [坐標(biāo)X的地址 + 4]

四、金錢的修改

參考:6F407220,看最后一段

即:signed int __thiscall sub_6F407220(int this, signed int a2, unsigned int a3, int a4, int a5, int a6)

1、上16位

(1)[ThisGameMemory + 1 * 8 + 4]計(jì)為Address2

(2)Address2取高16位,低16位的含義如下

2、下16位

1P 0190

2P 1410

3P 26a0

4P 3920

5P 4bb0

6P 5e30

7P 70c0

8P 8350

9P 95d0

10P a860

11P bae0

12P cd70

3、對(duì)每個(gè)玩家

金錢 +   0 int x10

木頭 +  80 int x10

最大人口 + 180 int

當(dāng)前人口 + 200 int

五、物品列表的獲取

1、GetAnItem (SelectedUnit, ItemIndex),其中ItemIndex = 0 - 5

源代碼:sub_6F26E0E0

過程為:

(1)[SelectedUnit + 1F4]記為List

(2)如果List為0,返回0

(3)否則判斷ItemIndex是否越界,我們就不判了

參考:6F0F04B0

即:GetListItem(List, ItemIndex)

(4)List + C * ItemIndex + 0x70,記為Index1,注意沒有解引用啊

(5)算法0,地址[Index1],參考值[Index1 + 4],結(jié)果記為RawItem

(6)RawItem為0或者[RawItem+0x20]不為0,導(dǎo)致返回0

(7)[RawItem+0x54]作為物品基地址,即為CurrentItem

六、物品修改

1、使用次數(shù) [CurrentItem + 84]

2、名稱 [CurrentItem + 30]

其他版本下載

發(fā)表評(píng)論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評(píng)論 > 字?jǐn)?shù): 0/500

TOP
軟件下載