當前位置:首頁 » 操作系統 » 魔獸爭霸源碼

魔獸爭霸源碼

發布時間: 2024-05-14 20:34:06

『壹』 求魔獸爭霸3 的金錢和木材基址和偏移 1.24

具體請看天池做的修改器。開源。http://hi..com/tctianchi/blog/category/%D3%CE%CF%B7 下面 [tc]魔獸3 內存修改器 v8 程序員手冊
[tc]天馳 2011.3.2(地址以1.22.0.6328版本為例,數字全部是十六進制。)一、從選中單位的列表獲得單位ESI
0、也可以利用".?AUCUnitListNode@@",以下沒有用這個方法
1、[6FAA2FFC],參考sub_6F416AE0
2、[上面+58+4*a2],參考6f3a0564
其中a2=word ptr[上面+28],參考6F042B76
3、[上面+34]記為鏈表基地址,參考6f2cc0a8
這個地址還有一種獲得方法,用.\CPlayerWar3.cpp所在的段+90,我不知道是否准確
4、這個基地址的結構:
[基地址+1F0]:表頭
[基地址+1F4]:表尾
[基地址+1F8]:表長度
參考sub_6F415B70: 6f415b95 mov eax, [ebx+1f4]
5、展開當前地址(假設一開始等於表頭)。
即[表頭],其結構為:
[節點+0]:下一個節點
[節點+4]:not 下一個節點(二者為not關系,不知道為什麼要這樣)
[節點+8]:單位ESI
參考:6F412504 mov eax, [edi+0c](eax為節點位置)
參考:6f412518 mov edi, [esi+08](edi為選中的單位,夢寐以求的單位ESI)二、重要說明
1、ESI的使用
● ESI記為ThisUnit
● [ThisUnit + 1E4]記為UnitAttributes
● [ThisUnit + 1EC]記為HeroAttributes2、重要的內存提取演算法
演算法0(6F03F180):從GameMemory取得數據,需要索引號Index1和一個參考數ReferenceNumber1。注意Index1最高位不得為1,不然不是這個演算法。建議判一下正負。
(1)[6FAA4178]記為ThisGame
(2)[ThisGame + 0xC]計為ThisGameMemory
(3)[ThisGameMemory + Index1 * 8 + 4]計為Address1,返回之
(4)[Address1 + 0x18]應當等於ReferenceNumber1,不相等游戲會異常(訪問地址0),所以做修改器不用考慮這里演算法1(6F4634E0):也需要Index1
(1)用演算法0
(2)Address1 + 0x78輸出為地址演算法2(6F468A20):也需要Index1
(1)[ThisGameMemory + Index1 * 8 + 4],記為Address3
(2)[Address3 + 20]為零的前提下返回[Address + 54]的內容三、單位的修改
1、HP float
[HPMax地址-C]2、HPMax float
(1)ThisUnit + 98 // 參考sub_6F28A760
(2)[上面 + 8] // 參考sub_6F467710
(3)用演算法0解開上面
(4)解開後內容在[上面 + 84] // 參考6F46752F: fcompp, EDX3、MP float
[MPMax地址-C]4、MPMax float
(1)ThisUnit + 98 // 參考sub_6F28A760
(2)[上面 + 28] // 參考sub_6F467750
(3)用演算法0解開上面
(4)解開後內容在[上面 + 84] // 參考sub_6F4677505、經驗值:[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)
這是一個比值,對兩種武器均適用。10、武器射程
從UnitAttributes開始,參考:6F352CA3
公式為[UnitAttributes + 258 + index * 8],參考:6F0C61A5
其中index是指武器的編號,取0和111、其它攻擊相關:int
地址為 UnitAttributes + 下面的偏移量攻擊1 - 基礎1 A0
攻擊1 - 基礎2 AC
攻擊1 - 倍乘 94
攻擊1 - 骰子 88
攻擊1 - 種類 F4攻擊2 - 基礎1 A4
攻擊2 - 基礎2 B0
攻擊2 - 倍乘 98
攻擊2 - 骰子 8C
攻擊2 - 種類 F812、移動速度:[「參數」 + 70h] float 當前的移動速度
或者:[「參數」 + 78h] float 當前的移動速度的比值
源代碼:6F201190
即:void __thiscall sub_6F201190(int this, int a2, int a3)而「參數」的獲得:似乎是將某個指針壓入一系列(回調)函數中處理,但是大部分的處理函數是空白的,只有一個與移動速度有關。寫修改器,就是要依次檢索這些函數,直到發現這個函數後,代入這個函數的參數,計算出移動速度所需的「參數」整件事情是從6F077693開始
(1)[ThisUnit + 1D8]記為MoveAbilityIndex
參考:斷點下在6F0776F6
(2)演算法2(MoveAbilityIndex) 記為I
(3)此時,只要[I + 24] & [I + 28] != -1,那麼:
(4)檢驗[[I] + 2D4]是否等於6F201190(如果是6F052080,實際執行的函數只有ret指令)
(5)如果是相等的,那麼演算法結束,用[I + 70]或者[I + 78]得到移動速度
源代碼:6f2011a1: mov eax, [ecx+70] ecx=07c50094
(6)如果不相等,那麼下一個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] int15、坐標X:
[ThisUnit + 164],參考:6F2776C4
[上面+8]作為index,[上面+C]作為Refrence,用演算法0,參考:6F464685
[上面+78],參考:6F38A52C
[上面]為坐標X,參考:6f6de77516、[坐標Y] = [坐標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]計為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 cd703、對每個玩家
金錢 0 int x10
木頭 + 80 int x10
最大人口 +180 int
當前人口 +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],結果記為RawItem
(6)RawItem為0或者[RawItem+0x20]不為0,導致返回0
(7)[RawItem+0x54]作為物品基地址,即為CurrentItem六、物品修改
1、使用次數 [CurrentItem + 84]
2、名稱 [CurrentItem + 30]

『貳』 求魔獸爭霸全圖易語言源碼,有人能教教我嗎

用CE搜索基礎然後再找靜態基礎,在寫入易語言

『叄』 魔獸爭霸地圖編輯器查看jass源碼

應該是查看不了的吧..

熱點內容
python正則compile 發布:2024-11-27 05:19:05 瀏覽:28
資料庫系統概論第四版ppt 發布:2024-11-27 04:59:52 瀏覽:412
開通了免密為什麼還要密碼 發布:2024-11-27 04:17:42 瀏覽:15
excel導入資料庫java 發布:2024-11-27 04:16:21 瀏覽:624
ps不能存儲bpm 發布:2024-11-27 04:04:12 瀏覽:613
jquery代碼加密 發布:2024-11-27 03:54:51 瀏覽:594
數字密碼人格是什麼原理 發布:2024-11-27 03:46:34 瀏覽:429
華為怎麼看手機的配置 發布:2024-11-27 03:27:42 瀏覽:382
php函數作用域 發布:2024-11-27 03:26:11 瀏覽:177
pythonasteval 發布:2024-11-27 03:21:14 瀏覽:564