逆向脫殼入門

  兩個入門級的脫殼的CTF題目,記錄一下。

一、逆向脫殼入門題目

    1.nSpack殼

    先用IDA打開看看:

    可以看到有殼,而且解析出來的函數很少,對脫殼後的文件如下:

 

     可以看到多出了很多函數。

    用ESP定律進行脫殼,OD打開軟件後如圖:

    可以看到了pushad,壓入所有寄存器入棧,F8到調用的函數下在右邊的ESP處下硬件斷點如圖: 

    可以看到 popfd,並且緊接着進行一次遠跳,F8跟進。

     基本1336就是OEP了,此處有兩種脫殼方法,第一種用PETOOL進行DUMP,第二種直接用OD進行脫殼,本文使用OD進行脫殼。1336處右鍵分析->從目標出刪除模塊掃描後,如圖:

    1336爲程序的入口點,F7跟進:

     接下來就到了熟悉的地方,直接使用ODDump脫殼:

     脫殼後使用IDA進行算法逆向破解即可。

    2.Reversing.kr的esay unpack

    有耐心的一點一點F8。

     發現一個遠跳,F8跟進,分析->刪除模塊等操作在分析算法,1150即爲OEP。

二、 上述使用的單步跟蹤法

       1、用OD載入待脫殼文件,如果出現壓縮提示,選擇“不分析代碼”; 
  2、向下單步跟蹤,實現向下的跳轉; 
  3、遇到程序往上跳轉的時候(包括循環),在回跳的下一句代碼上單擊並按鍵盤上的“F4”鍵跳過回跳指令; 
  4、OD中的綠色線條表示跳轉沒有實理,不必理會,紅色線條表示跳轉已經實現; 
  5、如果剛載入程序的時候,在附近有一個CALL指令,那麼就要按鍵盤上的“F7”鍵跟進這個CALL內,不然程序很容易運行起來; 
  6、在跟蹤的時候,如果執行某個CALL指令後就運行,一定要按鍵盤上的“F7”鍵進入這個CALL之內再單步跟蹤; 
  7、遇到在popad指令下的遠轉移指令時,要格處注意,因爲這個遠轉移指令的目的地很可能就是OEP。

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章