OllyICE 4 PassWord hack
- OllyICE 可以模擬X86的Machine code,藉由Assembly的分析,找出斷點跟Register的status,達到PassWord hack.
OllyICE支援軟體除錯、脫殼、分析算法 ... (破解)
Ref http://forum.slime.com.tw/thread224674.html
詳細說明文件請上網google
- 這邊我們就以最簡單的方式來做教學,
sample code
判斷輸入的值是否為 "1234", 確定就Pass.

- 打開OllyICE, 載入a.exe檔,因為我是用Cygwin內的gcc compiler出來的,所以要加入Cygwin的路徑,不然會fail,如果你是在Dos底下,請把Sample code抓回去,自己重新compiler一次.
a.exe : 自行complier,THX
sample code : http://sites.google.com/site/funningboy/perl_code/guess.c?attredirects=0&d=1
- 先按F9 run 一次,猜猜看程式的架構,發現會斷在
0040114E . /0F84 9C010000 je 004012F0
在console會出現input password的字樣. 就先隨便打入猜一下輸入的格式.
發現只要是chart的型態會出現無窮回圈,如果全int會跳過,表示輸入的PassWord是0~9的數字組合.
- 再透過查找關鍵字的方式,回推出Program所在的Address區段
按右鍵 search for -> all referenced text strings ,
發現關鍵字, Pass Ok.得知記憶體的區段位置
- 再回到Assembly code的位置,發現
00401089 . 817D FC D2040>cmp dword ptr [ebp-4], 4D2 ;
要經過cmp才能夠往下走,所以在cmp這邊做斷點check.如果Pass,就會走到
00401092 . C70424 332040>mov dword ptr [esp], 00402033 ; ASCII "Pass Ok",LF.
所以我們就拿4D2當作input PassWord看看,發現可以走道Pass OK.
而4D2轉成10進位得1234,就大概可以猜出是否是PassWord.
或者是改JP的位置,直接跳過Check到PassOk,如果能直接跳到Pass Ok,就表示在Check的loop一定是輸入Pass Word的地方.
關掉OllyICE,重新打開a.exe,輸入1234就OK了
Ref: http://www.pediy.com/
沒有留言:
張貼留言