• 标 题:ASProtect V1.2之脫殼簡述--C-pen (1千字)
  • 作 者:1212
  • 时 间:2001-2-13 9:52:09
  • 链 接:http://bbs.pediy.com

ASProtect V1.2和V1.1C其實大同小異.我們來脫它.以下我只列重點,相信大家均能手動脫殼.
(1)Import Table:使用最新版的Imp_list V.1.13(2001/01/06)來重建,
                不過你如果選Auto-detect Import是無法重建的,估計
                ASProtect做了修正去妨它,沒關係它妨新版卻不妨舊版
                用舊版去重建的目的,主要是去找.idata Section它得
                出的Import Table並不能用,那是因為ASProtect V1.2
                對Import Table又做了新的處理,只能用Imp_list
                1.13來重建,當然你也可以自己去程式中找.idata
                Section,反正ASProtect的Import Table編碼處都長
                的一樣.在Imp_list V1.13中不選Auto-detect
                Import,RVA=66000,SIZE=2000,Level=1,如此即能重
                建,再不然進入程式跟到編碼結束時下a eip/jmp eip
                再用Imp_list來重建.
(2)Hook:脫殼後的程式還是不能用因為ASProtect有留下Hook,如何移除它
        呢?那你得感謝ASProtect,因為它完善的SEH系統會告訴你,重開
        始的SEH MessageBox中得知它留下的Hook位址為00C1C6D8,用
        HexWorkshop打開已脫殼的文件,查找D8C6C100你會發現在RVA
        64FAC,64FB0中各有一個,用W32Dasm去反組譯,查找0064FAC,你會
        發現有如下的程式
        CALL [0064FAC]
        等價於
        CALL 00C1C6D8  <-- 在我們已脫殼的文件中是不會有這個位址
                          的程式碼
        比較原程式發現原來00C1C6D8只是一個RET,真是無聊!好了!那你
        應該知道如何移除這個Hook吧!我的方法是找個位址放RET,再將
        RVA 64FAC,64FB0指向這個位址,我選在隔壁即RVA 64FB4改:
        RVA 64FAC 00C1C6D8 --> 00464FB4
        RVA 64FB0 00C1C6D8 --> 00464FB4
        RVA 64FB4 00 --> C3
      (註:我標示的是用RVA而不是OffSet,那是因為我是用ICEdump去脫
          故我需令OffSet=RVA,若你是用Procdump去脫.則OffSet並不
          一定等於RVA端視你的操作選項而定)
     
      JOHNSON 2001/02/13

  • 标 题:補充-- C-pen (916字)
  • 作 者:1212
  • 时 间:2001-2-14 12:53:57
  • 链 接:http://bbs.pediy.com

有關我說的重建Import Table的部份,證實第一種是無法重建的,因為ASProtect會干擾Imp_list的運作,所以只能用第二種方法,本來想讓大家方便,沒想到變成隨便,Sorry!!
  事實上我是用第二種方法去重建,第一種是推論,沒想到是錯誤!!故此方法必定可行,若你操作正確的話.
  ASProtect的對Import table編碼處在:
:00C1F752 PUSHAD
:00C1F753 CLD
:00C1F754 MOV ESI,[EBP-04]
:00C1F757 LODSD
:00C1F758 OR EAX,EAX
        .
        .
:00C1F79E CALL 00C1F454
:00C1F7A3 POP EBX
:00C1F7A4 JMP 00C1F774
:00C1F7A6 POPAD        <--走到這編碼已完成
        .
        .
:00C1F7C4 JMP 00C1F7E0
在:00C1F7C4下a eip/jmp eip
按F5離開Soft-ICE再使用Imp_list即能重建Import Table(別忘了RVA=66000,SIZE=2000)
  至於hying所說的還有其他的Hook,能否具體說明,因我移除這兩個Hook
後程式運行的很正常.
  最後更正上文的兩個錯誤:
1.查找0064FAC  -->  00464FAC
2.CALL [0064FAC]  -->  CALL [00464FAC]
真的老了,錯誤百出,還望海涵.

    JOHNSON  2001/02/14