冰楓論壇

標題: 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 冰楓