菜鳥脫文 ASProtect 1.23 RC4 ―― DVDFab v1.52,高手免進了

看雪資料發表於2015-11-15

【破解作者】 temerata
【作者郵箱】 temerata@sohu.com
【使用工具】 OllyDbg、LordPE、ImportREC、PEditor、Hex Workshop
【破解平臺】 Win2KSP4
【軟體名稱】 DVDFab v1.52
【下載地址】 原版下載
【軟體簡介】 一款可以幫助你輕鬆製作完美品質的DVD影碟備份的光碟複製工具!
            -無損複製DVD電影
            -可複製NTSC或PAL制式DVD
            -可只複製電影部分,不包括不需要的音訊和字幕
            -可燒錄到DVD-R/RW和DVD+R/RW
            -移除所有的DVD保護方式
            -備份多個光碟
            -恢復損壞的碟片中的資料
            -重寫和核心引擎以支援幾乎所有的DVD
【軟體大小】 855 KB
【加殼方式】 ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov
【破解宣告】 最近非常鬱悶!沒有什麼長進……,但願這篇東東對和我一樣的菜鳥有些用處吧……
--------------------------------------------------------------------------------
【破解內容】

1、尋找SDK地址並Dump取檔案:

開啟OllyDbg,忽略記憶體以外的所有異常,載入DVDFab.exe,然後用IsDebugPresent外掛隱藏自身:

00401000 >  68 01604D00     push DVDFab.004D6001                     ; 載入後停在這裡
00401005    E8 01000000     call DVDFab.0040100B
0040100A    C3              retn

一切安排妥當,按F9執行,出現記憶體,按Shift+F9跳過。按了21次Shift+F9之後(即在堆疊視窗看到機器特徵碼的時候):

……
0012FF5C   00E16BE8  ASCII "6RttNACAQn0="
……

按Alt+M視窗開啟記憶體映象視窗,在Code段下記憶體訪問斷點:

地址       大小       Owner      區段       包含                         型別   訪問      初始訪問  對映為
……
00400000   00001000   DVDFab                PE header                    Imag   R         RWE
00401000   0004D000   DVDFab                code                         Imag   R         RWE//在這一行點右鍵設定記憶體訪問斷點
……

設定完畢回到CPU視窗,再按1次Shift+F9會斷下來:

00418E35    8B4424 04       mov eax,dword ptr ss:[esp+4]             ; 斷在這裡
00418E39    A3 9CB64700     mov dword ptr ds:[47B69C],eax            ; 注意0047B69C,它將指向字串"6RttNACAQn0="的存放地址
00418E3E    C3              retn

再按幾下F9出現異常,無法用Shift+F9跳過,所以按Ctrl+F2重新開始。這次按22次再開啟記憶體映象視窗,下與剛才同樣的斷點。按Shift+F9被斷下來:

00418DF6    8B4424 04       mov eax,dword ptr ss:[esp+4]
00418DFA    A3 90B64700     mov dword ptr ds:[47B690],eax            ; 這個地址與剛才那個地址相鄰,它需要指向名字的存放地址
00418DFF    C2 0400         retn 4

這之後沒有什麼有用資訊,直接來到這裡:

00E039EC    3100            xor dword ptr ds:[eax],eax               ; 停在這裡,一般來說是殼的最後一次異常。在這裡用LordPE將檔案dump出來(注意先清除記憶體斷點)
……
00E03A29    C3              retn                                     ; 在這裡設斷,然後Shift+F9停在這裡
00E03A2A    5F              pop edi                                  ; 00E04BD9
00E03A2B    5E              pop esi                                  ; 00E04BD9
00E03A2C    5B              pop ebx                                  ; 00E04BD9
00E03A2D    8BE5            mov esp,ebp
00E03A2F    5D              pop ebp                                  ; 00E04BD9
00E03A30    C3              retn

2、尋找Stolen Code和OEP:

接下來要用F7步跟找Stolen Code,注意用F4跳出迴圈。我跟到的Stolen Code如下:

00E17C92    55              push ebp*
00E17C93    65:EB 02        jmp short 00E17C98

00E17C98    8F4424 00       pop dword ptr ss:[esp]                   ; DVDFab.0044A5E6
00E17C9C    8BEC            mov ebp,esp*
00E17C9E    6A FF           push -1*
00E17CA0    68 D0304500     push 4530D0*
00E17CA5    68 E6A54400     push 44A5E6*                             ; jmp to MSVCRT._except_handler3
00E17CAA    64:A1 00000000  mov eax,dword ptr fs:[0]*
00E17CB0    66:8105 BA7CE10>add word ptr ds:[E17CBA],0BB36
00E17CB9    2E:EB 02        jmp short 00E17CBE

00E17CD9    50              push eax*
00E17CDA    65:EB 02        jmp short 00E17CDF

00E17CDF    8F4424 00       pop dword ptr ss:[esp]
00E17CE3    64:8925 0000000>mov dword ptr fs:[0],esp*
00E17CEA    83EC 68         sub esp,68*
00E17CED    66:8105 F77CE10>add word ptr ds:[E17CF7],0BB36
00E17CF6    2E:EB 02        jmp short 00E17CFB

00E17D16    53              push ebx*
00E17D17    65:EB 02        jmp short 00E17D1C

00E17D49    56              push esi*
00E17D4A    65:EB 02        jmp short 00E17D4F

00E17D7C    57              push edi*
00E17D7D    65:EB 02        jmp short 00E17D82

00E17D82    8F4424 00       pop dword ptr ss:[esp]
00E17D86    8965 E8         mov dword ptr ss:[ebp-18],esp*
00E17D89    33DB            xor ebx,ebx*
00E17D8B    895D FC         mov dword ptr ss:[ebp-4],ebx*
00E17D8E    6A 02           push 2*
00E17D90    F3:             prefix rep:

過了這些Stolen Code很快便來到偽OEP處:

0044A619    FF15 7CE64400   call dword ptr ds:[44E67C]               ; MSVCRT.__set_app_type

3、修復:

這時開啟ImportREC,選中程式,OEP處填入0004A619,點選IAT AutoSearch,然後點Get Imports。
看到有許多無效的,點Show Invalid全部選中,然後右鍵==>Trace Level1(Disasm)修復大部分,剩下的修復如下:

rva:0004E150 mod:kernel32.dll ord:0158 name:GetProcAddress
rva:0004E178 mod:kernel32.dll ord:010E name:GetCurrentProcess
rva:0004E18C mod:kernel32.dll ord:0193 name:GetVersion
rva:0004E198 mod:kernel32.dll ord:01F7 name:LockResource
rva:0004E1F8 mod:kernel32.dll ord:013F name:GetModuleHandleA

如此修復之後,Fix Dump得到dumped_.exe,用OllyDbg載入,補上Stolen Code,另存為dumped_1.exe,用PEditor將Entry Point改為0004A5EC。
如此之後,程式已經可以執行(沒有暗樁)。

4、破解:

用Hex Workshop開啟dumped_1.exe來到偏移為0047B690處:6138DF00 0E000000 0E000000 2455E100
它下面是一大塊空地。選0047B700處填上temerata[DFCG],並將上面這個6138DF00修改為00B74700,將檔案另存為Unpacked.exe,破解完畢。
這個軟體從來沒有用過,如果存在錯漏,敬請指教!

相關文章