• 标 题:AVI MPEG RM WMV Joiner4.61脱壳去暗桩+完美爆破
  • 作 者:David
  • 时 间:2004年2月24日 05:26
  • 链 接:http://bbs.pediy.com

【脱文标题】 AVI MPEG RM WMV Joiner4.61脱壳去暗桩+完美爆破    

【脱文作者】 weiyi75[Dfcg] 
  
【作者邮箱】 weiyi75@sohu.com 
  
【作者主页】 Dfcg官方大本营 
  
【使用工具】 Ollydbg1.10b,ImportREC1.42,Loadpe 
  
【破解平台】 Win2000/XP 
  
【软件名称】 AVI/MPEG/RM Joiner4.61 
  
【下载地址】 天空软件站 
  
【软件简介】   AVI/MPEG/RM Joiner 将琐碎影片按顺序作结合整理,这个软件可以帮助你把零散的影片文 
件组合成为一个大的影片文件,这个程序支持 AVI, MPEG, MPEG-4,DivX 以及 RM 格式影片,它可以将不 
同格式的影片组合。你可以任意组合或者排列这些片段。 
  
【软件大小】 2.60M 
  
【加壳方式】 ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov 
  
【保护方式】 没有使用Asprotcet的Rsa算法保护,采用自行研究的加密算法,启动时校验注册码,10天试 
用期限制,SDK防脱壳暗桩。 
  
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享: 
  
  
-------------------------------------------------------------------------------- 
  
  
【破解内容】 

第一部分,脱去Asprotect1.23外壳保护,补上Stolen Code,修复IAT。

首先Peid查壳,为ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov。通过二哥=weiyi75=David作品Asprotect1.23rc4之Dephi语言篇经验,脱壳修复这个软件易如反掌。 

复习一下,寄存器EBP=0012FFF0   //这是未加壳程序停在入口点EBP的值,其它Dephi语言或编程语言这里的EBP值全部相同,这又说明什么,当Asprotect运行到这里或Stolen Code做手脚时EBP的值就为EBP=0012FFF0,我们来具体试试。 

Ollydbg载入程序,隐藏OD,OD异常设置忽略除内存异常外的全部异常。 
  
00401000 >  68 01504D00     push EZMerge.004D5001    //加壳程序入口点,F9运行 
00401005    E8 01000000     call EZMerge.0040100B 
0040100A    C3              retn 
0040100B    C3              retn 
0040100C    857B 05         test dword ptr ds:[ebx+5], edi 
0040100F    C5CD            lds ecxebp                             ; 非法使用寄存器 
00401011    12C1            adc alcl 
00401013    83F6 6F         xor esi, 6F 
00401016    32F6            xor dhdh 
00401018    14 9B           adc al, 9B 
0040101A    2BD9            sub ebxecx 
0040101C    F9              stc 
0040101D    55              push ebp 
0040101E    A9 3D9D9172     test eax, 72919D3D 
00401023    A1 58AFD341     mov eaxdword ptr ds:[41D3AF58] 
00401028    697D 7C 26EBD4F>imul edidword ptr ss:[ebp+7C], F6D4EB2> 
0040102F    C49A 3A5F1069   les ebx, fword ptr ds:[edx+69105F3A] 
00401035    6B9D 0EEB5430 3>imul ebxdword ptr ss:[ebp+3054EB0E], 3> 
0040103C    9B              wait 
0040103D    B6 D2           mov dh, 0D2 
0040103F    E1 11           loopde short EZMerge.00401052 
................................................................ 

内存异常 

00B441A4    3100            xor dword ptr ds:[eax], eax 
00B441A6    EB 01           jmp short 00B441A9 
00B441A8    68 648F0500     push 58F64 
00B441AD    0000            add byte ptr ds:[eax], al 
00B441AF    00EB            add blch 
00B441B1    02E8            add chal 
00B441B3    0158 68         add dword ptr ds:[eax+68], ebx 
00B441B6    6C              ins byte ptr es:[edi], dx 
00B441B7    AF              scas dword ptr es:[edi
00B441B8    B3 00           mov bl, 0 
00B441BA    68 1442B400     push 0B44214 
00B441BF    68 8836B400     push 0B43688 
00B441C4    68 5033B400     push 0B43350 
00B441C9    68 002DB400     push 0B42D00 
00B441CE    68 BC26B400     push 0B426BC 
00B441D3    68 4C3AB400     push 0B43A4C 
00B441D8    C3              retn 
................................................................ 

Shift+F9 26 到达最后一次异常。 

00B439EC    3100            xor dword ptr ds:[eax], eax  //特征码 
00B439EE    64:8F05 0000000>pop dword ptr fs:[0] 
00B439F5    58              pop eax 
00B439F6    833D B07EB400 0>cmp dword ptr ds:[B47EB0], 0 
00B439FD    74 14           je short 00B43A13 
00B439FF    6A 0C           push 0C 
00B43A01    B9 B07EB400     mov ecx, 0B47EB0 
00B43A06    8D45 F8         lea eaxdword ptr ss:[ebp-8] 
00B43A09    BA 04000000     mov edx, 4 
00B43A0E    E8 2DD1FFFF     call 00B40B40 
00B43A13    FF75 FC         push dword ptr ss:[ebp-4] 
00B43A16    FF75 F8         push dword ptr ss:[ebp-8] 
00B43A19    8B45 F4         mov eaxdword ptr ss:[ebp-C] 
00B43A1C    8338 00         cmp dword ptr ds:[eax], 0 
00B43A1F    74 02           je short 00B43A23 
00B43A21    FF30            push dword ptr ds:[eax
00B43A23    FF75 F0         push dword ptr ss:[ebp-10] 
00B43A26    FF75 EC         push dword ptr ss:[ebp-14] 
00B43A29    C3              retn   //这里下断点,Shift+F9到这里后取消断点。 
................................................................ 

我这次没有用内存镜像断点到OEP,下面的这个方法可以发现Stolen Code(如果有)+Oep二合一。 

仍然是命令行断点 

tc ebp==12fff0       //当前EBP内容为12fff0就被中断,略微看看就可以找到Stolen Code(如果有)或Oep 

00B573C1   /2E:EB 02        jmp short 00B573C6  //一会就来到这里,呵呵,C语言就开始有Stolen Code,往下全部用F7步过,转标签1           
00B573C4    CD20 64EB0169   vxdcall 6901EB64 
00B573CA    83EC 06         sub esp, 6 
00B573CD    64:EB 02        jmp short 00B573D2 
00B573D0    CD20 8D64243F   vxdcall 3F24648D 
00B573D6    8D6424 C3       lea espdword ptr ss:[esp-3D] 
00B573DA    F2:             prefix repne
00B573DB    EB 01           jmp short 00B573DE 
00B573DD    0F57EB          xorps xmm5, xmm3 
00B573E0    01F0            add eaxesi 
00B573E2    8F4424 00       pop dword ptr ss:[esp
00B573E6    F2:             prefix repne
00B573E7    EB 01           jmp short 00B573EA 
00B573E9    F2:             prefix repne
00B573EA    EB 02           jmp short 00B573EE 
................................................................ 

转标签1  

00B573C6   /64:EB 01        jmp short 00B573CA 

00B573CA    83EC 06         sub esp, 6 
00B573CD    64:EB 02        jmp short 00B573D2 

00B573D2    8D6424 3F       lea espdword ptr ss:[esp+3F] 
00B573D6    8D6424 C3       lea espdword ptr ss:[esp-3D] 
00B573DA    F2:             prefix repne

00B573DE    57              push edi                                 ; ntdll.77F517E6 
00B573DF    EB 01           jmp short 00B573E2 

00B573E2    8F4424 00       pop dword ptr ss:[esp]                   ; ntdll.77F517E6 
00B573E6    F2:             prefix repne

00B573EA   /EB 02           jmp short 00B573EE 

00B573EE    8D3C95 F9047DC6 lea edidword ptr ds:[edx*4+C67D04F9] 
00B573F5    EB 01           jmp short 00B573F8 

00B573F8    1BF9            sbb ediecx 
00B573FA    36:EB 01        jmp short 00B573FE 

00B573FE    03FE            add ediesi                             ; ntdll.77F51778 
00B57400    3E:EB 01        jmp short 00B57404 

00B57404    68 0674B500     push 0B57406 
00B57409    5F              pop edi 
00B5740A    FF57 0E         call dword ptr ds:[edi+E] 

00B5741F    5F              pop edi                                  ; 00B5740D 
00B57420    36:EB 01        jmp short 00B57424 

00B57424    83E7 87         and edi, FFFFFF87 
00B57427    F2:             prefix repne

00B5742B    2BFF            sub ediedi 
00B5742D    5F              pop edi 
00B5742E    EB 02           jmp short 00B57432 

00B57432    55              push ebp           //Stolen Code第一句 
00B57433    8BEC            mov ebpesp      //执行完它后,EBP=ESP=12FFC0,打破了从跟踪到这里EBP的值一直为12fff0的情况,同时也让我们也可以知道入口代码就在附近。Stolen Code第二句。 
00B57435    6A FF           push -1         //Stolen Code第三句 
00B57437    68 F0224800     push 4822F0    //Stolen Code第四句 
00B5743C    68 00E04400     push 44E000   //Stolen Code第五句 
00B57441    64:A1 00000000  mov eaxdword ptr fs:[0]    //Stolen Code第六句 
00B57447    EB 02           jmp short 00B5744B 

00B5744B    50              push eax       //Stolen Code第七句 
00B5744C    64:8925 0000000>mov dword ptr fs:[0], esp  //Stolen Code第八句 
00B57453    83EC 58         sub esp, 58       //Stolen Code第九句 
00B57456    EB 02           jmp short 00B5745A 

00B5745A    53              push ebx    //Stolen Code第十句 
00B5745B    EB 02           jmp short 00B5745F 

00B5745F    56              push esi         //Stolen Code第十一句                        ;  
00B57460    EB 02           jmp short 00B57464 

00B57464    57              push edi       //Stolen Code第十二句 
00B57465    8965 E8         mov dword ptr ss:[ebp-18], esp    //Stolen Code第十三句 
00B57468    2E:EB 02        jmp short 00B5746D 

00B5746D   /64:EB 02        jmp short 00B57472 

00B57472    68 C4DD4400     push 44DDC4 
00B57477    68 1F73B500     push 0B5731F 
00B5747C    C3              retn 

00B5731F   /EB 01           jmp short 00B57322 

00B57322    51              push ecx 
00B57323    57              push edi 
00B57324    9C              pushfd 
00B57325    FC              cld 
00B57326    BF 6373B500     mov edi, 0B57363 
00B5732B    B9 5E140000     mov ecx, 145E 
00B57330    F3:AA           rep stos byte ptr es:[edi]  //F7可以看着它循环执行Stolen Code 
00B57332    9D              popfd 
00B57333    5F              pop edi 
00B57334    59              pop ecx 
00B57335    C3              retn 
....................................................................... 

0044DDC4    FF15 80324700   call dword ptr ds:[473280]  //伪Oep 
0044DDCA    33D2            xor edxedx 
0044DDCC    8AD4            mov dlah 
0044DDCE    8915 D01D4A00   mov dword ptr ds:[4A1DD0], edx 
0044DDD4    8BC8            mov ecxeax 
0044DDD6    81E1 FF000000   and ecx, 0FF 
0044DDDC    890D CC1D4A00   mov dword ptr ds:[4A1DCC], ecx 
0044DDE2    C1E1 08         shl ecx, 8 
0044DDE5    03CA            add ecxedx 
0044DDE7    890D C81D4A00   mov dword ptr ds:[4A1DC8], ecx 
0044DDED    C1E8 10         shr eax, 10 
0044DDF0    A3 C41D4A00     mov dword ptr ds:[4A1DC4], eax 
0044DDF5    6A 01           push 1 
0044DDF7    E8 EA360000     call EZMerge.004514E6 

整理一下Stolen Code 

....................................................... 
push ebp                        //Stolen Code 

mov ebpesp       

push -1         
  
push 4822F0     

push 44E000                        一共13句代码 

mov eaxdword ptr fs:[0]  

push eax 

mov dword ptr fs:[0], esp 

sub esp, 58 

push ebx 

push esi                          

push edi            
                  
mov dword ptr ss:[ebp-18], esp   //Stolen Code 
....................................................... 



0044DD9E    0000            add byte ptr ds:[eax], al  真OEP 
0044DDA0    0000            add byte ptr ds:[eax], al 
0044DDA2    0000            add byte ptr ds:[eax], al 
0044DDA4    0000            add byte ptr ds:[eax], al 
0044DDA6    0000            add byte ptr ds:[eax], al 
0044DDA8    0000            add byte ptr ds:[eax], al 
0044DDAA    0000            add byte ptr ds:[eax], al 
0044DDAC    0000            add byte ptr ds:[eax], al 
0044DDAE    0000            add byte ptr ds:[eax], al 
0044DDB0    0000            add byte ptr ds:[eax], al 
0044DDB2    0000            add byte ptr ds:[eax], al 
0044DDB4    0000            add byte ptr ds:[eax], al 
0044DDB6    0000            add byte ptr ds:[eax], al 
0044DDB8    0000            add byte ptr ds:[eax], al 
0044DDBA    0000            add byte ptr ds:[eax], al 
0044DDBC    0000            add byte ptr ds:[eax], al 
0044DDBE    0000            add byte ptr ds:[eax], al 
0044DDC0    0000            add byte ptr ds:[eax], al 
0044DDC2    0000            add byte ptr ds:[eax], al 
0044DDC4    FF15 80324700   call dword ptr ds:[473280]  伪OEP,滚动条往上面看。 
0044DDCA    33D2            xor edxedx 
0044DDCC    8AD4            mov dlah 
0044DDCE    8915 D01D4A00   mov dword ptr ds:[4A1DD0], edx 
0044DDD4    8BC8            mov ecxeax 
0044DDD6    81E1 FF000000   and ecx, 0FF 
0044DDDC    890D CC1D4A00   mov dword ptr ds:[4A1DCC], ecx 
0044DDE2    C1E1 08         shl ecx, 8 
0044DDE5    03CA            add ecxedx 
0044DDE7    890D C81D4A00   mov dword ptr ds:[4A1DC8], ecx 
0044DDED    C1E8 10         shr eax, 10 
0044DDF0    A3 C41D4A00     mov dword ptr ds:[4A1DC4], eax 
0044DDF5    6A 01           push 1 
0044DDF7    E8 EA360000     call EZMerge.004514E6 
........................................................... 

0044DD9E >/$  0000          add byte ptr ds:[eax], al    //直接补上整理的Stolen Code 
0044DDA0  |.  0000          add byte ptr ds:[eax], al 
0044DDA2  |.  0000          add byte ptr ds:[eax], al 
0044DDA4  |.  0000          add byte ptr ds:[eax], al 
0044DDA6  |.  0000          add byte ptr ds:[eax], al 
0044DDA8  |.  0000          add byte ptr ds:[eax], al 
0044DDAA  |.  0000          add byte ptr ds:[eax], al 
0044DDAC  |.  0000          add byte ptr ds:[eax], al 
0044DDAE  |.  0000          add byte ptr ds:[eax], al 
0044DDB0  |.  0000          add byte ptr ds:[eax], al 
0044DDB2  |.  0000          add byte ptr ds:[eax], al 
0044DDB4  |.  0000          add byte ptr ds:[eax], al 
0044DDB6  |.  0000          add byte ptr ds:[eax], al 
0044DDB8  |.  0000          add byte ptr ds:[eax], al 
0044DDBA  |.  0000          add byte ptr ds:[eax], al 
0044DDBC  |.  0000          add byte ptr ds:[eax], al 
0044DDBE  |.  0000          add byte ptr ds:[eax], al 
0044DDC0  |.  0000          add byte ptr ds:[eax], al 
0044DDC2  |.  0000          add byte ptr ds:[eax], al 
0044DDC4  |.  FF15 80324700 call dword ptr ds:[<&kernel32.GetCurrent>; [GetCurrentProcess 
0044DDCA  |.  33D2          xor edxedx 
0044DDCC  |.  8AD4          mov dlah 
0044DDCE  |.  8915 D01D4A00 mov dword ptr ds:[4A1DD0], edx 
0044DDD4  |.  8BC8          mov ecxeax 
0044DDD6  |.  81E1 FF000000 and ecx, 0FF 
0044DDDC  |.  890D CC1D4A00 mov dword ptr ds:[4A1DCC], ecx 
0044DDE2  |.  C1E1 08       shl ecx, 8 
0044DDE5  |.  03CA          add ecxedx 
0044DDE7  |.  890D C81D4A00 mov dword ptr ds:[4A1DC8], ecx 
0044DDED  |.  C1E8 10       shr eax, 10 
0044DDF0  |.  A3 C41D4A00   mov dword ptr ds:[4A1DC4], eax 
0044DDF5  |.  6A 01         push 1 
0044DDF7  |.  E8 EA360000   call dumped_.004514E6 
........................................................... 

0044DD9E >/$  55            push ebp      //补好后复制代码到文件中,直接用Loadpe脱壳。 
0044DD9F  |.  8BEC          mov ebpesp 
0044DDA1  |.  6A FF         push -1 
0044DDA3  |.  68 F0224800   push dumped.004822F0 
0044DDA8  |.  68 00E04400   push dumped.0044E000                     ;  SE handler installation 
0044DDAD  |.  64:A1 0000000>mov eaxdword ptr fs:[0] 
0044DDB3  |.  50            push eax 
0044DDB4  |.  64:8925 00000>mov dword ptr fs:[0], esp 
0044DDBB  |.  83EC 58       sub esp, 58 
0044DDBE  |.  53            push ebx 
0044DDBF  |.  56            push esi 
0044DDC0  |.  57            push edi 
0044DDC1  |.  8965 E8       mov dword ptr ss:[ebp-18], esp 
0044DDC4  |.  FF15 80324700 call dword ptr ds:[<&kernel32.GetCurrent>; [GetCurrentProcess 
0044DDCA  |.  33D2          xor edxedx 
0044DDCC  |.  8AD4          mov dlah 
0044DDCE  |.  8915 D01D4A00 mov dword ptr ds:[4A1DD0], edx 
0044DDD4  |.  8BC8          mov ecxeax 
0044DDD6  |.  81E1 FF000000 and ecx, 0FF 
0044DDDC  |.  890D CC1D4A00 mov dword ptr ds:[4A1DCC], ecx 
0044DDE2  |.  C1E1 08       shl ecx, 8 
0044DDE5  |.  03CA          add ecxedx 
0044DDE7  |.  890D C81D4A00 mov dword ptr ds:[4A1DC8], ecx 
0044DDED  |.  C1E8 10       shr eax, 10 
0044DDF0  |.  A3 C41D4A00   mov dword ptr ds:[4A1DC4], eax 
0044DDF5  |.  6A 01         push 1 
0044DDF7  |.  E8 EA360000   call dumped.004514E6 
........................................................... 

IAT修复 

运行ImportREC,OEP填入4DD9E,自动搜索,获得输入信息,先用跟踪等级1修复,然后用Asprotect1.3插件修复剩下的几个指针,修复先脱壳的Dumped.exe。 

第二部分,去除暗桩

OD载入修复的文件,F9运行。 

00B41C08    0002            add byte ptr ds:[edx], al  //提示内存写错误。 
00B41C0A    0000            add byte ptr ds:[eax], al 
00B41C0C    0001            add byte ptr ds:[ecx], al 
00B41C0E    0000            add byte ptr ds:[eax], al 
00B41C10    0002            add byte ptr ds:[edx], al 
00B41C12    0000            add byte ptr ds:[eax], al 
00B41C14    0005 00000003   add byte ptr ds:[3000000], al 
00B41C1A    0000            add byte ptr ds:[eax], al 
00B41C1C    0001            add byte ptr ds:[ecx], al 
00B41C1E    0000            add byte ptr ds:[eax], al 
00B41C20    0003            add byte ptr ds:[ebx], al 
00B41C22    0000            add byte ptr ds:[eax], al 
00B41C24    000400          add byte ptr ds:[eax+eax], al 
00B41C27    0000            add byte ptr ds:[eax], al 
00B41C29    04 00           add al, 0 
........................................................... 

堆栈友好提示 

0012A78C   0040AF15  返回到 dumped.0040AF15 来自 00B41C08  //错误来自0040AF15 
0012A790   00473E88  dumped.00473E88 
0012A794   00000004 
0012A798   FFFFFFFF 
0012A79C   00498F98  dumped.00498F98 
0012A7A0   0012FFC0 
0012A7A4   FFFFFFFF 
0012A7A8   00B03830  ASCII "E:Program FilesAVI MPEG RM WMV Joiner\" 

那么Ctrl+G 去0040AF15 看看。 

0040AEFD   /72 19           jb short dumped.0040AF18 
0040AEFF   |C786 50510000 8>mov dword ptr ds:[esi+5150], 38D 
0040AF09   |89AE 54510000   mov dword ptr ds:[esi+5154], ebp 
0040AF0F   |FF15 E0D44800   call dword ptr ds:[48D4E0]   //ds:[48D4E0]指向壳中,跟踪原程序发现其作用是调用解压程序。 
0040AF15   |FF15 D8D44800   call dword ptr ds:[48D4D8]  //这里出错,这个Call是加密刚才解压的程序继续执行,脱壳后要NOP掉。 
0040AF1B    E9 21000000     jmp dumped.0040AF41 
  
看ds:[48D4D8]里面的内容是00B41BA4,ds:[48D4E0]里面的内容是00B41C08。两个地方都是指向壳中,SDK! 

Od载入原程序

跟进 0040AF0F   |FF15 E0D44800   call dword ptr ds:[48D4E0]  

00B41C08    55              push ebp  //跟进,晕,好多代码啊,壳是不可能搬回的,它进壳中的过程我们没必有知道,但它从壳中取出代码动态修改程序领空代码我们脱壳后是需要的。 
00B41C09    8BEC            mov ebpesp 
00B41C0B    53              push ebx 
00B41C0C    56              push esi 
00B41C0D    8B5D 0C         mov ebxdword ptr ss:[ebp+C] 
00B41C10    8B75 08         mov esidword ptr ss:[ebp+8] 
00B41C13    8BC3            mov eaxebx 
00B41C15    E8 F208FFFF     call 00B3250C 
00B41C1A    A3 A463B400     mov dword ptr ds:[B463A4], eax 
00B41C1F    8B15 A463B400   mov edxdword ptr ds:[B463A4] 
00B41C25    8BC6            mov eaxesi 
00B41C27    8BCB            mov ecxebx 
00B41C29    E8 EA09FFFF     call 00B32618 
00B41C2E    891D 347EB400   mov dword ptr ds:[B47E34], ebx 
00B41C34    53              push ebx 
00B41C35    8BCE            mov ecxesi 
00B41C37    8B15 307EB400   mov edxdword ptr ds:[B47E30] 
00B41C3D    A1 2C7EB400     mov eaxdword ptr ds:[B47E2C] 
00B41C42    E8 F9EEFFFF     call 00B40B40 
00B41C47    833D E47AB400 0>cmp dword ptr ds:[B47AE4], 0 
00B41C4E    75 05           jnz short 00B41C55 
省去好多代码,最后 
00B41C58    C2 0800         retn 8 
......................................................... 

0040AF0F    FF15 E0D44800   CALL DWORD PTR DS:[48D4E0]   //通过00B41C58    C2 0800         retn 8返回到0040AF15,这里知道了随便给它一个retn 8就可以过关。
0040AF15    FF15 D8D44800   CALL DWORD PTR DS:[48D4D8]  //到这里,下面和我们脱壳后看到的一样,让我们F7跟进看它作了些什么。
0040AF1B    E9 21000000     JMP EZMerge.0040AF41
0040AF20    9E              SAHF
0040AF21    96              XCHG EAX,ESI
0040AF22    0D 59F32354     OR EAX,5423F359
0040AF27  ^ 71 91           JNO SHORT EZMerge.0040AEBA
0040AF29    EE              OUT DX,AL                                ; I/O 命令
0040AF2A    51              PUSH ECX
0040AF2B    96              XCHG EAX,ESI
0040AF2C    59              POP ECX
0040AF2D    05 4E6A89D6     ADD EAX,D6896A4E
0040AF32    3F              AAS
0040AF33    B3 0F           MOV BL,0F
0040AF35    6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
0040AF36    94              XCHG EAX,ESP
0040AF37    50              PUSH EAX
0040AF38  - 7E FE           JLE SHORT EZMerge.0040AF38
0040AF3A    C15A 71 C3      RCR DWORD PTR DS:[EDX+71],0C3            ; 移动常数超出 1..31 的范围
0040AF3E    8F              ???                                      ; 未知命令
0040AF3F    E8 B1FF15DC     CALL DC56AEF5
.........................................................................

跟进 0040AF15   |FF15 D8D44800   call dword ptr ds:[48D4D8]

01271BA4    833D A4632701 0>CMP DWORD PTR DS:[12763A4],0
01271BAB    75 0D           JNZ SHORT 01271BBA
01271BAD    A1 407D2701     MOV EAX,DWORD PTR DS:[1277D40]
01271BB2    8B15 447D2701   MOV EDX,DWORD PTR DS:[1277D44]
01271BB8    EB 0B           JMP SHORT 01271BC5
01271BBA    A1 A4632701     MOV EAX,DWORD PTR DS:[12763A4]
01271BBF    8B15 347E2701   MOV EDX,DWORD PTR DS:[1277E34]
01271BC5    85C0            TEST EAX,EAX
01271BC7    74 0B           JE SHORT 01271BD4
01271BC9    85D2            TEST EDX,EDX
01271BCB    74 07           JE SHORT 01271BD4
01271BCD    52              PUSH EDX
01271BCE    50              PUSH EAX
01271BCF    E8 60FDFFFF     CALL 01271934
01271BD4    C3              RETN  //返回程序领空。

0040AF1B   /E9 01000000     JMP EZMerge.0040AF21  //我的天,这个程序是动态解码用的。
0040AF20   |A6              CMPS BYTE PTR DS:[ESI],BYTE PTR ES:[EDI]
0040AF21   8B3D 94DD4800   MOV EDI,DWORD PTR DS:[48DD94]
0040AF27    33D2            XOR EDX,EDX
0040AF29    3BFD            CMP EDI,EBP
0040AF2B    0F9FC2          SETG DL
0040AF2E    4A              DEC EDX
0040AF2F    81E2 03027219   AND EDX,19720203
0040AF35    8996 48510000   MOV DWORD PTR DS:[ESI+5148],EDX
0040AF3B    EB 04           JMP SHORT EZMerge.0040AF41
0040AF3D    855450 AD       TEST DWORD PTR DS:[EAX+EDX*2-53],EDX
0040AF41    FF15 DCD44800   CALL DWORD PTR DS:[48D4DC]
0040AF47    8B8C24 1C010000 MOV ECX,DWORD PTR SS:[ESP+11C]
0040AF4E    89AE 18510000   MOV DWORD PTR DS:[ESI+5118],EBP
0040AF54    89AE 1C510000   MOV DWORD PTR DS:[ESI+511C],EBP
0040AF5A    89AE 20510000   MOV DWORD PTR DS:[ESI+5120],EBP
0040AF60    89AE 24510000   MOV DWORD PTR DS:[ESI+5124],EBP
0040AF66    89AE 28510000   MOV DWORD PTR DS:[ESI+5128],EBP
0040AF6C    8BC6            MOV EAX,ESI
0040AF6E    5F              POP EDI
0040AF6F    5E              POP ESI
0040AF70    5D              POP EBP
0040AF71    5B              POP EBX
0040AF72    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040AF79    81C4 18010000   ADD ESP,118
0040AF7F    C2 0400         RETN 4  //到这里结束。
..........................................................

原先地址内容,未执行Call之前。

0040AF1B   /E9 21000000     JMP EZMerge.0040AF41
0040AF20   |9E              SAHF
0040AF21   |96              XCHG EAX,ESI
0040AF22   |0D 59F32354     OR EAX,5423F359
0040AF27  ^|71 91           JNO SHORT EZMerge.0040AEBA
0040AF29   |EE              OUT DX,AL                                ; I/O 命令
0040AF2A   |51              PUSH ECX
0040AF2B   |96              XCHG EAX,ESI
0040AF2C   |59              POP ECX
0040AF2D   |05 4E6A89D6     ADD EAX,D6896A4E
0040AF32   |3F              AAS
0040AF33   |B3 0F           MOV BL,0F
0040AF35   |6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
0040AF36   |94              XCHG EAX,ESP
0040AF37   |50              PUSH EAX
0040AF38  -|7E FE           JLE SHORT EZMerge.0040AF38
0040AF3A   |C15A 71 C3      RCR DWORD PTR DS:[EDX+71],0C3            ; 移动常数超出 1..31 的范围
0040AF3E   |8F              ???                                      ; 未知命令
0040AF3F   |E8 B1FF15DC     CALL DC56AEF5
0040AF44    D4 48           AAM 48
0040AF46    008B 8C241C01   ADD BYTE PTR DS:[EBX+11C248C],CL
0040AF4C    0000            ADD BYTE PTR DS:[EAX],AL
0040AF4E    89AE 18510000   MOV DWORD PTR DS:[ESI+5118],EBP
0040AF54    89AE 1C510000   MOV DWORD PTR DS:[ESI+511C],EBP
0040AF5A    89AE 20510000   MOV DWORD PTR DS:[ESI+5120],EBP
0040AF60    89AE 24510000   MOV DWORD PTR DS:[ESI+5124],EBP
0040AF66    89AE 28510000   MOV DWORD PTR DS:[ESI+5128],EBP
0040AF6C    8BC6            MOV EAX,ESI
0040AF6E    5F              POP EDI
0040AF6F    5E              POP ESI
0040AF70    5D              POP EBP
0040AF71    5B              POP EBX
0040AF72    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040AF79    81C4 18010000   ADD ESP,118
0040AF7F    C2 0400         RETN 4
....................................................................

看到这些,你说说我们脱壳的程序能正常运行吗?

为了验证下面两个语句作用。

0040AF0F   |FF15 E0D44800   call dword ptr ds:[48D4E0]  //不用说,是从壳中解压需要的数据。
0040AF15   |FF15 D8D44800   call dword ptr ds:[48D4D8]  F2在这里下断点,F9运行。 

0040AF1B   /E9 21000000     JMP EZMerge.0040AF41  //呵呵,程序又变成这种样子,所以0040AF15处的Call是加密0040AF0F解压出来的数据,反脱壳用的,我们脱壳时已经执行了这句,中了招。
0040AF20   |9E              SAHF
0040AF21   |96              XCHG EAX,ESI
0040AF22   |0D 59F32354     OR EAX,5423F359
0040AF27  ^|71 91           JNO SHORT EZMerge.0040AEBA
0040AF29   |EE              OUT DX,AL                                ; I/O 命令
0040AF2A   |51              PUSH ECX
0040AF2B   |96              XCHG EAX,ESI
0040AF2C   |59              POP ECX
0040AF2D   |05 4E6A89D6     ADD EAX,D6896A4E
0040AF32   |3F              AAS
0040AF33   |B3 0F           MOV BL,0F
0040AF35   |6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
0040AF36   |94              XCHG EAX,ESP
0040AF37   |50              PUSH EAX
0040AF38  -|7E FE           JLE SHORT EZMerge.0040AF38
0040AF3A   |C15A 71 C3      RCR DWORD PTR DS:[EDX+71],0C3            ; 移动常数超出 1..31 的范围
0040AF3E   |8F              ???                                      ; 未知命令
0040AF3F   |E8 B1FF15DC     CALL DC56AEF5
0040AF44    D4 48           AAM 48
............................................................

修复第一处暗桩。

0040AF0F   |FF15 E0D44800   call dword ptr ds:[48D4E0]  //不用说,是从壳中解压需要的数据,数据我们在后面补上,看到它最后用retn 8返回。

Ctrl+F随便在程序中找个返回地址给它吧。 

0040B830    C2 0800         retn 8  //我选的这里。 

命令行 dd 48d4e0  

修改壳中数据  00B41C08  为  0040B830 

0040AF15   |FF15 D8D44800   call dword ptr ds:[48D4D8]  它是个加密Call,当然要NOP掉,直接用OD修改,注意使用NOP填充复选框要打上,这是基本的汇编知识。

第二步,用正确的解码替换错误的代码,OD直接二进制复制下面的全部内容,这里OD一个工具足够了,Winhex不要嫉妒啊。

0040AF1B   /E9 01000000     JMP EZMerge.0040AF21  //我的天,这个程序是动态解码用的。
0040AF20   |A6              CMPS BYTE PTR DS:[ESI],BYTE PTR ES:[EDI]
0040AF21   8B3D 94DD4800   MOV EDI,DWORD PTR DS:[48DD94]
0040AF27    33D2            XOR EDX,EDX
0040AF29    3BFD            CMP EDI,EBP
0040AF2B    0F9FC2          SETG DL
0040AF2E    4A              DEC EDX
0040AF2F    81E2 03027219   AND EDX,19720203
0040AF35    8996 48510000   MOV DWORD PTR DS:[ESI+5148],EDX
0040AF3B    EB 04           JMP SHORT EZMerge.0040AF41
0040AF3D    855450 AD       TEST DWORD PTR DS:[EAX+EDX*2-53],EDX
0040AF41    FF15 DCD44800   CALL DWORD PTR DS:[48D4DC]  //这里再度加密解码内容,NOP掉。

改为

0040AF41    90              NOP
0040AF42    90              NOP
0040AF43    90              NOP
0040AF44    90              NOP
0040AF45    90              NOP
0040AF46    90              NOP

0040AF47    8B8C24 1C010000 MOV ECX,DWORD PTR SS:[ESP+11C]
0040AF4E    89AE 18510000   MOV DWORD PTR DS:[ESI+5118],EBP
0040AF54    89AE 1C510000   MOV DWORD PTR DS:[ESI+511C],EBP
0040AF5A    89AE 20510000   MOV DWORD PTR DS:[ESI+5120],EBP
0040AF60    89AE 24510000   MOV DWORD PTR DS:[ESI+5124],EBP
0040AF66    89AE 28510000   MOV DWORD PTR DS:[ESI+5128],EBP
0040AF6C    8BC6            MOV EAX,ESI
0040AF6E    5F              POP EDI
0040AF6F    5E              POP ESI
0040AF70    5D              POP EBP
0040AF71    5B              POP EBX
0040AF72    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040AF79    81C4 18010000   ADD ESP,118
0040AF7F    C2 0400         RETN 4  //到这里结束。
...................................................................

Od二进制粘贴下面的全部内容。

0040AF1B   /E9 21000000     JMP EZMerge.0040AF41
0040AF20   |9E              SAHF
0040AF21   |96              XCHG EAX,ESI
0040AF22   |0D 59F32354     OR EAX,5423F359
0040AF27  ^|71 91           JNO SHORT EZMerge.0040AEBA
0040AF29   |EE              OUT DX,AL                                ; I/O 命令
0040AF2A   |51              PUSH ECX
0040AF2B   |96              XCHG EAX,ESI
0040AF2C   |59              POP ECX
0040AF2D   |05 4E6A89D6     ADD EAX,D6896A4E
0040AF32   |3F              AAS
0040AF33   |B3 0F           MOV BL,0F
0040AF35   |6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
0040AF36   |94              XCHG EAX,ESP
0040AF37   |50              PUSH EAX
0040AF38  -|7E FE           JLE SHORT EZMerge.0040AF38
0040AF3A   |C15A 71 C3      RCR DWORD PTR DS:[EDX+71],0C3            ; 移动常数超出 1..31 的范围
0040AF3E   |8F              ???                                      ; 未知命令
0040AF3F   |E8 B1FF15DC     CALL DC56AEF5
0040AF44    D4 48           AAM 48
0040AF46    008B 8C241C01   ADD BYTE PTR DS:[EBX+11C248C],CL
0040AF4C    0000            ADD BYTE PTR DS:[EAX],AL
0040AF4E    89AE 18510000   MOV DWORD PTR DS:[ESI+5118],EBP
0040AF54    89AE 1C510000   MOV DWORD PTR DS:[ESI+511C],EBP
0040AF5A    89AE 20510000   MOV DWORD PTR DS:[ESI+5120],EBP
0040AF60    89AE 24510000   MOV DWORD PTR DS:[ESI+5124],EBP
0040AF66    89AE 28510000   MOV DWORD PTR DS:[ESI+5128],EBP
0040AF6C    8BC6            MOV EAX,ESI
0040AF6E    5F              POP EDI
0040AF6F    5E              POP ESI
0040AF70    5D              POP EBP
0040AF71    5B              POP EBX
0040AF72    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040AF79    81C4 18010000   ADD ESP,118
0040AF7F    C2 0400         RETN 4

补上代码后。

0040AF0F    FF15 E0D44800   CALL DWORD PTR DS:[48D4E0]  //注意DS:[48D4E0]指针要修改指向程序中。
0040AF15    90              NOP
0040AF16    90              NOP
0040AF17    90              NOP
0040AF18    90              NOP
0040AF19    90              NOP
0040AF1A    90              NOP
0040AF1B    E9 01000000     JMP dumped_.0040AF21
0040AF20    A6              CMPS BYTE PTR DS:[ESI],BYTE PTR ES:[EDI]
0040AF21    8B3D 94DD4800   MOV EDI,DWORD PTR DS:[48DD94]
0040AF27    33D2            XOR EDX,EDX
0040AF29    3BFD            CMP EDI,EBP
0040AF2B    0F9FC2          SETG DL
0040AF2E    4A              DEC EDX
0040AF2F    81E2 03027219   AND EDX,19720203
0040AF35    8996 48510000   MOV DWORD PTR DS:[ESI+5148],EDX
0040AF3B    EB 04           JMP SHORT dumped_.0040AF41
0040AF3D    855450 AD       TEST DWORD PTR DS:[EAX+EDX*2-53],EDX
0040AF41    90              NOP
0040AF42    90              NOP
0040AF43    90              NOP
0040AF44    90              NOP
0040AF45    90              NOP
0040AF46    90              NOP
0040AF47    8B8C24 1C010000 MOV ECX,DWORD PTR SS:[ESP+11C]
0040AF4E    89AE 18510000   MOV DWORD PTR DS:[ESI+5118],EBP
0040AF54    89AE 1C510000   MOV DWORD PTR DS:[ESI+511C],EBP
0040AF5A    89AE 20510000   MOV DWORD PTR DS:[ESI+5120],EBP
0040AF60    89AE 24510000   MOV DWORD PTR DS:[ESI+5124],EBP
0040AF66    89AE 28510000   MOV DWORD PTR DS:[ESI+5128],EBP
0040AF6C    8BC6            MOV EAX,ESI
0040AF6E    5F              POP EDI
0040AF6F    5E              POP ESI
0040AF70    5D              POP EBP
0040AF71    5B              POP EBX
0040AF72    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040AF79    81C4 18010000   ADD ESP,118
0040AF7F    C2 0400         RETN 4
.................................................................

将所有修改内容复制到程序中,保存为一个文件。

这个程序校验处非常多,处理方式相同,我就不一一解释了。

修复第二处暗桩。

OD载入修复后的程序,F9运行。

00B41BA4    0005 00000000   add byte ptr ds:[0], al     //内存写错误。 
00B41BAA    0000            add byte ptr ds:[eax], al 
00B41BAC    0020            add byte ptr ds:[eax], ah 
00B41BAE    0000            add byte ptr ds:[eax], al 
00B41BB0    0001            add byte ptr ds:[ecx], al 
00B41BB2    0000            add byte ptr ds:[eax], al 
00B41BB4    0007            add byte ptr ds:[edi], al 
00B41BB6    0000            add byte ptr ds:[eax], al 
00B41BB8    0070 00         add byte ptr ds:[eax], dh 
00B41BBB    0000            add byte ptr ds:[eax], al 
00B41BBD    0000            add byte ptr ds:[eax], al 
00B41BBF    0000            add byte ptr ds:[eax], al 
00B41BC1    0000            add byte ptr ds:[eax], al 
00B41BC3    0000            add byte ptr ds:[eax], al 
00B41BC5    15 00000015     adc eax, 15000000 
00B41BCA    0000            add byte ptr ds:[eax], al 
............................................................

堆栈提示。 

0012A2E8   0040BA3D  返回到 dumped.0040BA3D 来自 00B41BA4  //Od提示错误来自40BA3D 
0012A2EC   0012A340 
0012A2F0   00000000 
0012A2F4   0045F3AE  入口地址 
0012A2F8   004500C4  dumped.004500C4 
0012A2FC   00463D13  返回到 dumped.00463D13 来自 dumped.00463D7C 
0012A300   00B03920  ASCII "&About AVI/MPEG/RM/WMV Joiner"  //初始化对话框,暗桩快完了。 

Ctrl+G 40BA3D 

0040BA35    FFD7            CALL EDI  
0040BA37    FF15 D8D44800   call dword ptr ds:[48D4D8]  //加密解压代码,NOP掉。 
0040BA3D    E9 25000000     jmp dumped.0040BA67 
0040BA42    6996 B6F57F6B 5>imul edxdword ptr ds:[esi+6B7FF5B6], C> 
0040BA4C    FC              cld 
.................................................. 

0040BA3D   /E9 25000000     JMP dumped_.0040BA67   //这里是脱壳后被加密的错误代码。
0040BA42   |6996 B6F57F6B 5>IMUL EDX,DWORD PTR DS:[ESI+6B7FF5B6],C10>
0040BA4C   |FC              CLD
0040BA4D  ^|71 C8           JNO SHORT dumped_.0040BA17
0040BA4F   |91              XCHG EAX,ECX
0040BA50   |04 EB           ADD AL,0EB
0040BA52   |E8 11394890     CALL 9088F368
0040BA57   |B5 53           MOV CH,53
0040BA59   |182F            SBB BYTE PTR DS:[EDI],CH
0040BA5B   |77 57           JA SHORT dumped_.0040BAB4
0040BA5D   |E5 24           IN EAX,24                                ; I/O 命令
0040BA5F   |46              INC ESI
0040BA60   |DB53 18         FIST DWORD PTR DS:[EBX+18]
0040BA63   |9D              POPFD
0040BA64   |61              POPAD
0040BA65   |0D 0AFF15DC     OR EAX,DC15FF0A
0040BA6A    D4 48           AAM 48
0040BA6C    008B CEE89C13   ADD BYTE PTR DS:[EBX+139CE8CE],CL
0040BA72    0000            ADD BYTE PTR DS:[EAX],AL
0040BA74    8B8E 84500000   MOV ECX,DWORD PTR DS:[ESI+5084]
0040BA7A    6A 20           PUSH 20
0040BA7C    6A 00           PUSH 0
0040BA7E    68 36100000     PUSH 1036
0040BA83    51              PUSH ECX
0040BA84    FFD7            CALL EDI    //到这里结束,我多选了一点,但不影响修复,只是便于复制代码。

0040BA3D   /E9 01000000     JMP EZMerge.0040BA43
0040BA42   |51              PUSH ECX
0040BA43   8B86 38510000   MOV EAX,DWORD PTR DS:[ESI+5138]
0040BA49    8B40 14         MOV EAX,DWORD PTR DS:[EAX+14]
0040BA4C    50              PUSH EAX
0040BA4D    E8 0E560000     CALL EZMerge.00411060
0040BA52    83C4 04         ADD ESP,4
0040BA55    8986 50510000   MOV DWORD PTR DS:[ESI+5150],EAX
0040BA5B    8996 54510000   MOV DWORD PTR DS:[ESI+5154],EDX
0040BA61    EB 04           JMP SHORT EZMerge.0040BA67
0040BA63    3236            XOR DH,BYTE PTR DS:[ESI]
0040BA65    E1 58           LOOPDE SHORT EZMerge.0040BABF
0040BA67    FF15 DCD44800   CALL DWORD PTR DS:[48D4DC]  //这里再次加密,NOP掉。
0040BA6D    8BCE            MOV ECX,ESI
0040BA6F    E8 9C130000     CALL EZMerge.0040CE10
0040BA74    8B8E 84500000   MOV ECX,DWORD PTR DS:[ESI+5084]
0040BA7A    6A 20           PUSH 20
0040BA7C    6A 00           PUSH 0
0040BA7E    68 36100000     PUSH 1036
0040BA83    51              PUSH ECX
0040BA84    FFD7            CALL EDI
............................................................

修复暗桩2处后代码

0040BA35   .  FFD7          CALL EDI                                 ; SendMessageA
0040BA37   .  90            NOP
0040BA38   .  90            NOP
0040BA39   .  90            NOP
0040BA3A   .  90            NOP
0040BA3B   .  90            NOP
0040BA3C   .  90            NOP
0040BA3D   .  E9 01000000   JMP dumped2_.0040BA43
0040BA42   .  51            PUSH ECX
0040BA43   >  8B86 38510000 MOV EAX,DWORD PTR DS:[ESI+5138]
0040BA49   .  8B40 14       MOV EAX,DWORD PTR DS:[EAX+14]
0040BA4C   .  50            PUSH EAX
0040BA4D   .  E8 0E560000   CALL dumped2_.00411060
0040BA52   .  83C4 04       ADD ESP,4
0040BA55   .  8986 50510000 MOV DWORD PTR DS:[ESI+5150],EAX
0040BA5B   .  8996 54510000 MOV DWORD PTR DS:[ESI+5154],EDX
0040BA61   .  EB 04         JMP SHORT dumped2_.0040BA67
0040BA63   .  3236          XOR DH,BYTE PTR DS:[ESI]
0040BA65   .  E1 58         LOOPDE SHORT dumped2_.0040BABF
0040BA67   >  90            NOP
0040BA68   .  90            NOP
0040BA69   .  90            NOP
0040BA6A   .  90            NOP
0040BA6B   .  90            NOP
0040BA6C   .  90            NOP
0040BA6D   .  8BCE          MOV ECX,ESI
0040BA6F   .  E8 9C130000   CALL dumped2_.0040CE10
0040BA74   .  8B8E 84500000 MOV ECX,DWORD PTR DS:[ESI+5084]
0040BA7A   .  6A 20         PUSH 20
0040BA7C   .  6A 00         PUSH 0
0040BA7E   .  68 36100000   PUSH 1036
0040BA83   .  51            PUSH ECX
0040BA84   .  FFD7          CALL EDI
...............................................................

将所有修改内容复制到程序中,保存为一个文件。

OD载入修复后的程序,F9运行,程序终于运行了,别高兴,最关键的合并功能还没有试,肯定还有暗桩。

执行合并文件功能。 

00B41BA4    0005 00000000   add byte ptr ds:[0], al   //内存写错误。 
00B41BAA    0000            add byte ptr ds:[eax], al 
00B41BAC    0020            add byte ptr ds:[eax], ah 
00B41BAE    0000            add byte ptr ds:[eax], al 
00B41BB0    0001            add byte ptr ds:[ecx], al 
00B41BB2    0000            add byte ptr ds:[eax], al 
00B41BB4    0007            add byte ptr ds:[edi], al 
00B41BB6    0000            add byte ptr ds:[eax], al 
00B41BB8    0070 00         add byte ptr ds:[eax], dh 
00B41BBB    0000            add byte ptr ds:[eax], al 
00B41BBD    0000            add byte ptr ds:[eax], al 
00B41BBF    0000            add byte ptr ds:[eax], al 
00B41BC1    0000            add byte ptr ds:[eax], al 
00B41BC3    0000            add byte ptr ds:[eax], al 
00B41BC5    15 00000015     adc eax, 15000000 
00B41BCA    0000            add byte ptr ds:[eax], al 
00B41BCC    0003            add byte ptr ds:[ebx], al 
.................................................. 

堆栈提示。 

0012A180   0040D91A  返回到 dumped.0040D91A 来自 00B41BA4 
0012A184   0012ADB0 
0012A188   004740F8  dumped.004740F8 

Ctrl+G 40D91A 

0040D90F    E8 FCF0FFFF     CALL dumped2_.0040CA10
0040D914    FF15 D8D44800   CALL DWORD PTR DS:[48D4D8]    //加密解压代码,NOP掉。
0040D91A    E9 86000000     JMP dumped2_.0040D9A5   //一眼看出这是错误的代码,必须修正。
0040D91F    8696 B6F57F6B   XCHG BYTE PTR DS:[ESI+6B7FF5B6],DL
0040D925    54              PUSH ESP
0040D926    C9              LEAVE
0040D927    2BD1            SUB EDX,ECX
0040D929    0D 0D1B8F04     OR EAX,48F1B0D
0040D92E    6E              OUTS DX,BYTE PTR ES:[EDI]                ; I/O 命令
0040D92F    AB              STOS DWORD PTR ES:[EDI]
0040D930    AA              STOS BYTE PTR ES:[EDI]
0040D931    7E 4A           JLE SHORT dumped2_.0040D97D
0040D933    98              CWDE
0040D934    B5 53           MOV CH,53
0040D936    182F            SBB BYTE PTR DS:[EDI],CH
0040D938    75 57           JNZ SHORT dumped2_.0040D991
0040D93A    E5 24           IN EAX,24                                ; I/O 命令
0040D93C    46              INC ESI
0040D93D    DB              ???                                      ; 未知命令
0040D93E    3150 8B         XOR DWORD PTR DS:[EAX-75],EDX
0040D941    4F              DEC EDI
0040D942    67:AF           SCAS DWORD PTR ES:[DI]
0040D944    2ACD            SUB CL,CH
0040D946    F7BC81 D487A3CA IDIV DWORD PTR DS:[ECX+EAX*4+CAA387D4]
0040D94D    01DC            ADD ESP,EBX
0040D94F    49              DEC ECX
0040D950    FC              CLD
0040D951  ^ 71 DF           JNO SHORT dumped2_.0040D932
0040D953    FD              STD
0040D954    3E:15 8CE36AD6  ADC EAX,D66AE38C                         ; 多余的前缀
0040D95A    F5              CMC
0040D95B    AB              STOS DWORD PTR ES:[EDI]
0040D95C    FE              ???                                      ; 未知命令
0040D95D    6B94AC D2CFB711>IMUL EDX,DWORD PTR SS:[ESP+EBP*4+11B7CFD>
0040D965    D275 4B         SAL BYTE PTR SS:[EBP+4B],CL
0040D968    BF 36D01FE7     MOV EDI,E71FD036
0040D96D    4B              DEC EBX
0040D96E    36:24 F8        AND AL,0F8                               ; 多余的前缀
0040D971    C3              RETN
0040D972    B9 4FB1998D     MOV ECX,8D99B14F
0040D977    3F              AAS
0040D978    B5 A5           MOV CH,0A5
0040D97A    BE 66610D67     MOV ESI,670D6166
0040D97F    94              XCHG EAX,ESP
0040D980    C9              LEAVE
0040D981    67:50           PUSH EAX                                 ; 多余的前缀
0040D983    B4 98           MOV AH,98
0040D985    A3 C9E50966     MOV DWORD PTR DS:[6609E5C9],EAX
0040D98A    CD E1           INT 0E1
0040D98C    F6              ???                                      ; 未知命令
0040D98D    8F              ???                                      ; 未知命令
0040D98E    27              DAA
0040D98F    F0:15 6E2A5CCC  LOCK ADC EAX,CC5C2A6E                    ; 锁定前缀是不允许的
0040D995    E6 FE           OUT 0FE,AL                               ; I/O 命令
0040D997    51              PUSH ECX
0040D998    E0 41           LOOPDNE SHORT dumped2_.0040D9DB
0040D99A    90              NOP
0040D99B    67:62D3         BOUND EDX,EBX                            ; 非法使用寄存器
0040D99E    1E              PUSH DS
0040D99F    0F7B            ???                                      ; 未知命令
0040D9A1    635D E7         ARPL DWORD PTR SS:[EBP-19],EBX
0040D9A4    8985 DB0F848F   MOV DWORD PTR SS:[EBP+8F840FDB],EAX
0040D9AA    0000            ADD BYTE PTR DS:[EAX],AL
0040D9AC    006A 00         ADD BYTE PTR DS:[EDX],CH
0040D9AF    8D8E A42D0000   LEA ECX,DWORD PTR DS:[ESI+2DA4]
0040D9B5    E8 C5520500     CALL dumped2_.00462C7F
0040D9BA    6A 00           PUSH 0
0040D9BC    8D8E 9C320000   LEA ECX,DWORD PTR DS:[ESI+329C]
0040D9C2    E8 B8520500     CALL dumped2_.00462C7F
0040D9C7    6A 01           PUSH 1
0040D9C9    8D8E 744B0000   LEA ECX,DWORD PTR DS:[ESI+4B74]
0040D9CF    E8 AB520500     CALL dumped2_.00462C7F
0040D9D4    6A 00           PUSH 0
0040D9D6    8D8E D4190000   LEA ECX,DWORD PTR DS:[ESI+19D4]
0040D9DC    E8 9E520500     CALL dumped2_.00462C7F
0040D9E1    6A 00           PUSH 0
0040D9E3    8D8E BC230000   LEA ECX,DWORD PTR DS:[ESI+23BC]
0040D9E9    E8 91520500     CALL dumped2_.00462C7F
0040D9EE    6A 00           PUSH 0
0040D9F0    8D8E 94370000   LEA ECX,DWORD PTR DS:[ESI+3794]
0040D9F6    E8 84520500     CALL dumped2_.00462C7F
0040D9FB    6A 00           PUSH 0
0040D9FD    8D8E 8C3C0000   LEA ECX,DWORD PTR DS:[ESI+3C8C]
0040DA03    E8 77520500     CALL dumped2_.00462C7F
0040DA08    6A 00           PUSH 0
0040DA0A    8D8E EC0F0000   LEA ECX,DWORD PTR DS:[ESI+FEC]
0040DA10    E8 6A520500     CALL dumped2_.00462C7F
0040DA15    6A 00           PUSH 0
0040DA17    8D8E C81E0000   LEA ECX,DWORD PTR DS:[ESI+1EC8]
0040DA1D    E8 5D520500     CALL dumped2_.00462C7F
0040DA22    6A 00           PUSH 0
0040DA24    8D8E 7C460000   LEA ECX,DWORD PTR DS:[ESI+467C]
0040DA2A    E8 50520500     CALL dumped2_.00462C7F
0040DA2F    6A 00           PUSH 0
0040DA31    8D8E 84410000   LEA ECX,DWORD PTR DS:[ESI+4184]
0040DA37    E8 43520500     CALL dumped2_.00462C7F
0040DA3C    E9 14000000     JMP dumped2_.0040DA55
0040DA41    A3 96B6197E     MOV DWORD PTR DS:[7E19B696],EAX
0040DA46    6B5412 BC C0    IMUL EDX,DWORD PTR DS:[EDX+EDX-44],-40
0040DA4B    68 AA81C7EF     PUSH EFC781AA
0040DA50    EF              OUT DX,EAX                               ; I/O 命令
0040DA51    92              XCHG EAX,EDX
0040DA52    04 D0           ADD AL,0D0
0040DA54    61              POPAD
0040DA55    FF15 DCD44800   CALL DWORD PTR DS:[48D4DC]
0040DA5B    85DB            TEST EBX,EBX
0040DA5D    75 41           JNZ SHORT dumped2_.0040DAA0
0040DA5F    6A 6C           PUSH 6C
0040DA61    E8 A7600500     CALL dumped2_.00463B0D
0040DA66    83C4 04         ADD ESP,4
0040DA69    894424 14       MOV DWORD PTR SS:[ESP+14],EAX
0040DA6D    85C0            TEST EAX,EAX
0040DA6F    C64424 28 02    MOV BYTE PTR SS:[ESP+28],2
0040DA74    74 0C           JE SHORT dumped2_.0040DA82
0040DA76    53              PUSH EBX
0040DA77    8BC8            MOV ECX,EAX
0040DA79    E8 F23A0000     CALL dumped2_.00411570
0040DA7E    8BF0            MOV ESI,EAX
0040DA80    EB 02           JMP SHORT dumped2_.0040DA84
0040DA82    33F6            XOR ESI,ESI
0040DA84    85F6            TEST ESI,ESI
0040DA86    C64424 28 00    MOV BYTE PTR SS:[ESP+28],0
0040DA8B    74 13           JE SHORT dumped2_.0040DAA0
0040DA8D    8B16            MOV EDX,DWORD PTR DS:[ESI]
0040DA8F    8BCE            MOV ECX,ESI
0040DA91    FF92 B8000000   CALL DWORD PTR DS:[EDX+B8]
0040DA97    8B06            MOV EAX,DWORD PTR DS:[ESI]
0040DA99    6A 01           PUSH 1
0040DA9B    8BCE            MOV ECX,ESI
0040DA9D    FF50 04         CALL DWORD PTR DS:[EAX+4]
0040DAA0    8D4C24 10       LEA ECX,DWORD PTR SS:[ESP+10]
0040DAA4    C74424 28 FFFFF>MOV DWORD PTR SS:[ESP+28],-1
0040DAAC    E8 8C5A0500     CALL dumped2_.0046353D
0040DAB1    8B4C24 20       MOV ECX,DWORD PTR SS:[ESP+20]
0040DAB5    5F              POP EDI
0040DAB6    5E              POP ESI
0040DAB7    5D              POP EBP
0040DAB8    5B              POP EBX
0040DAB9    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040DAC0    83C4 1C         ADD ESP,1C
0040DAC3    C3              RETN
.........................................................................

切换到加壳程序中,Ctrl+G 0040D91A 

0040D91A   /E9 01000000     JMP EZMerge.0040D920      //二进制复制下面全部代码。
0040D91F   |BE 8B863851     MOV ESI,5138868B
0040D924    0000            ADD BYTE PTR DS:[EAX],AL
0040D926    8B68 04         MOV EBP,DWORD PTR DS:[EAX+4]
0040D929    A1 94DD4800     MOV EAX,DWORD PTR DS:[48DD94]
0040D92E    85C0            TEST EAX,EAX
0040D930    7F 43           JG SHORT EZMerge.0040D975
0040D932    8B8E 50510000   MOV ECX,DWORD PTR DS:[ESI+5150]
0040D938    8B96 54510000   MOV EDX,DWORD PTR DS:[ESI+5154]
0040D93E    894C24 18       MOV DWORD PTR SS:[ESP+18],ECX
0040D942    8BFD            MOV EDI,EBP
0040D944    8D4424 18       LEA EAX,DWORD PTR SS:[ESP+18]
0040D948    33C9            XOR ECX,ECX
0040D94A    895424 1C       MOV DWORD PTR SS:[ESP+1C],EDX
0040D94E    2BF8            SUB EDI,EAX
0040D950    8D440C 18       LEA EAX,DWORD PTR SS:[ESP+ECX+18]
0040D954    8A1407          MOV DL,BYTE PTR DS:[EDI+EAX]
0040D957    3010            XOR BYTE PTR DS:[EAX],DL
0040D959    41              INC ECX
0040D95A    83F9 08         CMP ECX,8
0040D95D  ^ 72 F1           JB SHORT EZMerge.0040D950
0040D95F    8B4424 18       MOV EAX,DWORD PTR SS:[ESP+18]
0040D963    8B4D 20         MOV ECX,DWORD PTR SS:[EBP+20]
0040D966    3BC1            CMP EAX,ECX
0040D968    75 35           JNZ SHORT EZMerge.0040D99F
0040D96A    8B4C24 1C       MOV ECX,DWORD PTR SS:[ESP+1C]
0040D96E    8B45 24         MOV EAX,DWORD PTR SS:[EBP+24]
0040D971    3BC8            CMP ECX,EAX
0040D973    75 2A           JNZ SHORT EZMerge.0040D99F
0040D975    8D5424 18       LEA EDX,DWORD PTR SS:[ESP+18]
0040D979    BB 01000000     MOV EBX,1
0040D97E    52              PUSH EDX
0040D97F    6A 04           PUSH 4
0040D981    56              PUSH ESI
0040D982    68 30E64000     PUSH EZMerge.0040E630
0040D987    6A 00           PUSH 0
0040D989    6A 00           PUSH 0
0040D98B    FF15 C0334700   CALL DWORD PTR DS:[4733C0]
0040D991    85C0            TEST EAX,EAX
0040D993    8986 D4500000   MOV DWORD PTR DS:[ESI+50D4],EAX
0040D999    0F84 01010000   JE EZMerge.0040DAA0
0040D99F    EB 04           JMP SHORT EZMerge.0040D9A5
0040D9A1    CC              INT3
0040D9A2    6E              OUTS DX,BYTE PTR ES:[EDI]                ; I/O 命令
0040D9A3    8170 85 DB0F848>XOR DWORD PTR DS:[EAX-7B],8F840FDB
0040D9AA    0000            ADD BYTE PTR DS:[EAX],AL
0040D9AC    006A 00         ADD BYTE PTR DS:[EDX],CH
0040D9AF    8D8E A42D0000   LEA ECX,DWORD PTR DS:[ESI+2DA4]
0040D9B5    E8 C5520500     CALL EZMerge.00462C7F
0040D9BA    6A 00           PUSH 0
0040D9BC    8D8E 9C320000   LEA ECX,DWORD PTR DS:[ESI+329C]
0040D9C2    E8 B8520500     CALL EZMerge.00462C7F
0040D9C7    6A 01           PUSH 1
0040D9C9    8D8E 744B0000   LEA ECX,DWORD PTR DS:[ESI+4B74]
0040D9CF    E8 AB520500     CALL EZMerge.00462C7F
0040D9D4    6A 00           PUSH 0
0040D9D6    8D8E D4190000   LEA ECX,DWORD PTR DS:[ESI+19D4]
0040D9DC    E8 9E520500     CALL EZMerge.00462C7F
0040D9E1    6A 00           PUSH 0
0040D9E3    8D8E BC230000   LEA ECX,DWORD PTR DS:[ESI+23BC]
0040D9E9    E8 91520500     CALL EZMerge.00462C7F
0040D9EE    6A 00           PUSH 0
0040D9F0    8D8E 94370000   LEA ECX,DWORD PTR DS:[ESI+3794]
0040D9F6    E8 84520500     CALL EZMerge.00462C7F
0040D9FB    6A 00           PUSH 0
0040D9FD    8D8E 8C3C0000   LEA ECX,DWORD PTR DS:[ESI+3C8C]
0040DA03    E8 77520500     CALL EZMerge.00462C7F
0040DA08    6A 00           PUSH 0
0040DA0A    8D8E EC0F0000   LEA ECX,DWORD PTR DS:[ESI+FEC]
0040DA10    E8 6A520500     CALL EZMerge.00462C7F
0040DA15    6A 00           PUSH 0
0040DA17    8D8E C81E0000   LEA ECX,DWORD PTR DS:[ESI+1EC8]
0040DA1D    E8 5D520500     CALL EZMerge.00462C7F
0040DA22    6A 00           PUSH 0
0040DA24    8D8E 7C460000   LEA ECX,DWORD PTR DS:[ESI+467C]
0040DA2A    E8 50520500     CALL EZMerge.00462C7F
0040DA2F    6A 00           PUSH 0
0040DA31    8D8E 84410000   LEA ECX,DWORD PTR DS:[ESI+4184]
0040DA37    E8 43520500     CALL EZMerge.00462C7F
0040DA3C    E9 01000000     JMP EZMerge.0040DA42
0040DA41    9B              WAIT
0040DA42    8B86 D4500000   MOV EAX,DWORD PTR DS:[ESI+50D4]
0040DA48    50              PUSH EAX
0040DA49    FF15 C4334700   CALL DWORD PTR DS:[4733C4]
0040DA4F    EB 04           JMP SHORT EZMerge.0040DA55
0040DA51    F9              STC
0040DA52    D1ED            SHR EBP,1
0040DA54    A0 FF15DCD4     MOV AL,BYTE PTR DS:[D4DC15FF]
0040DA59    48              DEC EAX
0040DA5A    0085 DB75416A   ADD BYTE PTR SS:[EBP+6A4175DB],AL
0040DA60    6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令
0040DA61    E8 A7600500     CALL EZMerge.00463B0D
0040DA66    83C4 04         ADD ESP,4
0040DA69    894424 14       MOV DWORD PTR SS:[ESP+14],EAX
0040DA6D    85C0            TEST EAX,EAX
0040DA6F    C64424 28 02    MOV BYTE PTR SS:[ESP+28],2
0040DA74    74 0C           JE SHORT EZMerge.0040DA82
0040DA76    53              PUSH EBX
0040DA77    8BC8            MOV ECX,EAX
0040DA79    E8 F23A0000     CALL EZMerge.00411570
0040DA7E    8BF0            MOV ESI,EAX
0040DA80    EB 02           JMP SHORT EZMerge.0040DA84
0040DA82    33F6            XOR ESI,ESI
0040DA84    85F6            TEST ESI,ESI
0040DA86    C64424 28 00    MOV BYTE PTR SS:[ESP+28],0
0040DA8B    74 13           JE SHORT EZMerge.0040DAA0
0040DA8D    8B16            MOV EDX,DWORD PTR DS:[ESI]
0040DA8F    8BCE            MOV ECX,ESI
0040DA91    FF92 B8000000   CALL DWORD PTR DS:[EDX+B8]
0040DA97    8B06            MOV EAX,DWORD PTR DS:[ESI]
0040DA99    6A 01           PUSH 1
0040DA9B    8BCE            MOV ECX,ESI
0040DA9D    FF50 04         CALL DWORD PTR DS:[EAX+4]
0040DAA0    8D4C24 10       LEA ECX,DWORD PTR SS:[ESP+10]
0040DAA4    C74424 28 FFFFF>MOV DWORD PTR SS:[ESP+28],-1
0040DAAC    E8 8C5A0500     CALL EZMerge.0046353D
0040DAB1    8B4C24 20       MOV ECX,DWORD PTR SS:[ESP+20]
0040DAB5    5F              POP EDI
0040DAB6    5E              POP ESI
0040DAB7    5D              POP EBP
0040DAB8    5B              POP EBX
0040DAB9    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040DAC0    83C4 1C         ADD ESP,1C
0040DAC3    C3              RETN
................................................................

0040D91A   /E9 01000000     JMP dumped2_.0040D920  //粘贴入程序中,需要处理一下花指令。
0040D91F   |BE 8B863851     MOV ESI,5138868B
0040D924    0000            ADD BYTE PTR DS:[EAX],AL

0040D91A   /EB 04           JMP SHORT dumped2_.0040D920
0040D91C   |90              NOP
0040D91D   |90              NOP                   处理后。
0040D91E   |90              NOP
0040D91F   |90              NOP
0040D920   8B86 38510000   MOV EAX,DWORD PTR DS:[ESI+5138]


0040D926    8B68 04         MOV EBP,DWORD PTR DS:[EAX+4]
0040D929    A1 94DD4800     MOV EAX,DWORD PTR DS:[48DD94]
0040D92E    85C0            TEST EAX,EAX
0040D930    7F 43           JG SHORT dumped2_.0040D975
0040D932    8B8E 50510000   MOV ECX,DWORD PTR DS:[ESI+5150]
0040D938    8B96 54510000   MOV EDX,DWORD PTR DS:[ESI+5154]
0040D93E    894C24 18       MOV DWORD PTR SS:[ESP+18],ECX
0040D942    8BFD            MOV EDI,EBP
0040D944    8D4424 18       LEA EAX,DWORD PTR SS:[ESP+18]
0040D948    33C9            XOR ECX,ECX
0040D94A    895424 1C       MOV DWORD PTR SS:[ESP+1C],EDX
0040D94E    2BF8            SUB EDI,EAX
0040D950    8D440C 18       LEA EAX,DWORD PTR SS:[ESP+ECX+18]
0040D954    8A1407          MOV DL,BYTE PTR DS:[EDI+EAX]
0040D957    3010            XOR BYTE PTR DS:[EAX],DL
0040D959    41              INC ECX
0040D95A    83F9 08         CMP ECX,8
0040D95D  ^ 72 F1           JB SHORT dumped2_.0040D950
0040D95F    8B4424 18       MOV EAX,DWORD PTR SS:[ESP+18]
0040D963    8B4D 20         MOV ECX,DWORD PTR SS:[EBP+20]
0040D966    3BC1            CMP EAX,ECX
0040D968    75 35           JNZ SHORT dumped2_.0040D99F
0040D96A    8B4C24 1C       MOV ECX,DWORD PTR SS:[ESP+1C]
0040D96E    8B45 24         MOV EAX,DWORD PTR SS:[EBP+24]
0040D971    3BC8            CMP ECX,EAX
0040D973    75 2A           JNZ SHORT dumped2_.0040D99F
0040D975    8D5424 18       LEA EDX,DWORD PTR SS:[ESP+18]
0040D979    BB 01000000     MOV EBX,1
0040D97E    52              PUSH EDX
0040D97F    6A 04           PUSH 4
0040D981    56              PUSH ESI
0040D982    68 30E64000     PUSH dumped2_.0040E630
0040D987    6A 00           PUSH 0
0040D989    6A 00           PUSH 0
0040D98B    FF15 C0334700   CALL DWORD PTR DS:[<&kernel32.CreateThre>; KERNEL32.CreateThread
0040D991    85C0            TEST EAX,EAX
0040D993    8986 D4500000   MOV DWORD PTR DS:[ESI+50D4],EAX
0040D999    0F84 01010000   JE dumped2_.0040DAA0
0040D99F    EB 04           JMP SHORT dumped2_.0040D9A5    //处理一下花指令
0040D9A1    CC              INT3
0040D9A2    6E              OUTS DX,BYTE PTR ES:[EDI]                ; I/O 命令
0040D9A3    8170 85 DB0F848>XOR DWORD PTR DS:[EAX-7B],8F840FDB
0040D9AA    0000            ADD BYTE PTR DS:[EAX],AL
0040D9AC    006A 00         ADD BYTE PTR DS:[EDX],CH
0040D9AF    8D8E A42D0000   LEA ECX,DWORD PTR DS:[ESI+2DA4]
0040D9B5    E8 C5520500     CALL dumped2_.00462C7F

0040D99F   /EB 04           JMP SHORT dumped2_.0040D9A5   //处理后。
0040D9A1   |90              NOP
0040D9A2   |90              NOP
0040D9A3   |90              NOP
0040D9A4   |90              NOP
0040D9A5   85DB            TEST EBX,EBX
0040D9A7   /0F84 8F000000   JE dumped2_.0040DA3C
0040D9AD   |6A 00           PUSH 0
0040D9AF   |8D8E A42D0000   LEA ECX,DWORD PTR DS:[ESI+2DA4]
0040D9B5   |E8 C5520500     CALL dumped2_.00462C7F      //处理后。     

0040D9BA    6A 00           PUSH 0
0040D9BC    8D8E 9C320000   LEA ECX,DWORD PTR DS:[ESI+329C]
0040D9C2    E8 B8520500     CALL dumped2_.00462C7F
0040D9C7    6A 01           PUSH 1
0040D9C9    8D8E 744B0000   LEA ECX,DWORD PTR DS:[ESI+4B74]
0040D9CF    E8 AB520500     CALL dumped2_.00462C7F
0040D9D4    6A 00           PUSH 0
0040D9D6    8D8E D4190000   LEA ECX,DWORD PTR DS:[ESI+19D4]
0040D9DC    E8 9E520500     CALL dumped2_.00462C7F
0040D9E1    6A 00           PUSH 0
0040D9E3    8D8E BC230000   LEA ECX,DWORD PTR DS:[ESI+23BC]
0040D9E9    E8 91520500     CALL dumped2_.00462C7F
0040D9EE    6A 00           PUSH 0
0040D9F0    8D8E 94370000   LEA ECX,DWORD PTR DS:[ESI+3794]
0040D9F6    E8 84520500     CALL dumped2_.00462C7F
0040D9FB    6A 00           PUSH 0
0040D9FD    8D8E 8C3C0000   LEA ECX,DWORD PTR DS:[ESI+3C8C]
0040DA03    E8 77520500     CALL dumped2_.00462C7F
0040DA08    6A 00           PUSH 0
0040DA0A    8D8E EC0F0000   LEA ECX,DWORD PTR DS:[ESI+FEC]
0040DA10    E8 6A520500     CALL dumped2_.00462C7F
0040DA15    6A 00           PUSH 0
0040DA17    8D8E C81E0000   LEA ECX,DWORD PTR DS:[ESI+1EC8]
0040DA1D    E8 5D520500     CALL dumped2_.00462C7F
0040DA22    6A 00           PUSH 0
0040DA24    8D8E 7C460000   LEA ECX,DWORD PTR DS:[ESI+467C]
0040DA2A    E8 50520500     CALL dumped2_.00462C7F
0040DA2F    6A 00           PUSH 0
0040DA31    8D8E 84410000   LEA ECX,DWORD PTR DS:[ESI+4184]
0040DA37    E8 43520500     CALL dumped2_.00462C7F
0040DA3C    E9 01000000     JMP dumped2_.0040DA42     //这里又有花指令。
0040DA41    9B              WAIT
0040DA42    8B86 D4500000   MOV EAX,DWORD PTR DS:[ESI+50D4]

0040DA3C   /EB 04           JMP SHORT dumped2_.0040DA42
0040DA3E   |90              NOP
0040DA3F   |90              NOP
0040DA40   |90              NOP
0040DA41   |90              NOP
0040DA42   8B86 D4500000   MOV EAX,DWORD PTR DS:[ESI+50D4]

0040DA48    50              PUSH EAX
0040DA49    FF15 C4334700   CALL DWORD PTR DS:[<&kernel32.ResumeThre>; KERNEL32.ResumeThread
0040DA4F    EB 04           JMP SHORT dumped2_.0040DA55  //这里又有花指令。
0040DA51    F9              STC
0040DA52    D1ED            SHR EBP,1
0040DA54    A0 FF15DCD4     MOV AL,BYTE PTR DS:[D4DC15FF]
0040DA59    48              DEC EAX
0040DA5A    0085 DB75416A   ADD BYTE PTR SS:[EBP+6A4175DB],AL
0040DA60    6C              INS BYTE PTR ES:[EDI],DX                 ; I/O 命令

0040DA4F   /EB 04           JMP SHORT dumped2_.0040DA55
0040DA51   |90              NOP
0040DA52   |90              NOP
0040DA53   |90              NOP
0040DA54   |90              NOP
0040DA55   FF15 DCD44800   CALL DWORD PTR DS:[48D4DC]   //加密指令,Nop掉。

0040DA55    90              NOP
0040DA56    90              NOP
0040DA57    90              NOP
0040DA58    90              NOP
0040DA59    90              NOP
0040DA5A    90              NOP

0040DA5B    85DB            TEST EBX,EBX
0040DA5D    75 41           JNZ SHORT dumped2_.0040DAA0
0040DA5F    6A 6C           PUSH 6C
0040DA61    E8 A7600500     CALL dumped2_.00463B0D

0040DA66    83C4 04         ADD ESP,4
0040DA69    894424 14       MOV DWORD PTR SS:[ESP+14],EAX
0040DA6D    85C0            TEST EAX,EAX
0040DA6F    C64424 28 02    MOV BYTE PTR SS:[ESP+28],2
0040DA74    74 0C           JE SHORT dumped2_.0040DA82
0040DA76    53              PUSH EBX
0040DA77    8BC8            MOV ECX,EAX
0040DA79    E8 F23A0000     CALL dumped2_.00411570
0040DA7E    8BF0            MOV ESI,EAX
0040DA80    EB 02           JMP SHORT dumped2_.0040DA84
0040DA82    33F6            XOR ESI,ESI
0040DA84    85F6            TEST ESI,ESI
0040DA86    C64424 28 00    MOV BYTE PTR SS:[ESP+28],0
0040DA8B    74 13           JE SHORT dumped2_.0040DAA0
0040DA8D    8B16            MOV EDX,DWORD PTR DS:[ESI]
0040DA8F    8BCE            MOV ECX,ESI
0040DA91    FF92 B8000000   CALL DWORD PTR DS:[EDX+B8]
0040DA97    8B06            MOV EAX,DWORD PTR DS:[ESI]
0040DA99    6A 01           PUSH 1
0040DA9B    8BCE            MOV ECX,ESI
0040DA9D    FF50 04         CALL DWORD PTR DS:[EAX+4]
0040DAA0    8D4C24 10       LEA ECX,DWORD PTR SS:[ESP+10]
0040DAA4    C74424 28 FFFFF>MOV DWORD PTR SS:[ESP+28],-1
0040DAAC    E8 8C5A0500     CALL dumped2_.0046353D
0040DAB1    8B4C24 20       MOV ECX,DWORD PTR SS:[ESP+20]
0040DAB5    5F              POP EDI
0040DAB6    5E              POP ESI
0040DAB7    5D              POP EBP
0040DAB8    5B              POP EBX
0040DAB9    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
0040DAC0    83C4 1C         ADD ESP,1C
0040DAC3    C3              RETN
...............................................................

0040D90F    E8 FCF0FFFF     CALL dumped2_.0040CA10   //完成第三处暗桩代码。
0040D914    90              NOP
0040D915    90              NOP
0040D916    90              NOP
0040D917    90              NOP
0040D918    90              NOP
0040D919    90              NOP
0040D91A    EB 04           JMP SHORT dumped2_.0040D920
0040D91C    90              NOP
0040D91D    90              NOP
0040D91E    90              NOP
0040D91F    90              NOP
0040D920    8B86 38510000   MOV EAX,DWORD PTR DS:[ESI+5138]
0040D926    8B68 04         MOV EBP,DWORD PTR DS:[EAX+4]
0040D929    A1 94DD4800     MOV EAX,DWORD PTR DS:[48DD94]
0040D92E    85C0            TEST EAX,EAX
0040D930    7F 43           JG SHORT dumped2_.0040D975
0040D932    8B8E 50510000   MOV ECX,DWORD PTR DS:[ESI+5150]
0040D938    8B96 54510000   MOV EDX,DWORD PTR DS:[ESI+5154]
0040D93E    894C24 18       MOV DWORD PTR SS:[ESP+18],ECX
0040D942    8BFD            MOV EDI,EBP
0040D944    8D4424 18       LEA EAX,DWORD PTR SS:[ESP+18]
0040D948    33C9            XOR ECX,ECX
0040D94A    895424 1C       MOV DWORD PTR SS:[ESP+1C],EDX
0040D94E    2BF8            SUB EDI,EAX
0040D950    8D440C 18       LEA EAX,DWORD PTR SS:[ESP+ECX+18]
0040D954    8A1407          MOV DL,BYTE PTR DS:[EDI+EAX]
0040D957    3010            XOR BYTE PTR DS:[EAX],DL
0040D959    41              INC ECX
0040D95A    83F9 08         CMP ECX,8
0040D95D  ^ 72 F1           JB SHORT dumped2_.0040D950
0040D95F    8B4424 18       MOV EAX,DWORD PTR SS:[ESP+18]
0040D963    8B4D 20         MOV ECX,DWORD PTR SS:[EBP+20]
0040D966    3BC1            CMP EAX,ECX
0040D968    75 35           JNZ SHORT dumped2_.0040D99F
0040D96A    8B4C24 1C       MOV ECX,DWORD PTR SS:[ESP+1C]
0040D96E    8B45 24         MOV EAX,DWORD PTR SS:[EBP+24]
0040D971    3BC8            CMP ECX,EAX
0040D973    75 2A           JNZ SHORT dumped2_.0040D99F
0040D975    8D5424 18       LEA EDX,DWORD PTR SS:[ESP+18]
0040D979    BB 01000000     MOV EBX,1
0040D97E    52              PUSH EDX
0040D97F    6A 04           PUSH 4
0040D981    56              PUSH ESI
0040D982    68 30E64000     PUSH dumped2_.0040E630
0040D987    6A 00           PUSH 0
0040D989    6A 00           PUSH 0
0040D98B    FF15 C0334700   CALL DWORD PTR DS:[<&kernel32.CreateThre>; KERNEL32.CreateThread
0040D991    85C0            TEST EAX,EAX
0040D993    8986 D4500000   MOV DWORD PTR DS:[ESI+50D4],EAX
0040D999    0F84 01010000   JE dumped2_.0040DAA0
0040D99F    EB 04           JMP SHORT dumped2_.0040D9A5
0040D9A1    90              NOP
0040D9A2    90              NOP
0040D9A3    90              NOP
0040D9A4    90              NOP
0040D9A5    85DB            TEST EBX,EBX
0040D9A7    0F84 8F000000   JE dumped2_.0040DA3C
0040D9AD    6A 00           PUSH 0
0040D9AF    8D8E A42D0000   LEA ECX,DWORD PTR DS:[ESI+2DA4]
0040D9B5    E8 C5520500     CALL dumped2_.00462C7F
0040D9BA    6A 00           PUSH 0
0040D9BC    8D8E 9C320000   LEA ECX,DWORD PTR DS:[ESI+329C]
0040D9C2    E8 B8520500     CALL dumped2_.00462C7F
0040D9C7    6A 01           PUSH 1
0040D9C9    8D8E 744B0000   LEA ECX,DWORD PTR DS:[ESI+4B74]
0040D9CF    E8 AB520500     CALL dumped2_.00462C7F
0040D9D4    6A 00           PUSH 0
0040D9D6    8D8E D4190000   LEA ECX,DWORD PTR DS:[ESI+19D4]
0040D9DC    E8 9E520500     CALL dumped2_.00462C7F
0040D9E1    6A 00           PUSH 0
0040D9E3    8D8E BC230000   LEA ECX,DWORD PTR DS:[ESI+23BC]
0040D9E9    E8 91520500     CALL dumped2_.00462C7F
0040D9EE    6A 00           PUSH 0
0040D9F0    8D8E 94370000   LEA ECX,DWORD PTR DS:[ESI+3794]
0040D9F6    E8 84520500     CALL dumped2_.00462C7F
0040D9FB    6A 00           PUSH 0
0040D9FD    8D8E 8C3C0000   LEA ECX,DWORD PTR DS:[ESI+3C8C]
0040DA03    E8 77520500     CALL dumped2_.00462C7F
0040DA08    6A 00           PUSH 0
0040DA0A    8D8E EC0F0000   LEA ECX,DWORD PTR DS:[ESI+FEC]
0040DA10    E8 6A520500     CALL dumped2_.00462C7F
0040DA15    6A 00           PUSH 0
0040DA17    8D8E C81E0000   LEA ECX,DWORD PTR DS:[ESI+1EC8]
0040DA1D    E8 5D520500     CALL dumped2_.00462C7F
0040DA22    6A 00           PUSH 0
0040DA24    8D8E 7C460000   LEA ECX,DWORD PTR DS:[ESI+467C]
0040DA2A    E8 50520500     CALL dumped2_.00462C7F
0040DA2F    6A 00           PUSH 0
0040DA31    8D8E 84410000   LEA ECX,DWORD PTR DS:[ESI+4184]
0040DA37    E8 43520500     CALL dumped2_.00462C7F
0040DA3C    EB 04           JMP SHORT dumped2_.0040DA42