冰楓論壇
標題:
TwMS v202.1 CRC 滑鼠指向取得技能ID
[打印本頁]
作者:
btb
時間:
2017-11-18 15:10
標題:
TwMS v202.1 CRC 滑鼠指向取得技能ID
// TwMS v202.1 CRC 滑鼠指向取得技能ID
// ReCreate:XMAX 2017-10-07
[ENABLE]
RegisterSymbol(SkillID)
Alloc(GetSkillID, 128)
Alloc(SkillID, 04)
GetSkillID:
mov [SkillID],eax
db 89 81 80 00 00 00
jmp 019ECC72
019ECC6C:
jmp GetSkillID
[DISABLE]
019ECC6C:
db 89 81 80 00 00 00
UnRegisterSymbol(SkillID)
DeAlloc(GetSkillID)
DeAlloc(SkillID)
作者:
caca
時間:
2017-11-18 16:48
本帖最後由 caca 於 2017-11-18 17:36 編輯
019ECC6C:
jmp GetSkillID
這個寫法洽當嗎?另一篇滑鼠取的道具ID也有同樣問題。
這可能造成不預期的後果。建議改成這樣較正統吧:
019ECC6C:
jmp GetSkillID
nop
有人問起為什麼要這樣寫。先看看 019ECC6C 這位置
019ECC6C - 89 81 80000000 - mov [ecx+00000080],eax
019ECC72 - FF 76 04 - push [esi+04]
019ECC75 - C7 85 6CFFFFFF 00000000 - mov [ebp-00000094],00000000 { 0 }
019ECC7F - E8 AC3BB4FE - call 00530830
019ECC6C 是 89 81 80 00 00 00 6個字節。
但 數據內只寫
019ECC6C:
jmp GetSkillID
這個只有5個字節,將數據寫入後,可看到會變成這樣
019ECC6C - E9 8F336C09 - jmp 0B0B0000
019ECC71 - 00 FF - add bh,bh
019ECC73 - 76 04 - jna 019ECC79
019ECC75 - C7 85 6CFFFFFF 00000000 - mov [ebp-00000094],00000000 { 0 }
019ECC7F - E8 AC3BB4FE - call 00530830
用正統的寫法
019ECC6C:
jmp GetSkillID
nop
這是6個字節,將數據寫入後,可看到會變成這樣
019ECC6C - E9 8F337009 - jmp 0B0F0000
019ECC71 - 90 - nop
019ECC72 - FF 76 04 - push [esi+04]
019ECC75 - C7 85 6CFFFFFF 00000000 - mov [ebp-00000094],00000000 { 0 }
019ECC7F - E8 AC3BB4FE - call 00530830
就本數據而言,第一種寫法未必會出事(因為89 81 80000000 最後是00 如果是其他字節就可能出問題),
但畢竟不是正常寫法
歡迎光臨 冰楓論壇 (https://bingfong.com/)
Powered by 冰楓