冰楓論壇

標題: 請問[ICS人物左右走]的數據這幾版是否有更動 [打印本頁]

作者: anderson101866    時間: 2014-12-30 22:46
標題: 請問[ICS人物左右走]的數據這幾版是否有更動
本帖最後由 anderson101866 於 2014-12-30 23:01 編輯

如標題, 不好意思請問各位高手各位大大orz

我從下面這篇(172.1)ICS更新以後, 在175.1左右走功能運作不正常
https://bingfong.com/forum.php?mod ... 440&highlight=人物左右走

就是一Enable, 人物就會卡在原地不能移動, Disable後才恢復可以行動這樣, 可是不會左右走@@

想問一下是不是有更動 導致不能只更新那些Address了

弄了[座標左右走]跟[人物左右走]都一樣 不知怎麼回事orz

搞了一個晚上了XD 有人能夠指點小的迷津一下嗎>< 感激不盡!!....
  1. //TwMs_V175.1_ICS_人物左右走
  2. //Author: zengden
  3. //更新時間:2014-07-24
  4. [ENABLE]
  5. Alloc(AutoLRICSEntry, 64)
  6. Label(ICSReturn)
  7. RegisterSymbol(AutoLRMain)
  8. Alloc(AutoLRMain, 128)
  9. Label(GoLeft)
  10. Label(GoRight)
  11. RegisterSymbol(AutoLRRange)
  12. Alloc(AutoLRRange, 4)
  13. Alloc(AutoLRValue, 4)
  14. //-----------------------------------------------
  15. AutoLRRange:
  16. DD A        //距離 16進制 A=10
  17. //-----------------------------------------------
  18. AutoLRICSEntry:
  19. Cmp   [Esp], 00EB3E2D //[3/3]3B ?? 0F ?? ?? ?? ?? ?? 8B 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 85
  20. Jne   ICSReturn
  21. Mov   [Esp], AutoLRMain
  22. ICSReturn:
  23. Jmp   GetFocus
  24. //-------------------
  25. AutoLRMain:
  26. Cmp   [AutoLRRange], 0
  27. Je    00EB3E2D
  28. Push  Eax
  29. Inc   [AutoLRValue]
  30. Mov   Eax, [AutoLRRange]
  31. Cmp   Eax, [AutoLRValue]
  32. Jge   GoLeft
  33. Add   Eax, [AutoLRRange]
  34. Cmp   Eax, [AutoLRValue]
  35. Jge   GoRight
  36. Mov   [AutoLRValue], 1
  37. Jmp   GoLeft

  38. GoLeft:
  39. Mov   [Ebp-04], FFFFFFFF
  40. Pop   Eax
  41. Jmp   00EB4280  //[3/3]0f 9c ?? ?? 33 ?? 39 ?? ?? 0f [Adr - 0x10]

  42. GoRight:
  43. Mov   [Ebp-04], 00000001
  44. Pop   Eax
  45. Jmp   00EB4280
  46. //-----------------------------------------------


  47. //AoB and the first 4 ?? is the target
  48. //FF 15 ?? ?? ?? ?? 3B 45 ?? 75 ?? 8B 0D ?? ?? ?? ?? E8
  49. 0165D7C8:
  50. DD AutoLRICSEntry
  51. [DISABLE]
  52. 0165D7C8:
  53. DD GetFocus

  54. Dealloc(AutoLRICSEntry)
  55. UnregisterSymbol(AutoLRMain)
  56. Dealloc(AutoLRMain)
  57. UnregisterSymbol(AutoLRRange)
  58. Dealloc(AutoLRRange)
  59. Dealloc(AutoLRValue)
複製代碼

作者: s99471379    時間: 2014-12-30 23:01
GoRight跟GoLeft地方沒更新到
作者: anderson101866    時間: 2014-12-30 23:35
s99471379 發表於 2014-12-30 23:01 [url=forum.php?mod=redirect&goto=findpost&pid=728267&ptid=55520][/url]
GoRight跟GoLeft地方沒更新到

這個地方我一直不懂... sorry

GoLeft:
Mov   [Ebp-04], FFFFFFFF

從以前到現在不懂那邊要怎麼更新 ([E#p - ##] 這種型式)

-04是說四個字節(Byte)之前嗎?

上次也有爬到你的回文,說要用"彙編代碼搜尋"的也是這個媽

因為上次就看不懂了 不好意思 能不能講的詳細一點,

或者有甚麼關鍵字適合的,我去google找看有沒有古文!

真的很感謝你的回答><
作者: Doem    時間: 2014-12-30 23:59
anderson101866 發表於 2014-12-30 23:35 [url=forum.php?mod=redirect&goto=findpost&pid=728316&ptid=55520][/url]
這個地方我一直不懂... sorry

GoLeft:

[EBP-xx] or [EBP+xx]

通常是指該層CALL所申請的臨時變數
會依據所申請的大小而受影響 (當然還有其他...)
要看Stack變化!

建議你試試看 [EBP-10]
作者: Doem    時間: 2014-12-31 00:07
本帖最後由 MS88088 於 2014-12-31 00:08 編輯
anderson101866 發表於 2014-12-30 23:35 [url=forum.php?mod=redirect&goto=findpost&pid=728316&ptid=55520][/url]
這個地方我一直不懂... sorry

GoLeft:

v1.71.2 ---> [EBP-04]
  1. 00E337C2 - 55                    - push ebp
  2. 00E337C3 - 8B EC                 - mov ebp,esp
  3. 00E337C5 - 83 EC 24              - sub esp,24
  4. 00E337C8 - 53                    - push ebx
  5. 00E337C9 - 56                    - push esi
  6. 00E337CA - 57                    - push edi
複製代碼
V1.75.1
  1. 00EB3C55 - 6A 28                 - push 28
  2. 00EB3C57 - B8 7B2A1601           - mov eax,01162A7B : [0824548B]
  3. 00EB3C5C - E8 5D990F00           - call 00FAD5BE
  4. 00EB3C61 - 8B D9                 - mov ebx,ecx
複製代碼
兩者差上4*3 = 12 BYTES = 0C (16進位)

所以你可以試試看 [EBP-(04+0C)] = [EBP-10] or [EBP-(04-0C)] = [EBP+08] (<--這個別學嘿 自己亂來的 非正式知識)

//------------------------------------------------------------------------------------------------------------------------------------------------------
當然你也可以直接跳下去下面看~
作者: anderson101866    時間: 2014-12-31 00:15
MS88088 發表於 2014-12-30 23:59 [url=forum.php?mod=redirect&goto=findpost&pid=728345&ptid=55520][/url]
[EBP-xx] or [EBP+xx]

通常是指該層CALL所申請的臨時變數

可以了耶XD [Ebp-10]成功 所以這是經驗嗎..

不過為什麼你會猜-10呀@@

不是通常多個4Byte的變數比較常見嗎XD 就多-4這樣

還是有甚麼撇步, 或者你們是怎麼看就知道這[Ebp-xx]需要更新 而171~172的時候就不更新維持[Ebp-04] @@
作者: Doem    時間: 2014-12-31 00:30
anderson101866 發表於 2014-12-31 00:15 [url=forum.php?mod=redirect&goto=findpost&pid=728371&ptid=55520][/url]
可以了耶XD [Ebp-10]成功 所以這是經驗嗎..

不過為什麼你會猜-10呀@@

CE就有功能可以反白整個函數(不一定每次都正確就是了…)

通常不會去算啦! 直接跳下去看下面就好了…
作者: anderson101866    時間: 2014-12-31 00:46
本帖最後由 anderson101866 於 2014-12-31 00:51 編輯
MS88088 發表於 2014-12-31 00:30 [url=forum.php?mod=redirect&goto=findpost&pid=728384&ptid=55520][/url]
CE就有功能可以反白整個函數(不一定每次都正確就是了…)

通常不會去算啦! 直接跳下去看下面就好了… ...
未命名.png

有了 看到你前面說的函數了@@
作者: anderson101866    時間: 2014-12-31 04:21
本帖最後由 anderson101866 於 2014-12-31 04:25 編輯
MS88088 發表於 2014-12-31 00:07 [/url]
v1.71.2 ---> [EBP-04]V1.75.1兩者差上4*3 = 12 BYTES = 0C (16進位)

所以你可以試試看 [EBP-(04+0C)] =  ...

感謝 我懂了XD

因為原本172.1的Function:
  1. 00E3B23F - 55                    - push ebp
  2. 00E3B240 - 8B EC                 - mov ebp,esp
  3. 00E3B242 - 83 EC 24              - sub esp,24
  4. ...
  5. 00E3B252 - 8B CF                 - mov ecx,edi               <<
  6. 00E3B254 - 89 7D EC              - mov [ebp-14],edi          <<=========
  7. 00E3B257 - FF 50 18              - call dword ptr [eax+18]   <<
  8. 00E3B25A - 8B CF                 - mov ecx,edi               <<
複製代碼
與175.1
  1. MapleStory.exe+AB3C55 - 6A 28                 - push 28
  2. MapleStory.exe+AB3C57 - B8 7B2A1601           - mov eax,MapleStory.exe+D62A7B
  3. MapleStory.exe+AB3C5C - E8 5D990F00           - call MapleStory.exe+BAD5BE
  4. MapleStory.exe+AB3C61 - 8B D9                 - mov ebx,ecx
  5. MapleStory.exe+AB3C63 - 8B 3D 68A16401        - mov edi,[MapleStory.exe+124A168]
  6. MapleStory.exe+AB3C69 - 8B 07                 - mov eax,[edi]
  7. MapleStory.exe+AB3C6B - 8B CF                 - mov ecx,edi            <<
  8. MapleStory.exe+AB3C6D - 89 7D E0              - mov [ebp-20],edi       <<===
  9. MapleStory.exe+AB3C70 - FF 50 20              - call dword ptr [eax+20]<<
  10. MapleStory.exe+AB3C73 - 8B CF                 - mov ecx,edi              <<
複製代碼
原本同一個區域變數[ebp-14] 變成[ebp-20], 所以多了(0x20-0x14)的offset
, 也就是猜想原本[ebp-04]的區域變數被往後挪到[ebp-(04+C)] 的位置了\"\"

不過你是怎麼直接看出他是4*3的呀XD 經驗嗎(?\"\")
我只看得懂172.1那個Function的Entry
175.1的Entry我看不懂XDD

172.1:
  1. 00E3B23F - 55                    - push ebp //推入caller的ebp
  2. 00E3B240 - 8B EC                 - mov ebp,esp   //此function的ebp指向esp
  3. 00E3B242 - 83 EC 24              - sub esp,24    //esp分配24的空間給local variable
複製代碼
175.1:
  1. MapleStory.exe+AB3C55 - 6A 28                 - push 28                        //傳入參數28
  2. MapleStory.exe+AB3C57 - B8 7B2A1601           - mov eax,MapleStory.exe+D62A7B     //?
  3. MapleStory.exe+AB3C5C - E8 5D990F00           - call MapleStory.exe+BAD5BE         //?
  4. MapleStory.exe+AB3C61 - 8B D9                 - mov ebx,ecx                           //?
  5. MapleStory.exe+AB3C63 - 8B 3D 68A16401        - mov edi,[MapleStory.exe+124A168]  //?
  6. ...
複製代碼
後面就都跨謀了哈哈, 只好用猜的\"\"

另外我有找到一個網站, 很清楚地講172.1的那個Entry是怎麼做的
說明esp, ebp還有local variable / function parameter / return address的相對位置
以後應該比較看得懂啦XD

推薦給大家, 有同樣問題的朋友可以看下面這網址, 再來看這篇, 會比較看得懂在做啥\"\"
[url=http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames]http://en.wikibooks.org/wiki/X86 ... ns_and_Stack_Frames


作者: Doem    時間: 2014-12-31 09:07
anderson101866 發表於 2014-12-31 04:21
感謝 我懂了XD

因為原本172.1的Function:與175.1原本同一個區域變數[ebp-14] 變成[ebp-20], 所以多了(0x2 ...

因為差3個PUSH的大小啊!

好難得有人查英文資料…我英文不怎麼好的說 xDD
作者: anderson101866    時間: 2015-1-1 16:48
本帖最後由 anderson101866 於 2015-1-1 16:50 編輯
MS88088 發表於 2014-12-31 09:07 [url=forum.php?mod=redirect&goto=findpost&pid=728576&ptid=55520][/url]
因為差3個PUSH的大小啊!

好難得有人查英文資料…我英文不怎麼好的說 xDD ...

因為沒找到夠清楚的中文資料呀XDD

我看的也是半懂 不過他有圖解!

最清楚的是下面這張
    MyFunction2(10, 5, 2);
    可以看成
    push 2
    push 5
    push 10
    push eip + 2 ; return address is current address + size of two instructions
    jmp _MyFunction2

    即
    <Stack底部>
    :    :
    |  2 | [ebp + 16] (3rd function argument)
    |  5 | [ebp + 12] (2nd argument)
    | 10 | [ebp + 8]  (1st argument)
    | RA | [ebp + 4]  (return address)
    | FP | [ebp]      (old ebp value)
    |    | [ebp - 4]  (1st local variable)
    :    :
    <Stack頂部>

一目了然呀XDDD






歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓