找回密码
 注册
搜索
热搜: 回贴

脱壳技术

2010-1-12 20:27| 发布者: admin| 查看: 205| 评论: 0|原作者: 段誉

破文作者: machenglin

软件名称: DVDFab Platinum V2.9.8.0

下载地址: http://209.172.35.173/download/DVDFabPlatinum29.exe

软件大小: 2.8 MB

软件语言: 英文

软件类别: 国外软件 / 共享版 /

应用平台: Windows 98/SE/Me, NT/2000/XP, Server 2003

加入时间: 2006-06-29

软件介绍: DVDFab Platinum is all you need to backup DVDs. It combines the one-click convenience of DVDFab Express with the power of DVDFab Gold.

Version : ASProtect 2.xx (may be 2.11) Registered [8] 编译语言: VC6

加壳选项: 无Stolen OEP

SDK 使用: 无UserBuffer, 无CRC


用Volx大侠的脚本是本人认为最稳定和快速的,感谢Volx大侠的辛勤劳动,使我们感到方便。运行Volx大侠的脚本到OEP。

004797BE d> 55 push ebp ; OEP!

004797BF 8BEC mov ebp,esp

004797C1 6A FF push -1

004797C3 68 A8314800 push dumped_.004831A8

004797C8 68 C4954700 push

004797CD 64:A1 00000000 mov eax,dword ptr fs:[0]

LordPE--->dump--->dumped.exe。

ImportREC,OEP=000797BE,RVA=0007E000,SIZE=BC8。

获取输入表,显示未解决的指针1个为AD7758,剪切这个无效指针,修复转存文件,保存为dumped_.exe。

============================================================================================================



重新启动OD,载入dumped_.exe。F9运行,出现“内存地址00AD7758处不易读取”错误。

在堆栈窗口找到:

0012FDE0 00404185 返回到 dumped_.00404185 来自 00AD7758 ; 这里右键反汇编跟随。

0012FDE4 02000000 CrashRpt.02000000

0012FDE8 0048A3C4 ASCII "InstallEx"

0012FDEC 0040331A 返回到 dumped_.0040331A 来自 dumped_.00404163

跟随到这里。

0040417F FF15 C0E14700 call dword ptr ds:[47E1C0] ; 注意这个[47E1C0]

00404185 85C0 test eax,eax ; 跟随到这里,望上看!

00404187 74 31 je short dumped_.004041BA

00404189 68 ACA34800 push dumped_.0048A3AC ; ASCII "DVDFab - Crash Report"

0040418E 68 98A34800 push dumped_.0048A398 ; ASCII "service@dvdidle.com"

00404193 6A 00 push 0

00404195 FFD0 call eax

ds:[0047E1C0]=00AD7758

是这里出错了。

另启动一个OD,加载原版程序,用Volx大侠的脚本跑到OEP。

下断 BP 0040417F。

断下后,F7进入。

00AD7758 55 push ebp

00AD7759 8BEC mov ebp,esp

00AD775B 8B55 0C mov edx,dword ptr ss:[ebp C]

00AD775E 8B45 08 mov eax,dword ptr ss:[ebp 8]

00AD7761 3B05 58A4AE00 cmp eax,dword ptr ds:[AEA458]

00AD7767 75 09 jnz short 00AD7772

00AD7769 8B0495 58A4AE00 mov eax,dword ptr ds:[edx*4 AEA458]

00AD7770 EB 07 jmp short 00AD7779

00AD7772 52 push edx

00AD7773 50 push eax

00AD7774 E8 03E0FEFF call 00AC577C ; jmp to kernel32.GetProcAddress

右键跟随00AD7774进入:

00AC577C - FF25 78D2AE00 jmp dword ptr ds:[AED278] ; kernel32.GetProcAddress

ds:[00AED278]=7C80AC28 (kernel32.GetProcAddress)

回到载入dumped_.exe的OD,修改:

ds:[0047E1C0]=00AD7758

修改成:

ds:[00AED278]=7C80AC28 (kernel32.GetProcAddress)

在数据窗口中选择7C80AC28,复制到可执行文件。

F9,运行。呵呵,出来一个注册的窗口,看来还需要解决注册的这个窗口。

============================================================================================================

反文件自校验的方法很多,我这里采用NBW大侠的401000搜索大法。

重新载入修改的脱壳文件,F9运行,停在调试字符2次后,Alt M,在00401000 ,F2下断。

F9运行,断在这里,F8步进。

00404197 83C4 0C add esp,0C

0040419A A3 F8244900 mov dword ptr ds:[4924F8],eax

0040419F EB 19 jmp short dumped_.004041BA

004041A1 68 8CA34800 push dumped_.0048A38C ; ASCII "UninstallEx"

004041A6 50 push eax

004041A7 FF15 C0E14700 call dword ptr ds:[47E1C0] ; kernel32.GetProcAddress

。。。。。。。。。。。

00403380 E8 B55B0700 call

00403385 E8 BF1A0200 call dumped_.00424E49

0040338A 8BC8 mov ecx,eax

0040338C E8 DD1B0200 call dumped_.00424F6E ; F7进入

00403391 FF15 B48B5100 call dword ptr ds:[<&ole32.OleUninitialize>] ; ole32.OleUninitialize

F7进入,F8步进,来到这里。

004033CC E8 CF600700 call dumped_.004794A0

004033D1 51 push ecx

004033D2 56 push esi

004033D3 8BF1 mov esi,ecx

004033D5 E8 99040000 call dumped_.00403873 ; F7进入

F7进入,F8步进,来到这里。

004038CB FF15 4C805100 call dword ptr ds:[<&comctl32.ImageList_Load>; comctl32.ImageList_LoadImageA

004038D1 8986 14010000 mov dword ptr ds:[esi 114],eax

004038D7 E8 5D350200 call dumped_.00426E39

004038DC 8BC8 mov ecx,eax

004038DE E8 383D0200 call dumped_.0042761B ; F7进入

004038E3 33F6 xor esi,esi

F7进入,F8步进,来到这里。

00427618 C2 0800 retn 8

0042761B E8 29D8FFFF call dumped_.00424E49

00427620 05 04010000 add eax,104 ; 注册标志在eax 104

00427625 74 0F je short dumped_.00427636

00427627 50 push eax

00427628 E8 AB1E0500 call

本机的eax=492CF0.

eax 104=492CF0 104=492618.

Ctrl G: 492618,这里全是0,写入想注册的名字,保存到执行文件。

OK。

为什么我在那里知道F7跟进,

我的经验是当步过这个CALL时,程序会稍微停滞读盘,就怀疑这个CALL有情况,由键跟随进去看看代码行就知道了。





最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 11:33 , Processed in 0.190634 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部