看了FLY老大的(Ultra Protect脱壳+暗桩解除――股市风暴 V6.0 Build 156)文章后,自己学习脱Ultra Protect壳.遇到问题,请老大帮忙看看.
下载地址:
39bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3I4&6P5r3S2Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6q4)9J5c8W2b7J5c8p5E0o6h3g2A6k6i4K6u0W2M7X3q4J5
软件大小: 307K
运行平台: Windows9X/ME/NT/2000/XP
更新日期: 2005-01-21
软件简介:
调试环境:WinXP、flyODBG、PEiD、LordPE
设置Ollydbg忽略所有的异常选项。用IsDebug插件去掉Ollydbg的调试器标志。
004B9000 > 60 pushad ; //进入Ollydbg后暂停在这
004B9001 E8 01000000 call T2DKCyzy.004B9007
004B9006 7A 83 jpe short T2DKCyzy.004B8F8B
004B9008 C40485 C2F987C1 les eax,fword ptr ds:[eax*4+C187F9C2]
004B900F 33D6 xor edx,esi
004B9011 4A dec edx
004B9012 E8 01000000 call T2DKCyzy.004B9018
下断:HE GetModuleHandleA
Shift+F9运行,中断后取消断点。Alt+F9返回
004CB9FA /EB 17 jmp short T2DKCyzy.004CBA13
004CB9FC |90 nop
004CB9FD |90 nop
004CB9FE |90 nop
004CB9FF |B8 E8030000 mov eax,3E8
004CBA04 |E8 97D2FFFF call T2DKCyzy.004C8CA0
004CBA09 |8DBD 49614000 lea edi,dword ptr ss:[ebp+406149]
004CBA0F |03F8 add edi,eax
004CBA11 |AB stos dword ptr es:[edi]
004CBA12 |58 pop eax
Ctrl+F在当前位置下搜索命令:rep stos byte ptr es:[edi]
找到在004CBC9A处,直接F4至004CBC9A
004CBC9A F3:AA rep stos byte ptr es:[edi]
//清除DLL、函数名 不让壳清除,NOP掉 ★
004CBC9C C3 retn
004CE6BC E8 0CD3FFFF call T2DKCyzy.004CB9CD 处理输入表
004CE6C1 E8 3EF9FFFF call T2DKCyzy.004CE004
//返回这里
继续下断:HE GetModuleHandleA
Shift+F9运行,中断后取消断点。Alt+F9返回
004CD848 8366 0C 00 and dword ptr ds:[esi+C],0
//清除输入表NAME,已经NOP掉
004CD84C 03C2 add eax,edx
004CD84E 8BD8 mov ebx,eax
004CD850 56 push esi
004CD851 57 push edi
004CD852 50 push eax
004CD853 8BF3 mov esi,ebx
004CD855 8BFB mov edi,ebx
004CD857 AC lods byte ptr ds:[esi]
004CD858 C0C0 03 rol al,3
004CD85B AA stos byte ptr es:[edi]
004CD85C 803F 00 cmp byte ptr ds:[edi],0
004CD85F ^ 75 F6 jnz short T2DKCyzy.004CD857
004CD861 58 pop eax
004CD862 5F pop edi
004CD863 5E pop esi
004CD864 50 push eax
004CD865 FF95 90E24100 call dword ptr ss:[ebp+41E290]
004CD86B 0BC0 or eax,eax
//返回到这里
程序返回到这里,此时输入表已经运行一次,清除了第一个Name指针,根据Fly老大的脱文,我把指针NAME修复了.
此时我的ESI = 004A2768 +上NOP掉那里的C = 004A276A 因为EBX = 004A3800 "KERNEL32.DLL" 所以004A276A =004A3800 -去基地址 =000A3800
004CD86D 75 43 jnz short T2DKCyzy.004CD8B2
004CD86F 90 nop
004CD870 90 nop
004CD871 90 nop
004CD872 90 nop
004CD873 53 push ebx
004CD874 FF95 94E24100 call dword ptr ss:[ebp+41E294]
004CD87A 0BC0 or eax,eax
004CD87C 75 34 jnz short T2DKCyzy.004CD8B2
004CD87E 90 nop
004CD87F 90 nop
004CD880 90 nop
004CD881 90 nop
004CD882 8B95 1FFC4000 mov edx,dword ptr ss:[ebp+40FC1F]
004CD888 0195 1D1F4000 add dword ptr ss:[ebp+401F1D],edx
004CD88E 0195 211F4000 add dword ptr ss:[ebp+401F21],edx
004CD894 6A 00 push 0
004CD896 FFB5 1D1F4000 push dword ptr ss:[ebp+401F1D]
004CD89C FFB5 211F4000 push dword ptr ss:[ebp+401F21]
004CD8A2 6A 00 push 0
004CD8A4 FF95 9CE24100 call dword ptr ss:[ebp+41E29C]
004CD8AA 6A 00 push 0
004CD8AC FF95 98E24100 call dword ptr ss:[ebp+41E298]
004CD8B2 60 pushad
004CD8B3 2BC0 sub eax,eax
004CD8B5 8803 mov byte ptr ds:[ebx],al
//用完之后清空DLL名 NOP掉
004CD8B7 43 inc ebx
004CD8B8 3803 cmp byte ptr ds:[ebx],al
004CD8BA ^ 75 F9 jnz short T2DKCyzy.004CD8B5
004CD8BC 61 popad
004CD8BD 8985 17FC4000 mov dword ptr ss:[ebp+40FC17],eax
004CD8C3 C785 1BFC4000 00000000 mov dword ptr ss:[ebp+40FC1B],0
004CD8CD 8B95 1FFC4000 mov edx,dword ptr ss:[ebp+40FC1F]
004CD8D3 8B06 mov eax,dword ptr ds:[esi]
004CD8D5 0BC0 or eax,eax
004CD8D7 75 07 jnz short T2DKCyzy.004CD8E0
004CD8D9 90 nop
004CD8DA 90 nop
004CD8DB 90 nop
004CD8DC 90 nop
004CD8DD 8B46 10 mov eax,dword ptr ds:[esi+10]
004CD8E0 03C2 add eax,edx
004CD8E2 0385 1BFC4000 add eax,dword ptr ss:[ebp+40FC1B]
004CD8E8 8B18 mov ebx,dword ptr ds:[eax]
004CD8EA 8B7E 10 mov edi,dword ptr ds:[esi+10]
004CD8ED 03FA add edi,edx
004CD8EF 03BD 1BFC4000 add edi,dword ptr ss:[ebp+40FC1B]
004CD8F5 85DB test ebx,ebx
004CD8F7 0F84 62010000 je T2DKCyzy.004CDA5F
004CD8FD F7C3 00000080 test ebx,80000000
004CD903 75 1D jnz short T2DKCyzy.004CD922
004CD905 90 nop
004CD906 90 nop
004CD907 90 nop
004CD908 90 nop
004CD909 03DA add ebx,edx
004CD90B 83C3 02 add ebx,2
004CD90E 56 push esi
004CD90F 57 push edi
004CD910 50 push eax
004CD911 8BF3 mov esi,ebx
004CD913 8BFB mov edi,ebx
004CD915 AC lods byte ptr ds:[esi]
004CD916 C0C0 03 rol al,3
004CD919 AA stos byte ptr es:[edi]
004CD91A 803F 00 cmp byte ptr ds:[edi],0
004CD91D ^ 75 F6 jnz short T2DKCyzy.004CD915
004CD91F 58 pop eax
004CD920 5F pop edi
004CD921 5E pop esi
004CD922 3B9D 1FFC4000 cmp ebx,dword ptr ss:[ebp+40FC1F]
004CD928 7C 11 jl short T2DKCyzy.004CD93B
004CD92A 90 nop
004CD92B 90 nop
004CD92C 90 nop
004CD92D 90 nop
004CD92E 83BD 02244000 00 cmp dword ptr ss:[ebp+402402],0
004CD935 75 0A jnz short T2DKCyzy.004CD941
004CD937 90 nop
004CD938 90 nop
004CD939 90 nop
004CD93A 90 nop
004CD93B 81E3 FFFFFF0F and ebx,0FFFFFFF
004CD941 53 push ebx
004CD942 FFB5 17FC4000 push dword ptr ss:[ebp+40FC17]
004CD948 FF95 8CE24100 call dword ptr ss:[ebp+41E28C]
004CD94E 3B9D 1FFC4000 cmp ebx,dword ptr ss:[ebp+40FC1F]
004CD954 7C 0F jl short T2DKCyzy.004CD965
004CD956 90 nop
004CD957 90 nop
004CD958 90 nop
004CD959 90 nop
004CD95A 60 pushad
004CD95B 2BC0 sub eax,eax
004CD95D 8803 mov byte ptr ds:[ebx],al
//用完之后清空函数名 NOP掉
004CD95F 43 inc ebx
004CD960 3803 cmp byte ptr ds:[ebx],al
004CD962 ^ 75 F9 jnz short T2DKCyzy.004CD95D
004CD964 61 popad
004CD965 0BC0 or eax,eax
004CD967 ^ 0F84 15FFFFFF je T2DKCyzy.004CD882
004CD96D 3B85 9CE24100 cmp eax,dword ptr ss:[ebp+41E29C]
004CD973 74 20 je short T2DKCyzy.004CD995
004CD975 90 nop
004CD976 90 nop
004CD977 90 nop
004CD978 90 nop
004CD979 3B85 9D014100 cmp eax,dword ptr ss:[ebp+41019D]
004CD97F 74 09 je short T2DKCyzy.004CD98A
004CD981 90 nop
004CD982 90 nop
004CD983 90 nop
004CD984 90 nop
004CD985 EB 14 jmp short T2DKCyzy.004CD99B
004CD987 90 nop
004CD988 90 nop
004CD989 90 nop
004CD98A 8D85 0A024100 lea eax,dword ptr ss:[ebp+41020A]
004CD990 EB 09 jmp short T2DKCyzy.004CD99B
004CD992 90 nop
004CD993 90 nop
004CD994 90 nop
004CD995 8D85 24024100 lea eax,dword ptr ss:[ebp+410224]
004CD99B 56 push esi
004CD99C FFB5 17FC4000 push dword ptr ss:[ebp+40FC17]
004CD9A2 5E pop esi
004CD9A3 39B5 FA234000 cmp dword ptr ss:[ebp+4023FA],esi
004CD9A9 74 15 je short T2DKCyzy.004CD9C0
004CD9AB 90 nop
004CD9AC 90 nop
004CD9AD 90 nop
004CD9AE 90 nop
004CD9AF 39B5 FE234000 cmp dword ptr ss:[ebp+4023FE],esi
004CD9B5 74 09 je short T2DKCyzy.004CD9C0
004CD9B7 90 nop
004CD9B8 90 nop
004CD9B9 90 nop
004CD9BA 90 nop
004CD9BB EB 63 jmp short T2DKCyzy.004CDA20
004CD9BD 90 nop
004CD9BE 90 nop
004CD9BF 90 nop
004CD9C0 80BD D2594100 00 cmp byte ptr ss:[ebp+4159D2],0
004CD9C7 74 57 je short T2DKCyzy.004CDA20
004CD9C9 90 nop
004CD9CA 90 nop
004CD9CB 90 nop
004CD9CC 90 nop
004CD9CD EB 07 jmp short T2DKCyzy.004CD9D6
004CD9CF 90 nop
004CD9D0 90 nop
004CD9D1 90 nop
004CD9D2 0100 add dword ptr ds:[eax],eax
004CD9D4 0000 add byte ptr ds:[eax],al
004CD9D6 8BB5 E4FC4000 mov esi,dword ptr ss:[ebp+40FCE4]
004CD9DC 83C6 0D add esi,0D
004CD9DF 81EE EA1B4000 sub esi,T2DKCyzy.00401BEA
004CD9E5 2BF5 sub esi,ebp
004CD9E7 83FE 00 cmp esi,0
004CD9EA 7F 34 jg short T2DKCyzy.004CDA20
004CD9EC 90 nop
004CD9ED 90 nop
004CD9EE 90 nop
004CD9EF 90 nop
004CD9F0 8BB5 E4FC4000 mov esi,dword ptr ss:[ebp+40FCE4]
004CD9F6 53 push ebx
004CD9F7 50 push eax
004CD9F8 E8 A3B2FFFF call T2DKCyzy.004C8CA0
004CD9FD 8BD8 mov ebx,eax
004CD9FF 58 pop eax
004CDA00 33C3 xor eax,ebx
004CDA02 C606 68 mov byte ptr ds:[esi],68
004CDA05 8946 01 mov dword ptr ds:[esi+1],eax
004CDA08 C746 05 81342400 mov dword ptr ds:[esi+5],243481
004CDA0F 895E 08 mov dword ptr ds:[esi+8],ebx
004CDA12 C646 0C C3 mov byte ptr ds:[esi+C],0C3
004CDA16 5B pop ebx
004CDA17 8BC6 mov eax,esi
004CDA19 8385 E4FC4000 0D add dword ptr ss:[ebp+40FCE4],0D
004CDA20 5E pop esi
004CDA21 60 pushad
004CDA22 8BD0 mov edx,eax
004CDA24 2BBD 1FFC4000 sub edi,dword ptr ss:[ebp+40FC1F]
004CDA2A 8BC7 mov eax,edi
004CDA2C B9 01010000 mov ecx,101
004CDA31 8DBD D3F04000 lea edi,dword ptr ss:[ebp+40F0D3]
004CDA37 F2:AF repne scas dword ptr es:[edi]
004CDA39 0BC9 or ecx,ecx
004CDA3B 74 13 je short T2DKCyzy.004CDA50
004CDA3D 90 nop
004CDA3E 90 nop
004CDA3F 90 nop
004CDA40 90 nop
004CDA41 81E9 01010000 sub ecx,101
004CDA47 F7D1 not ecx
004CDA49 89948D D3EC4000 mov dword ptr ss:[ebp+ecx*4+40ECD3],edx
004CDA50 61 popad
004CDA51 8907 mov dword ptr ds:[edi],eax
//API函数的系统地址(或者加密地址)填充到IAT中 NOP掉
004CDA53 8385 1BFC4000 04 add dword ptr ss:[ebp+40FC1B],4
004CDA5A ^ E9 6EFEFFFF jmp T2DKCyzy.004CD8CD
004CDA5F 83C6 14 add esi,14
004CDA62 8B95 1FFC4000 mov edx,dword ptr ss:[ebp+40FC1F]
004CDA68 ^ E9 D0FDFFFF jmp T2DKCyzy.004CD83D
004CDA6D 8DBD D3F04000 lea edi,dword ptr ss:[ebp+40F0D3]
//修改完后,直接F4到这里,Alt + M 设置内存访问断点在401000第二区段上设置内存访问断点,Shift+F9运行
0046968C 55 push ebp
//中断在程序OEP LOADPE完全Dump进程.修复OPE为0006968C ,输入表000A2768或000a3800
//处理输入表为004cb9cd
运行程序就出错,用PE标准扫描还有壳在里面,深度扫描为VC++6.0
我试用OD载入
0046968C >/$ 55 push ebp ; Structured exception handler
0046968D |. 8BEC mov ebp,esp
0046968F |. 83EC 08 sub esp,8
00469692 |. 53 push ebx
00469693 |. 56 push esi
00469694 |. 57 push edi
00469695 |. 55 push ebp
00469696 |. FC cld
00469697 |. 8B5D 0C mov ebx,dword ptr ss:[ebp+C]
0046969A |. 8B45 08 mov eax,dword ptr ss:[ebp+8]
0046969D |. F740 04 06000000 test dword ptr ds:[eax+4],6
004696A4 0F85 82000000 jnz (2load)d.0046972C //程序在这里跳走
004696AA |. 8945 F8 mov dword ptr ss:[ebp-8],eax
004696AD |. 8B45 10 mov eax,dword ptr ss:[ebp+10]
0046972C |> \55 push ebp
//来到这里
0046972D |. 8D6B 10 lea ebp,dword ptr ds:[ebx+10]
00469730 |. 6A FF push -1
00469732 |. 53 push ebx
00469733 |. E8 9692FFFF call (2load)d.004629CE //运行这里出错,追进!!
00469738 |. 83C4 08 add esp,8
//来到这里
004629CE /$ 53 push ebx
004629CF |. 56 push esi
004629D0 |. 57 push edi
004629D1 |. 8B4424 10 mov eax,dword ptr ss:[esp+10]
004629D5 |. 50 push eax
004629D6 |. 6A FE push -2
004629D8 |. 68 AC294600 push (2load)d.004629AC ; SE handler installation
004629DD |. 64:FF35 00000000 push dword ptr fs:[0]
004629E4 |. 64:8925 00000000 mov dword ptr fs:[0],esp
004629EB |> 8B4424 20 /mov eax,dword ptr ss:[esp+20]
004629EF |. 8B58 08 |mov ebx,dword ptr ds:[eax+8] //在这里出错程序终止!!!!1
004629F2 |. 8B70 0C |mov esi,dword ptr ds:[eax+C]
不知出错在什么地方,请fly等大大们指正
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课