2012/06/08

回應小蔥蔥分析文之我也來分析

※這是TWMS146.1的位置,現在版本是TWMS146.2

TWMS146.1 取得最大經驗值位置分析

乖徒弟小蔥蔥文章原文網址:按我



006A345Cpush eax等級
006A345Dcall 006a33e4取得升等所需經驗值
006A3462sub eax,[esp+0c]估計[esp=0c]是目前經驗值,這樣一來eax = 所需經驗值-目前經驗值 = 還需要多少經驗值
006A3466pop ecx因為查詢升等所需經驗值的CALL是__cdecl的CALL (堆疊中放入參數,要由呼叫端清除堆疊內的參數)









006A33E4push [esp+04]CALL的參數(等級)
006A33E8mov ecx,00d3d180經驗值表的位置
006A33EDcall 006a33c4查詢經驗值表
006A33F2ret返回









006A33C4mov eax,[esp+04]取得參數(等級)到EAX
006A33C8cmp eax,000000c8判斷[等級]和200
006A33CDjg 006a33dc如果等級大於200則跳到006a33dc
006A33CFcmp eax,01判斷[等級]和1
006A33D2jnl 006a33d7如果等級大於等於1跳到006a33d7


如果等級為0或是負數那就設定等級為一,這是設定Eax=1的最簡短寫法,只要3Bytes
006A33D4xor eax,eaxEax = 0
006A33D6inc eaxEax ++
006A33D7mov eax,[ecx+eax*4]查表(表在00d3d180)
006A33DAjmp 006a33e1跳到返回
006A33DCmov eax,7fffffff最大經驗值為2147483647(4Bytes有號整數最大值)
006A33E1ret 0004返回

2 則留言:

  1. 寫得好清楚哦 感謝您 :)

    回覆刪除
  2. 板大你好!
    我想請問一下這是什麼??
    (寫得很清楚,但小弟剛入門而已還不太懂(期實是頭腦笨笨的))

    回覆刪除