【破解作者】 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,破解完毕。
这个软件从来没有用过,如果存在错漏,敬请指教!