- UID
- 7067
- 帖子
- 2823
- 主題
- 67
- 精華
- 0
- 積分
- 225
- 楓幣
- 20085
- 威望
- 181
- 存款
- 19856
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1671
- 閱讀權限
- 100
- 性別
- 保密
- 在線時間
- 870 小時
- 註冊時間
- 2012-3-23
- 最後登入
- 2024-11-2
|
本帖最後由 Doem 於 2020-2-22 01:46 編輯
www406s16 發表於 2020-2-21 22:56
我比對了版上這3個由不同人發出來的數據
// TwMS v222.1 CRC 凱內心靈領域 永恆壞滅 15下 (冰楓論壇 love ...
會塞在EAX的原因是, 在x86 calling convention, EAX通常用來存放返回值, , 簡單來說就是約定俗成的規定
可以參考: https://zh.wikipedia.org/wiki/X8 ... 8%E7%BA%A6%E5%AE%9A
另外為什麼有些是 DB B8 0F 00 00 00
DB 只是表示法而已, 代表接下來要寫入Byte資料 (我猜是 Data Byte的縮寫吧??)
另外你可能會看到DD 接DWORD的資料, 如DD 00400000, 這一樣的道理, 想成方便程式判斷的標記就好
後面的B8 0F 00 00 00就相當於 MOV EAX,0F的Opcode,
根據 https://c9x.me/x86/html/file_module_x86_id_176.html, 你能發現MOV有很多不同指令格式
其中這個範例就是適用於 MOV r32,imm32這種格式 (將32位的常數放到32位的register中)
而它所對應的Opcode是 B8 +rd (對應就是B8 0F 00 00 00, 因為是32 bits(4 Bytes)資料所以原本是0x0000000F)
至於為什麼是倒過來的, 是因為x86是Little-endian |
|