|
Ultra Protect脱壳+暗桩解除――股市风暴 V6.0
最初由 fly 发布 但是我以经照文章改了~~~为什么还是出错呢???? |
|
Ultra Protect脱壳+暗桩解除――股市风暴 V6.0
原版是这个样子的: 007325FB E8 00DBFFFF call ODT_-7.00730100 00732600 8D85 83FB4000 lea eax,dword ptr ss:[ebp+40FB83] 00732606 8BD8 mov ebx,eax 00732608 50 push eax 00732609 50 push eax 0073260A 8B85 20854100 mov eax,dword ptr ss:[ebp+418520] ; kernel32.GetModuleHandleA //ss:[00737520]=77E12CD1 (kernel32.GetModuleHandleA) eax=0072EB83 (ODT_-7.0072EB83), ASCII "KERNEL32.DLL" 00732610 0FB600 movzx eax,byte ptr ds:[eax] //ds:[77E12CD1]=83 eax=77E12CD1 (kernel32.GetModuleHandleA) 00732613 83E8 33 sub eax,33 00732616 3D 99000000 cmp eax,99 0073261B 74 10 je short ODT_-7.0073262D 0073261D 90 nop 0073261E 90 nop 0073261F 90 nop 00732620 90 nop 00732621 58 pop eax 00732622 FF95 20854100 call dword ptr ss:[ebp+418520] |
|
Ultra Protect脱壳+暗桩解除――股市风暴 V6.0
严格近按照脱文所述: 00720000 > 60 pushad 00720001 A1 3CB26200 mov eax,dword ptr ds:[62B23C] 00720006 A3 20757300 mov dword ptr ds:[<&KERNEL32.GetModuleHa> 0072000B A1 38B26200 mov eax,dword ptr ds:[62B238] 00720010 A3 1C757300 mov dword ptr ds:[<&KERNEL32.GetProcAddr> 00720015 E8 E1250100 call dumped-1.007325FB //运行到这里出错,跟进去! 0072001A E8 4B500100 call dumped-1.0073506A 0072001F C705 B4B76200 4BEE7200 mov dword ptr ds:[62B7B4],dumped-1.0072E> 00720029 - E9 26A6EFFF jmp dumped-1.0061A654 0072002E - 77 81 ja short dumped-1.0071FFB1 00720030 34 24 xor al,24 00720032 60 pushad 00720033 2C C7 sub al,0C7 00720035 00C3 add bl,al 00720037 68 4B402977 push 7729404B 0072003C 813424 486DC800 xor dword ptr ss:[esp],0C86D48 00720043 C3 retn 00720044 68 1E3C2B77 push 772B3C1E 00720049 813424 785FCA00 xor dword ptr ss:[esp],0CA5F78 00720050 C3 retn 00720051 68 E1EC3F77 push 773FECE1 00720056 813424 A8C9DE00 xor dword ptr ss:[esp],0DEC9A8 0072005D C3 retn 0072005E 68 04A04957 push 5749A004 00720063 813424 2888A820 xor dword ptr ss:[esp],20A88828 0072006A C3 retn 0072006B 68 904A646B push 6B644A90 007325FB E8 00DBFFFF call dumped-1.00730100 00732600 8D85 83FB4000 lea eax,dword ptr ss:[ebp+40FB83] 00732606 8BD8 mov ebx,eax 00732608 50 push eax 00732609 50 push eax 0073260A 8B85 20854100 mov eax,dword ptr ss:[ebp+418520] //这里: //ss:[00737520]=0022BCF8 //eax=0072EB83 (dumped-1.0072EB83), ASCII "KERNEL32.DLL" 00732610 0FB600 movzx eax,byte ptr ds:[eax] //这里一过就出错: //ds:[0022BCF8]=??? //eax=0022BCF8 00732613 83E8 33 sub eax,33 00732616 3D 99000000 cmp eax,99 0073261B 74 10 je short dumped-1.0073262D 0073261D 90 nop 0073261E 90 nop 0073261F 90 nop 00732620 90 nop 00732621 58 pop eax |
|
Ultra Protect脱壳+暗桩解除――股市风暴 V6.0
用ImportREC修复~~已经没有问题了~~就是启动的时候有个出错提示! 很奇怪的是,我用ImportREC修复后,不用: 六、OEP处修复代码 把OEP RVA改为00320000,最终修复代码如下 00720000 60 pushad //保留壳EP原来的第一个字节 00720001 A1 3CB26200 mov eax,dword ptr ds:[62B23C]; kernel32.GetModuleHandleA 00720006 A3 20757300 mov dword ptr ds:[737520],eax //[737520]->GetModuleHandleA 0072000B A1 38B26200 mov eax,dword ptr ds:[62B238]; kernel32.GetProcAddress 00720010 A3 1C757300 mov dword ptr ds:[73751C],eax //[73751C]->GetProcAddress 00720015 E8 E1250100 call 007325FB //重新获取壳中壳IAT 0072001A E8 4B500100 call 0073506A //重新初始化 0072001F C705 B4B76200 4>mov dword ptr ds:[62B7B4],72EE4B //EMbedded Protector地址填充[<&user32.MessageBoxA>]处 00720029 E9 26A6EFFF jmp 0061A654 //回到原来的OEP处执行 也能启动运行~~~~~~~~~~ |
|
Ultra Protect脱壳+暗桩解除――股市风暴 V6.0
六、OEP处修复代码 把OEP RVA改为00320000,最终修复代码如下 00720000 60 pushad //保留壳EP原来的第一个字节 00720001 A1 3CB26200 mov eax,dword ptr ds:[62B23C]; kernel32.GetModuleHandleA 00720006 A3 20757300 mov dword ptr ds:[737520],eax //[737520]->GetModuleHandleA 0072000B A1 38B26200 mov eax,dword ptr ds:[62B238]; kernel32.GetProcAddress 00720010 A3 1C757300 mov dword ptr ds:[73751C],eax //[73751C]->GetProcAddress 00720015 E8 E1250100 call 007325FB //重新获取壳中壳IAT 0072001A E8 4B500100 call 0073506A //重新初始化 0072001F C705 B4B76200 4>mov dword ptr ds:[62B7B4],72EE4B //EMbedded Protector地址填充[<&user32.MessageBoxA>]处 00720029 E9 26A6EFFF jmp 0061A654 //回到原来的OEP处执行 现在可以正常运行了,脱壳完成 最终修改之后,程序还是无法运行!!! 程序走到这里:00720015 E8 E1250100 call 007325FB 出错 Dump出来的文件除了修改这些,还需要修改其他的地方吗??? |
|
Ultra Protect脱壳+暗桩解除――股市风暴 V6.0
fly~~看了你的脱文,还是有很多地方不明白呀? 比如: 四、EMbedded Protector + 修复 目前脱壳后的程序还是无法运行的,程序使用了Ultra Protect的EMbedded Protector技术,需要修复 0059D650 53 push ebx 0059D651 8BD8 mov ebx,eax 0059D653 60 pushad 0059D654 6A 05 push 5 0059D656 6A 00 push 0 0059D658 6A 00 push 0 0059D65A 6A FF push -1 0059D65C E8 27ADE6FF call 00408388 ; <jmp.&user32.MessageBoxA> //这里的调用其实是EMbedded Protector接口 0059D661 61 popad 是怎么到0059D650 这里的呀?? 三、第2区段内存断点法,飞向光明之巅 Alt+M 打开内存查看窗口,在401000第二区段上设置内存访问断点,Shift+F9运行 0061A654 55 push ebp //直接中断在OEP ★ 运行LordPE完全Dump出这个进程 0061A655 8BEC mov ebp,esp 0061A657 83C4 F0 add esp,-10 0061A65A 53 push ebx 0061A65B B8 5C9D6100 mov eax,00619D5C 0061A660 E8 C3CEDEFF call 00407528 0061A665 8B1D 70096200 mov ebx,dword ptr ds:[620970] 0061A66B 8B03 mov eax,dword ptr ds:[ebx] 0061A66D E8 BA28E7FF call 0048CF2C 这时候用OD加载这个Dump出来的文件,F8走到这里: 0061A660 E8 C3CEDEFF call 00407528 //程序over了 |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值