輕鬆+愉快 esp定律+記憶體斷點快速脫老王的EncryptPE1.0加殼的記事本

看雪資料發表於2004-08-04

【破文標題】輕鬆+愉快 esp定律+記憶體斷點快速脫老王的EncryptPE1.0 V1.2003.5.18加殼的記事本
【破文作者】springkang[DFCG]
【作者主頁】www.chinadfcg.com
【作者郵箱】springkang2003@yahoo.com.cn
【所屬組織】DFCG
【軟體名稱】EncryptPE1.0加殼的一個記事本
【下載地址】本地下地
【破解工具】OD,impr,loadpe,
【保護方式】
【軟體下載】http://bbs.pediy.com/showthread.php?s=&threadid=3506
【破解難度】中等
----------------------------------------------------
軟體介紹:
    老王老師的猛殼,曾經難倒眾多高手!可是殼已經老了,因為老王的新版殼出來了!
----------------------------------------------------
破解聲名:幾個月前學習fly的脫文,可是水平很菜,脫不了。前幾天有個網友要我幫忙搞一個軟體,加的就是這個殼。沒辦法,只有硬著頭皮試了。重新看了fly大俠的脫文,就開始上路!沒想到這個猛殼不防esp定律,大菜鳥我又撿了個漏:D
----------------------------------------------------
【破解分析】
    用fly的修改版載入(沒有修改版也沒關係,新增“同時忽略0EEDFADE、C0000008、009B25C、00953D74”異常,就行了。否則會很難看的),忽略所有異常,再用IsDebugPresent外掛隱藏一下!
0040D000 >  60              pushad   //停在這裡,F8單步執行二步。
0040D001    9C              pushfd
0040D002    64:FF35 0000000>push dword ptr fs:[0]  //到這裡esp=0012ffa0 ,在命令列下:hr 0012ffa0 F9執行。
0040D009    E8 79010000     call NOTEPAD.0040D187
0040D00E    0000            add byte ptr ds:[eax],al
0040D010    0000            add byte ptr ds:[eax],al

幾個入口點警告之後,出現註冊對話方塊,點確定,中斷在硬體斷點處
711A37AE    25 00010000     and eax,100    //中斷在這裡,取消硬體斷點,用ALT+M開啟記憶體模組,下記憶體訪問斷點
711A37B3    3D 00010000     cmp eax,100
711A37B8    74 05           je short V1200351.711A37BF
711A37BA    E8 C996FFFF     call V1200351.7119CE88
711A37BF    6A 10           push 10
711A37C1    A1 8CC71B71     mov eax,dword ptr ds:[711BC78C]
711A37C6    8B00            mov eax,dword ptr ds:[eax]
711A37C8    E8 3713F8FF     call V1200351.71124B04

記憶體映象, 專案 23
 地址=00401000
 大小=0000C000 (49152.)
 Owner=NOTEPAD  00400000
 Section=EPE0    //在這裡下記憶體訪問斷點,因為加了密,所以就不是以前的 code了,其實還是一樣的。
 型別=Imag 01001002
 訪問=R
 初始訪問=RWE

F9執行,中斷在入口處了
004010CC    55              push ebp        //中斷在這裡,是不是很熟悉? :) 用loadpe dump後,用impr修復,
004010CD    8BEC            mov ebp,esp
004010CF    83EC 44         sub esp,44
004010D2    56              push esi
004010D3    FF15 E4634000   call dword ptr ds:[4063E4]
004010D9    8BF0            mov esi,eax

因為加了密,所以修復不了。看看fly寫的文章,現在我們只要能找開加密點,進行修改就行了,至於為什麼確定那裡是加密點,此處暫不討論!
先看看第一個無效的指標地址:rva:000062e4
按CTRL+F2重新開始,在命令列dd 004062e4,下記憶體訪問斷點。F9執行,
7112295D    F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]    //中斷在這裡,再按兩次F9後(如果再按一次F9會怎樣呢?自己試試吧),此時CTRL+G來到      711A33A1(這裡要參考fly大俠的文章,或者自己去跟,體會一下,這裡我沒時間多說了)
7112295F    89C1            mov ecx,eax
71122961    83E1 03         and ecx,3
71122964    83C6 03         add esi,3
71122967    83C7 03         add edi,3
7112296A    F3:A4           rep movs byte ptr es:[edi],byte ptr ds:[esi]

711A33A1    8B55 F8         mov edx,dword ptr ss:[ebp-8]   //到這裡,F2下斷,F9執行。中斷在此。我們在命令列DD ebp-4,看到了什麼?是RegQueryValueExA,(在此記憶體區域上下看看,觀察一下。)好的,修改指令。
711A33A4    8910            mov dword ptr ds:[eax],edx  //如果剛才再按一次F9,就會發生記憶體中斷,來到這裡,呵呵,加密的指標已經處理完了,我們停在這裡有什麼用呢?所以就要在上一行下斷,那裡正好在處理加密的批針。
711A33A6    33C0            xor eax,eax
711A33A8    5A              pop edx
711A33A9    59              pop ecx

711A33A1 8B55 F8  mov edx,dword ptr ss:[ebp-8]//加密指標 ★ 
改為:
711A33A1 8B55 FC  mov edx,dword ptr ss:[ebp-4]//正確函式
取消記憶體斷點和F2斷點,F9執行(如果不取消,F9,我們會看到711A33A1處正在處理正確函式 ,呵呵!),雖然程式異常無法再執行,但是所有的函式均自動還原了。
執行ImportREC,選擇這個程式。把OEP改為000010CC,點“Get Import”,
只修復了一些,還有很多沒修復。沒關係,再來一次。
現在看看還沒修復的無效的指標地址,先看第一個:rva:000062fc
方法同上,只是有點不同。我這裡是下hr 004062fc ,(下記憶體訪問斷點不太行,會直接中斷在  711A33A4    8910            mov dword ptr ds:[eax],edx  已經處理完了加密指標,中斷在這裡有什麼用?),中斷在
7112295D    F3:A5           rep movs dword ptr es:[edi],dword ptr ds:[esi]  然後CTRL+G來到711A33A1。後面的就一樣做了。
經過兩次修復後,一切OK了。
脫殼後檔案有點大,按fly的方法重建也還是一樣。沒辦法了,不管它,能執行就行 :D


----------------------------------------------------
【總結】
    本文參考了fly大俠的脫文,該文很有參考價值,省了偶不少時間,向fly 大俠致敬了!另外還要向老王老師致敬,不好意思拿他的殼開了刀!
    用這個方法脫了用EncryptPE加的一個程式同樣有效!
----------------------------------------------------
【版權資訊】
版權公有,人權私有!謝謝轉載,註明作者!

相關文章