AoB之變動規則(很小的一部分)


因為很多人問到那些AoB是會有變動變化的呢~?
你要對組合語言的各種語法有所了解,不然就是靠經驗才知道
這邊舉例一些常見的AoB規則,畢竟不可能一一列舉出來

話說~手打文章真的好累喔XDDD



雖然說AoB會"變動"但其實它有一定的規則

遠程跳躍
E9 XX XX XX XX (無條件跳躍)(Jmp)
E8 XX XX XX XX (呼叫副程式)(Call)
0F 85 XX XX XX XX (不等於跳躍)(Jne)
0F 84 XX XX XX XX (等於跳躍)(Je)
...
其中 XX XX XX XX = 目標位址 - Next行位址
相減= 0x12345678,Then XX XX XX XX = 78 56 34 12,以此推論
舉例:


  1. 0040136E - e9 de 00 00 00             - jmp 00401451
  2. 00401373 - 66 85 db                   - test bx,bx

00401451 - 00401373 = 000000DE,XX XX XX XX = DE 00 00 00 00


近程跳躍
E9 XX (無條件跳躍)(Jmp)
75 XX (不等於跳躍)(Jne)
74 XX (等於跳躍)(Je)
...

其中 XX = 目標位址 - Next行位址,相減 = 0x12,Then XX = 12,以此推論
舉例:


  1. 004013B3 - 74 48                      - je 004013fd
  2. 004013B5 - 48                         - dec eax

004013fd - 004013B5 = 48

還有很多語法有可能會有AoB的變動
通常是跟Address有關的才會變動

例如
  1. 004044D0 - c7 45 bc 80 ce b4 00       - mov [ebp-44],00b4ce80

你看其中的AoB, c7 45 bc 80 ce b4 00
其中後面那部分,               80 ce b4 00 = 00B4CE80

例如
  1. 004010C0 - ff 15 3c 61 d1 00          - call dword ptr [00d1613c]

你看其中的AoB, ff 15 3c 61 d1 00
其中後面那部分,        3c 61 d1 00  = 00D1613C 

還有很多啦~
我半夜想到的只有這些囉~懶得再想了
去睡覺覺881~XD

KNowlet 手打發佈於 knowlet3389.blogspot.com



留言

  1. 板大您好
    我想請問您:

    以下您發的此數據如何做更新到146.2

    // TwMS v146.1 ICS 人物全圖吸物
    // 原創: Cam1596
    // 出處: w8baby (GMS V0.98.1 Item Vac Script)
    // ICS : 冷羽楓痕
    // 更新:ejo3y7
    [Enable]
    alloc(ItemVac,64)
    label(SetItemXY)
    00d3d76c:
    DD ItemVac
    ItemVac:
    cmp [esp],004Db841
    je SetItemXY
    cmp [esp],004daae9
    jne PtInRect
    mov [esp],004daaed // "Add2+04" - 不斷線
    jmp PtInRect
    SetItemXY:
    push eax
    mov eax,[esp+0C] // [esp+0C]: 地上物品X
    mov [ebx],eax // [edi+00]: 封包物品X (人物X)
    mov eax,[esp+10] // [esp+10]: 地上物品Y
    mov [ebx+04],eax // [edi+04]: 封包物品Y (人物Y)
    pop eax
    mov [esp],004Db85d // Add1+02 "jne 004DA678"- 可撿物
    jmp PtInRect
    [disable]
    00d3d76c:
    DD PtInRect
    Dealloc(ItemVac)

    回覆刪除
    回覆
    1. 004Db841、004daae9 可以用AoB更新
      00d3d76c --> 這個是呼叫PtInRect的位置(這樣說法對嗎?)把你上面更新的位置往上應該可以看到
      其他部分數據上有備註了

      刪除
    2. 00d3d76c --> 呼叫PtInRect的位置 ?

      甚麼意思 ?

      004Db841、004daae9我更新好了
      是否有錯誤可請大大指教嗎 ?
      008db96a 008dac12

      刪除
  2. 這幾天忽然想學更新數據...
    我這菜鳥...
    該從哪個位址開始做更新呢?!

    K大方便教教我嗎...

    回覆刪除
    回覆
    1. 先從CRC數據開始吧
      你可能要先去找CEM
      然後比較舊版跟新版的AoB
      你可以看影片教學:)

      刪除
  3. 你看其中的AoB, ff 15 3c 61 d1 00
    其中後面那部分, 3c 61 d1 00 = 00D161"2"C

    '===================================================

    你看其中的AoB, c7 45 bc 80 ce b4 00
    其中後面那部分, "bc" 80 ce b4 00 = 00B4CE80

    好像有不小心打錯 :D

    很詳細喔~~~ 果然是高手阿!!! 佩服...

    By - 微O戀 ((心血來潮透露一下身分 >O<

    回覆刪除
    回覆
    1. 囧...真的打錯了
      感謝你那麼仔細有看到XD
      半夜跑起來打文章近視眼昏花=))

      刪除
    2. 好文章要多多閱讀學習阿 XD

      真辛苦阿!! 期待你日後的好文章 :D

      刪除
  4. 請問一下 test bx,bx的 test 是什麼意思@@?

    回覆刪除
    回覆
    1. TEST指令: 兩運算元間每對相對應位元中and 運算,依其結果設定旗標
      簡單來說就是判別是否為零

      刪除

張貼留言

本月最夯