超簡易數據閱讀註釋

痾...今天剛好提示了一位網友...啊我既然都跟他說了,那我乾脆再來發個教學文衝衝人氣吧=  =
順便調節一下心情= 口 =
有甚麼解釋不清楚、錯誤等都可以跟我說

KNowlet 手打發佈於 knowlet3389.blogspot.com

一般我們所謂的數據,其實就是給CheatEngine使用的修改目標記憶體之組合語言(應該可以這樣說吧?)

那我們舉這版(TwMS v146.1)的完全無敵(物理)數據當作範例

以下大小寫沒有差異

[Enable]
Registersymbol(AwesomeMan) //CE申請名稱AwesomeMan,不必須
Alloc(AwesomeMan,64) //申請記憶體空間
Registersymbol(Invincible) //CE申請名稱Invincible,不必須,在這段數據中可用label(標籤)取代
Alloc(Invincible,64)

00D3D794: //Call的esp暫存點
DD AwesomeMan //Long寫入我們的數據

AwesomeMan:
Cmp [Esp],005EA13F //比對暫存器中是否為我們要修改之位置
Jne IsrectEmpty //不是的話跳還原點
Mov [Esp],Invincible //是的話就將數據位址移入暫存器
Jmp IsrectEmpty //還原

Invincible: //一個標籤(申請的空間)
Test Eax,Eax //原本的記憶體位置,抄下來,Test處裡
Jmp 005EA143 //我們實際修改之位置,Nop掉他的跳轉達到無敵的效果,此處使用jmp

[Disable]
00D3D794:
DD IsrectEmpty //還原(此文api點所以在CE當中能夠使用他的名)一般會是一個地址adr
Dealloc(AwesomeMan) //釋放申請之記憶體
UnRegistersymbol(AwesomeMan) //取消申請的名
Dealloc(Invincible)
UnRegistersymbol(Invincible)

KNowlet 手打發佈於 knowlet3389.blogspot.com

留言

  1. 我問一下 物品定位 可以直接用 無敵ICS 數據 下去改?
    我改用物品定位 一下就斷線@@
    要是有哪個大大可交一下
    即時通:w10203040w

    004db83b ff 15 6c d7 d3 00
    - call dword ptr[00D3D76C]
    004db841 85 c0
    - test eax,eax
    004db843 75 18
    - jne 004DB85D
    004db845 83 4d fc ff
    - or dword ptr [ebp-04],FF

    [ENABLE]
    registersymbol(AwesomeMan)
    alloc(AwesomeMan,64)
    registersymbol(Invincible)
    alloc(Invincible,64)

    00d3d76c:
    DD AwesomeMan

    AwesomeMan:
    cmp [esp],004DB841
    jne IsRectEmpty
    mov [esp],Invincible
    jmp IsRectEmpty

    Invincible:
    test eax,eax
    jmp 004DB845

    [DISABLE]
    00d3d76c:
    DD IsRectEmpty
    dealloc(AwesomeMan)
    unregistersymbol(AwesomeMan)
    dealloc(Invincible)
    unregistersymbol(Invincible)

    回覆刪除
    回覆
    1. 問題1
      你的還原部分整個錯
      應該是PtInRect

      問題2
      此數據應該是
      [Enable]
      004DB7F4:
      db 90 90
      [Disable]
      004DB7F4:
      jne 004db845

      所以你改的那個點應該不會有甚麼效果吧

      刪除
    2. 我是重jne 004db845 這個下去找的= =

      刪除
  2. 請問大大
    物品定位V146.3 CRC 我已測試可以用
    [Enable]
    004DB867:
    db 90 90
    [Disable]
    004DB867:
    jne 004DB8b8

    004DB8AE FF 15 6C E7 D3 00 call dword ptr [00d3e76c]
    004DB8B4 85 C0 test eax,eax
    004DB8B6 75 18 jne 004db8d0
    004DB8B8 83 4D FC DD or dword ptr [ebp-04],ff

    要轉換為 ICS 的 但是 我測試後 發現不能撿起物品 不知道是哪裡出錯 可否請大大指導
    //146.3物品定位ICS
    [ENABLE]
    registersymbol(AwesomeMan)
    alloc(AwesomeMan,64)
    registersymbol(Invincible)
    alloc(Invincible,64)

    00d3e76c:
    DD AwesomeMan

    AwesomeMan:
    cmp [esp],004db8b4
    jne PtInRect
    mov [esp],Invincible
    jmp PtInRect

    Invincible:
    test eax,eax
    jmp 004db8b8

    [DISABLE]
    00d3e76c:
    DD PtInRect
    dealloc(AwesomeMan)
    unregistersymbol(AwesomeMan)
    dealloc(Invincible)
    unregistersymbol(Invincible)

    回覆刪除
    回覆
    1. 我說過了,這個ICS改的東西很顯然是錯的,並非物品定位
      我們先來看物品定位的CRC
      004DB867:
      db 90 90
      這是指說跳過jne 004DB8b8這個跳躍,也就是不讓他跳轉的意思

      再來看你寫的ICS
      還原成CRC以後是這樣
      004DB8B6:
      db 90 90
      你看看~改的位置就不一樣了

      刪除
    2. 感謝洋蔥大回覆
      我已經了解您的意思了
      但是我又遇到一個問題..
      我發現 004DB867 (物品定位CRC) 用memory view 找
      它附近沒有CALL的值 沒有ESP暫存的位置
      我研究了一下http://knowlet3389.blogspot.tw/2012/05/twms-v146ics_17.html
      用裡面的ADD找也找不到 用它既有的ESP的去蒐OpCode 雖然有兩個但是毫不相干 一無所獲
      煩請大大解惑
      感謝您!

      刪除
  3. 請問洋蔥大

    V131

    [enable]
    registersymbol(MouseRushStart)
    alloc(MouseRushStart, 512)
    label(RetMSRush)

    MouseRushStart:
    cmp [00acf52c],0
    je RetMSRush
    mov ebx, [00acf52c]
    mov ebx, [ebx+17a8] //17a8
    cmp esi, ebx
    jne RetMSRush
    mov eax, [00acf93c] //00acf93c
    mov eax, [eax+978]
    mov ebx, [eax+84]
    mov eax, [eax+88]
    mov [edi-4], ebx
    mov [edi],eax
    RetMSRush:
    mov ebx,[ebp+14]
    test ebx,ebx
    jmp 007C75BB //007C75BB
    007C75B6: //007C75B6
    jmp MouseRushStart
    [disable]
    007C75B6:
    db 8b 5d 14 85 db

    unregistersymbol(MouseRushStart)
    dealloc(MouseRushStart)

    -----------------------------------------

    這一段要如何去查呢?

    cmp [00acf52c],0
    je RetMSRush
    mov ebx, [00acf52c]
    mov ebx, [ebx+17a8] //17a8
    cmp esi, ebx
    jne RetMSRush
    mov eax, [00acf93c] //00acf93c
    mov eax, [eax+978]
    mov ebx, [eax+84]
    mov eax, [eax+88]
    mov [edi-4], ebx
    mov [edi],eax

    還是已經被 AB 了 ?

    回覆刪除
  4. Pointere更新
    我看了一下,那應該是人物的Pointer
    下面那個是滑鼠Pointer

    回覆刪除
  5. Invincible: //一個標籤(申請的空間)
    這個是可以隨便打一些英文?

    回覆刪除
  6. 請問洋蔥大大,
    這些地址該怎麼去搜尋呢?
    只能從舊的數據更新來嗎?
    我指的是00d3d794: //Call的Esp暫存點 這部分
    先謝謝您的熱心解惑唷:)

    回覆刪除
    回覆
    1. http://knowlet3389.blogspot.tw/2012/08/ics.html

      刪除
  7. 大大您好

    想請問您一開始的address: 00d3d794最原本是做什麼作用呢

    以及005EA13F呢?(為何是它被拿來比對)

    還有每個數據都要做test的處理嗎?

    麻煩您了 謝謝!

    回覆刪除
    回覆
    1. http://knowlet3389.blogspot.tw/2012/08/ics.html
      00d3d794是個空間存著IsrectEmpty這API的地址
      不是比對只是跳到005EA13F
      Test是本來就在那的,其實不用寫也沒關係...

      刪除
    2. 那麼大大
      Cmp [Esp],005EA13F //比對暫存器中是否為我們要修改之位置
      這行的意思 是把005EA13F比對跟ESP裡面的值 為什麼呢?(小弟看的懂ASM,但不懂為何如此)


      謝謝您的解釋!!

      請問您有更方便的聯絡方式嗎?

      刪除
  8. 作者已經移除這則留言。

    回覆刪除
  9. Alloc(AwesomeMan,64) //申請記憶體空間 這邊記憶體大小是否會影響到能否使用?

    回覆刪除
    回覆
    1. 理論上會影響到,如果不知道自己的代碼有多少bytes建議多申請些空間

      刪除

張貼留言

本月最夯