2015年1月24日 星期六

[簡易篇]ICS解析(利用Call達到無須Bypass就可以使用的數據)

作者:Onion

來源:http://ibf.tw/OIAH4

備註:如果作者不希望被轉帖到此處,請告知,小弟會馬上刪帖。

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


好擔心講錯> < ...歡迎高手指正,只是最最簡單的講解(感覺上好像簡寫淫水機大大那篇~)而已...

最簡單(常見)的ICS是利用Call跳轉時儲存的Esp修改來達成...甚麼意思呢?

Call 與其他 Jmp Jne ...(J開頭的) 差別在於它執行完會返回原來位置
所以為了知道要跳回的地址因此要儲存於Esp當中~
  1. 005C9F67 - ff 15 dc 67 c9 00     - call dword ptr [00c967dc] : 76DA561E //IsRectEmpty
  2. 005C9F6D - 85 c0                      - test eax,eax
  3. 005C9F6F - 74 0e                      - je 005c9f7f
這邊用 TwMS 138 完全無敵 ICS 來示範

重點:
  1. 00c967dc: //此為Call所存放位置的地址...
  2. DD AwesomeMan

  3. AwesomeMan: //這邊是要檢查是否進行Hook動作
  4. cmp [esp],005C9F6D //不進行-跳回原本Call位置的下一行~
  5. jne IsRectEmpty
  6. mov [esp],Invincible //Hook,跳至我們的數據
  7. jmp IsRectEmpty

  8. Invincible: //這邊就是進行Hook的數據啦!(Call的下一行)
  9. test eax,eax
  10. jmp 005C9F71
IsRectEmpty這東西是甚麼 ? 00c967dc原先存放的地址是IsRectEmpty這個地址

我們判斷不是我們要修改的之後 , 跳過去IsRectEmpty , 因為我們沒有修改到ESP , 當返回時還是返回到005C9F6D

所以程式可以正常的繼續執行而不會崩潰 ~ 那如果當判斷到是我們要搞的人要如何動作呢 ??

mov [esp],Invincible (我們將ESP寫入我們的地址 , 並讓程式繼續執行原先動作 , 當執行完返回到我們的地址 )

所以程式是返回到我們這邊 , 我們這邊就可以加入HOOK的數據 , 來實現無敵功能囉 ~
-引用 淫水機 ICS解析

簡單來說...要找ICS數據
在你想的數據上面找像call dword ptr [00c967dc]這種樣子的Call (小提示:請UCE 檢視->顯示符號(Show Symbol)別勾)

就這樣啦~這是看起來最簡單的利用Call達成的ICS數據寫法...

沒有留言:

張貼留言