本帖最后由 深山小妖怪 于 2010-9-14 17:22 编辑
申明本人菜鸟有什么不对的地方不要笑我.
-PEID查壳
未知壳
C++程序9.0本版
-区段
.textbss
.text
.data
.IDAta
.rsrc
-OD载入停在0063C2FA F> 68 07C36300 push FHZG.0063C307
0063C2FF 68 15C36300 push FHZG.0063C315
0063C304 C3 retn
0063C305 3C 32 cmp al,32
0063C307 E9 09000000 jmp FHZG.0063C315
0063C30C E5 AD in eax,0AD
0063C30E 1801 sbb byte ptr ds:[ecx],al
0063C310 ^ 74 80 je short FHZG.0063C292
-鼠标滚轮动一下入口点的变成0063C2F8 BF D16807C3 mov edi,C30768D1
0063C2FD 6300 arpl word ptr ds:[eax],ax
0063C2FF 68 15C36300 push FHZG.0063C315
0063C304 C3 retn
0063C305 3C 32 cmp al,32
0063C307 E9 09000000 jmp FHZG.0063C315
0063C30C E5 AD in eax,0AD
0063C30E 1801 sbb byte ptr ds:[ecx],al
0063C310 ^ 74 80 je short FHZG.0063C292
-我的解决方法
OD选项-调试设置(ALT+O)-SFX-
当主要模块是自释放文件时(这一项里面选择) (选这个)字节模式跟踪实际入口(速度非常慢)
然后保存,重新载入程序.
-重新载入以后,右键分析代码得到壳的真实入口00637000 53 push ebx ; SFX 代码实时入口点
00637001 55 push ebp
00637002 8BE8 mov ebp,eax
00637004 33DB xor ebx,ebx
00637006 EB 60 jmp short FHZG.00637068
00637008 0D 0A0D0A57 or eax,570A0D0A
0063700D 57 push edi
0063700E 50 push eax
0063700F 61 popad
00637010 636B 33 arpl word ptr ds:[ebx+33],bp
00637013 3220 xor ah,byte ptr ds:[eax]
00637015 64: prefix fs:
00637016 65:636F 6D arpl word ptr gs:[edi+6D],bp
0063701A 70 72 jo short FHZG.0063708E
0063701C 65:73 73 jnb short FHZG.00637092
0063701F 696F 6E 20726F75 imul ebp,dword ptr ds:[edi+6E],756F7220
00637026 74 69 je short FHZG.00637091
-我是怎么知道它是什么壳的了
在壳的入口处右键在转存中跟随
看窗口有这么一段00637000 57 57 50 61 Pa
00637010 63 6B 33 32 20 64 65 63 6F 6D 70 72 65 73 73 69 ck32 decompressi
00637020 6F 6E 20 72 6F 75 74 69 6E 65 20 76 65 72 73 69 on routine versi
00637030 6F 6E 20 31 2E 31 32 0D 0A 28 63 29 20 31 39 39 on 1.12..(c) 199
00637040 38 20 50 69 6F 74 72 20 57 61 72 65 7A 61 6B 20 8 Piotr Warezak
00637050 61 6E 64 20 52 61 66 61 6C 20 57 69 65 72 7A 62 and Rafal Wierzb
00637060 69 63 6B 69 0D 0A 0D 0A icki....
所以我知道是WWPACK32.
-发现这个壳我大笑一声这么简单的壳.
我还是不相信我找了一个对比
-这是看雪的一篇文章脱WWPACK32的0059D000 1> 53 push ebx
0059D001 55 push ebp
0059D002 8BE8 mov ebp,eax
0059D004 33DB xor ebx,ebx
0059D006 EB 60 jmp short 10925_xp.0059D068
0059D008 0D 0A0D0A57 or eax,570A0D0A
0059D00D 57 push edi
0059D00E 50 push eax
0059D00F 61 popad
.....................
.......................
0059D068 E8 00000000 call 10925_xp.0059D06D //F7跟进
0059D06D 58 pop eax
0059D06E 2D 6D000000 sub eax,6D
0059D073 50 push eax
0059D074 60 pushad
0059D075 33C9 xor ecx,ecx
0059D077 50 push eax
0059D078 58 pop eax
0059D079 50 push eax
..........................
基本一样
-我发现入口一样我就跟着他的方法做了下去(ESP方法已经用过无效果)
文章的0059D006 EB 60 jmp short 10925_xp.0059D068 跳到0059D068
我的00637006 EB 60 jmp short FHZG.00637068 跳到00637068
文章的那里是0059D068 E8 00000000 call 10925_xp.0059D06D //F7跟进
我的是00637068 5D pop ebp ; 0012FFF0
00637069 5B pop ebx
0063706A 90 nop
0063706B 60 pushad
0063706C EB 05 jmp short FHZG.00637073
0063706E E8 EB044000 call 00A3755E
00637073 ^ EB FA jmp short FHZG.0063706F
00637075 E8 0A000000 call FHZG.00637084
0063707A E8 EB0C0000 call FHZG.00637D6A
0063707F E8 F6FFFFFF call FHZG.0063707A
00637084 E8 F2FFFFFF call FHZG.0063707B
00637089 83C4 08 add esp,8
0063708C 74 04 je short FHZG.00637092
0063708E 75 02 jnz short FHZG.00637092
00637090 EB 02 jmp short FHZG.00637094
00637092 EB 01 jmp short FHZG.00637095
00637094 81E8 0A000000 sub eax,0A
0063709A E8 EB0C0000 call FHZG.00637D8A
0063709F E8 F6FFFFFF call FHZG.0063709A
-鼠标滚轮动一下变00637068 5D pop ebp ; 0012FFF0
00637069 5B pop ebx
0063706A 90 nop
0063706B 60 pushad
0063706C EB 05 jmp short FHZG.00637073
0063706E E8 EB044000 call 00A3755E
00637073 ^ EB FA jmp short FHZG.0063706F
00637075 E8 0A000000 call FHZG.00637084
0063707A E8 EB0C0000 call FHZG.00637D6A
0063707F E8 F6FFFFFF call FHZG.0063707A
00637084 E8 F2FFFFFF call FHZG.0063707B
00637089 83C4 08 add esp,8
0063708C 74 04 je short FHZG.00637092
0063708E 75 02 jnz short FHZG.00637092
00637090 EB 02 jmp short FHZG.00637094
00637092 EB 01 jmp short FHZG.00637095
00637094 81E8 0A000000 sub eax,0A
0063709A E8 EB0C0000 call FHZG.00637D8A
0063709F E8 F6FFFFFF call FHZG.0063709A
希望大牛解答.!~~~~~~ |