冰楓論壇

標題: 關於數據的小問題 [打印本頁]

作者: a45s67    時間: 2016-7-10 11:45
標題: 關於數據的小問題
麻煩大家了~~~
技能15下裡面
SkillId:
        // 烈焰巫師
        DD 00B71B1A // #12000026 // 元素火焰 I
        DD 00B8A1BC // #12100028 // 元素火焰 II
        DD 00B8C8CC // #12110028 // 元素火焰 III
        DD 00B8EFCA // #12120010 // 元素火焰 IV
        
        // 凱內西斯
        DD 08784A11 // #142101009 // 心靈領域
        DD 08789441 // #142120001 // 擷取心靈2
        DD 0878982D // #142121005 // 終極技- B.P.M
        
        DD 00000000
MyData:
        DB AC BA E6 E1 D5 35 0F 1F 2A 90 E9 29

MyHook:
        mov [02298437],00000006
        pushad
        mov esi,SkillId

之後會把skillid ,mov到esi中
可是esi不是只能放一個值嗎
skillid中存了這麼多技能位置為何能放得下esi中
還是我對dd的想法錯了,我以為dd只是把值放進記憶體alloc給skillid中的空間而已

還有聖十字魔法頓
[Enable]
[01BEA378]+3A88:
db 2D DA F7 3C CA A4 E6 61 1B 76 19 66

[Disable]
[01BEA378]+3A88:
db 73 8D 36 F6 6B B4 B1 9F 56 90 16 92

裡面db的值是怎麼來的,db跟dd又差在哪裡~~?

不好意思問題有點多而且好像不夠具體哈哈
拜託大神為我解答一下3q!!!
作者: 黃金波斯貓    時間: 2016-7-10 14:03
本帖最後由 黃金波斯貓 於 2016-7-10 14:06 編輯

0.jpg
1.jpg

DB 是宣告一個含有後面初值的 位元組 資料
DD 是宣告一個含有後面初值的 DWORD 資料
配合著圖看你應該比較清楚,它不是真的把整個資料塞進 esi

  1. mov [02298437],00000006
  2. pushad
  3. mov esi,SkillId    // 把 SkillId 位址寫入 esi
  4. mov eax,[esi]     // 把 [esi] 值寫入 eax
  5. test eax,eax       // 判斷 eax 是否為 0
  6. je Finish            // 是則跳至 Finish (這也是為什麼 SkillId 最後一個是 DD 00000000)
  7.         
  8. push eax
  9. call SetMaxAttackCount
  10. add esi,00000004    // 將 esi 值 + 4 (就等於下一個 Skill 的位址啦!)
  11. jmp NextSkill           // 重複動作
複製代碼
聖十字魔法盾那個是動態數據,其 DB 就是慢慢搜尋出來的。
作者: Doem    時間: 2016-7-10 14:38
2016-07-10_143547.jpg

CE原本註解打中文會亂碼....就加減看吧!
底下的SkillID地址部分, 轉成4 Bytes模式比較好觀察





歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓