[簡易篇]ICS解析(利用Call達到無須Bypass就可以使用的數據)
作者:Onion
備註:如果作者不希望被轉帖到此處,請告知,小弟會馬上刪帖。
-------------------------------------------------------------------------------------
好擔心講錯> < ...歡迎高手指正,只是最最簡單的講解(感覺上好像簡寫淫水機大大那篇~)而已...
最簡單(常見)的ICS是利用Call跳轉時儲存的Esp修改來達成...甚麼意思呢?
Call 與其他 Jmp Jne ...(J開頭的) 差別在於它執行完會返回原來位置
所以為了知道要跳回的地址因此要儲存於Esp當中~
- 005C9F67 - ff 15 dc 67 c9 00 - call dword ptr [00c967dc] : 76DA561E //IsRectEmpty
- 005C9F6D - 85 c0 - test eax,eax
- 005C9F6F - 74 0e - je 005c9f7f
這邊用 TwMS 138 完全無敵 ICS 來示範
重點:
- 00c967dc: //此為Call所存放位置的地址...
- DD AwesomeMan
- AwesomeMan: //這邊是要檢查是否進行Hook動作
- cmp [esp],005C9F6D //不進行-跳回原本Call位置的下一行~
- jne IsRectEmpty
- mov [esp],Invincible //Hook,跳至我們的數據
- jmp IsRectEmpty
- Invincible: //這邊就是進行Hook的數據啦!(Call的下一行)
- test eax,eax
- 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數據寫法...
沒有留言:
張貼留言