a45s67 發表於 2016-7-10 11:45:36

關於數據的小問題

麻煩大家了~~~
技能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 ,00000006
        pushad
        mov esi,SkillId

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

還有聖十字魔法頓

+3A88:
db 2D DA F7 3C CA A4 E6 61 1B 76 19 66


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

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

不好意思問題有點多而且好像不夠具體哈哈
拜託大神為我解答一下3q!!!

黃金波斯貓 發表於 2016-7-10 14:03:45

本帖最後由 黃金波斯貓 於 2016-7-10 14:06 編輯




DB 是宣告一個含有後面初值的 位元組 資料
DD 是宣告一個含有後面初值的 DWORD 資料
配合著圖看你應該比較清楚,它不是真的把整個資料塞進 esi
mov ,00000006
pushad
mov esi,SkillId    // 把 SkillId 位址寫入 esi
mov eax,     // 把 值寫入 eax
test eax,eax       // 判斷 eax 是否為 0
je Finish            // 是則跳至 Finish (這也是為什麼 SkillId 最後一個是 DD 00000000)
        
push eax
call SetMaxAttackCount
add esi,00000004    // 將 esi 值 + 4 (就等於下一個 Skill 的位址啦!)
jmp NextSkill           // 重複動作
聖十字魔法盾那個是動態數據,其 DB 就是慢慢搜尋出來的。

Doem 發表於 2016-7-10 14:38:10



CE原本註解打中文會亂碼....就加減看吧!
底下的SkillID地址部分, 轉成4 Bytes模式比較好觀察
頁: [1]
查看完整版本: 關於數據的小問題