數據裡面寫這樣
//=======================================
//twms98物品過濾
//代碼:004F1349
//EIP:ItemFilter
//物品ID:ItemCounter
//=======================================
跟簡單來說 ASM就是
004F1349:
Jmp ItemFilter
但是 , 記得還有結束的時候嗎 ?
結束時 必須將碼補回去 , 簡稱補碼 (廢話嘛這是)
用ME的 Memory view 去看 004F1349 的資訊
依098版為例,打勾之前:
┌─────┬─────┬──────────┐
│ Address │ Bytes │ Opcode │
│─────┼─────┼──────────│
│004F1349│ 89 47 34│mov [edi+34],eax │
│─────┼─────┼──────────│
│004F134C│ 8b 7d ec │mov edi,[ebp-14] │
└─────┴─────┴──────────┘
依098版為例,打勾之後:
┌─────┬────────┬──────────┐
│ Address │ Bytes │ Opcode │
├─────┼────────┼──────────┤
│004F1349│ e9 b2 ec 51 04│ Jmp ItemFilter │
├─────┼────────┼──────────┤
│004F134E│ ec │ in al,dx │
└─────┴────────┴──────────┘
有看見了 004F1349 的 Bytes 變成了 e9 b2 ec 51 04
更看見原本的 004D134C 變成了004F134E
如果以一個 Address 一個 Bytes 來看的話
那打勾之前:
┌─────┬─────┐
│Address │ Bytes │
├─────┼─────┤
│004F1349│ 89 │
│004F134A│ 47 │
│004F134B│ 34 │
│004F134C│ 8B │
│004F134D│ 7D │
│004F134E│ EC │
└─────┴─────┘
那打勾之後:
┌─────┬─────┐
│Address │ Bytes │
├─────┼─────┤
│004F1349│ E9 │
│004F134A│ B2 │
│004F134B│ EC │
│004F134C│ 51 │
│004F134D│ 04 │
│004F134E│ EC │
└─────┴─────┘
代表他吃掉了 5 Bytes 必須將這 5 Bytes 補回去
因此在 [Disable] 的地方
要加入:
004F1349:
db 89 47 34 8b 7d
來還原位置 , 教學到此 ! |
|