【破解作者】 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,破解完畢。
這個軟體從來沒有用過,如果存在錯漏,敬請指教!