小菜的Armadillo V5.0X 标准加壳保护方式脱壳笔记
 

标题:小菜的Armadillo V5.0X 标准加壳保护方式脱壳笔记
链接:http://www.unpack.cn/viewthread.php?tid=18449
贴者:Cyg07
日期:2007-10-18 17:58

一.寻找MagicJmp->避开IAT加密

使用OllyDBG修改版TheODBG,使用IsDebug插件Hide,忽略所有的异常选项。
载入后Alt+B->清除所有断点。

BP VirtualProtect
Shift+F9,中断后取消断点
BP CreateFileMappingA 
Shift+F9,中断后取消断点

Ctrl+G:GetModuleHandleA
在GetModuleHandleA函数末尾处设断,防止壳检测函数首部的CC断点复制内容到剪贴板代码:
77E12CD1 k>  837C24 04 00       cmp dword ptr ss:[esp+4],0
77E12CD6     74 18              je short 77E12CF0                                ; kernel32.77E12CF0
77E12CD8     FF7424 04          push dword ptr ss:[esp+4]
77E12CDC     E8 92FFFFFF        call 77E12C73                                    ; kernel32.77E12C73
77E12CE1     85C0               test eax,eax
77E12CE3     74 08              je short 77E12CED                                ; kernel32.77E12CED
77E12CE5     FF70 04            push dword ptr ds:[eax+4]
77E12CE8     E8 77520000        call 77E17F64                                    ; kernel32.GetModuleHandleW
77E12CED     C2 0400            retn 4
//这里设断Shift+F9 观察堆栈变化:复制内容到剪贴板代码:
00129844    00CCEB59   RETURN to 00CCEB59 from kernel32.GetModuleHandleA
00129848    00CF5B90   ASCII "kernel32.dll"
0012984C    00CF6A20   ASCII "VirtualAlloc"Shift+F9复制内容到剪贴板代码:
00129844    00CCEB77   RETURN to 00CCEB77 from kernel32.GetModuleHandleA
00129848    00CF5B90   ASCII "kernel32.dll"
0012984C    00CF6A14   ASCII "VirtualFree"Shift+F9复制内容到剪贴板代码:
001295CC    00CB6CCC   RETURN to 00CB6CCC from kernel32.GetModuleHandleA
001295D0    00129734   ASCII "kernel32.dll"“VirtualAlloc、VirtualFree”特征出来了!
取消GetModuleHandleA函数末尾的断点了,F7返回00CB6CC7调用处复制内容到剪贴板代码:
00CB6CC6     FF15 C030CF00      call dword ptr ds:[CF30C0]            ; kernel32.GetModuleHandleA
00CB6CCC     8B55 F8            mov edx,dword ptr ss:[ebp-8]                       ;
//返回在这里
00CB6CCF     8B0D 1C2FD000      mov ecx,dword ptr ds:[D02F1C]
00CB6CD5     890491             mov dword ptr ds:[ecx+edx*4],eax      ; kernel32.77E10000
00CB6CD8     8B55 F8            mov edx,dword ptr ss:[ebp-8]
00CB6CDB     A1 1C2FD000        mov eax,dword ptr ds:[D02F1C]
00CB6CE0     833C90 00          cmp dword ptr ds:[eax+edx*4],0
00CB6CE4     75 5B              jnz short 00CB6D41
00CB6CE6     8B4D FC            mov ecx,dword ptr ss:[ebp-4]
00CB6CE9     8B51 08            mov edx,dword ptr ds:[ecx+8]
00CB6CEC     83E2 02            and edx,2
00CB6CEF     74 37              je short 00CB6D28
00CB6CF1     B8 17000000        mov eax,17
00CB6CF6     C1E0 02            shl eax,2
00CB6CF9     8B0D D40AD000      mov ecx,dword ptr ds:[D00AD4]         ; fraps.004B1368
00CB6CFF     8B15 D40AD000      mov edx,dword ptr ds:[D00AD4]         ; fraps.004B1368
00CB6D05     8B35 D40AD000      mov esi,dword ptr ds:[D00AD4]         ; fraps.004B1368
00CB6D0B     8B5E 1C            mov ebx,dword ptr ds:[esi+1C]
00CB6D0E     331A               xor ebx,dword ptr ds:[edx]            ; ntdll.77FB2360
00CB6D10     331C01             xor ebx,dword ptr ds:[ecx+eax]
00CB6D13     83E3 10            and ebx,10
00CB6D16     F7DB               neg ebx
00CB6D18     1BDB               sbb ebx,ebx
00CB6D1A     F7DB               neg ebx
00CB6D1C     0FB6C3             movzx eax,bl
00CB6D1F     85C0               test eax,eax                          ; kernel32.77E10000
00CB6D21     75 05              jnz short 00CB6D28
00CB6D23   ^ E9 1DFFFFFF        jmp 00CB6C45
00CB6D28     8D8D F0FEFFFF      lea ecx,dword ptr ss:[ebp-110]
00CB6D2E     51                 push ecx                              ; kernel32.77E18172
00CB6D2F     FF15 D431CF00      call dword ptr ds:[CF31D4]            ; kernel32.LoadLibraryA
00CB6D35     8B55 F8            mov edx,dword ptr ss:[ebp-8]
00CB6D38     8B0D 1C2FD000      mov ecx,dword ptr ds:[D02F1C]
00CB6D3E     890491             mov dword ptr ds:[ecx+edx*4],eax      ; kernel32.77E10000
00CB6D41     8B55 F8            mov edx,dword ptr ss:[ebp-8]
00CB6D44     A1 1C2FD000        mov eax,dword ptr ds:[D02F1C]
00CB6D49     833C90 00          cmp dword ptr ds:[eax+edx*4],0
00CB6D4D     75 05              jnz short 00CB6D54         
//MagicJmp->nop->避开IAT加密通过单步跟踪找到了比较函数,下面给出下面是处理 IAT 的流程(菜!目前无法做分析,有兴趣的朋友可以继续)复制内容到剪贴板代码:
00CD15B9     BA 01000000        mov edx,1
00CD15BE     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD15C0     0F84 62090000      je 00CD1F28
00CD15C6     8B85 8CDBFFFF      mov eax,dword ptr ss:[ebp-2474]
00CD15CC     8985 3CD6FFFF      mov dword ptr ss:[ebp-29C4],eax                  ; kernel32.77E10000
00CD15D2     6A 00              push 0
00CD15D4     8B8D 8CDBFFFF      mov ecx,dword ptr ss:[ebp-2474]
00CD15DA     51                 push ecx                                         ; kernel32.77E18172
00CD15DB     E8 40B90000        call 00CDCF20
00CD15E0     83C4 08            add esp,8
00CD15E3     83C0 01            add eax,1
00CD15E6     8985 8CDBFFFF      mov dword ptr ss:[ebp-2474],eax                  ; kernel32.77E10000
00CD15EC     8B95 3CD6FFFF      mov edx,dword ptr ss:[ebp-29C4]
00CD15F2     0FBE02             movsx eax,byte ptr ds:[edx]
00CD15F5     85C0               test eax,eax                                     ; kernel32.77E10000
00CD15F7     75 05              jnz short 00CD15FE
00CD15F9     E9 2A090000        jmp 00CD1F28
00CD15FE     8B8D 8CDBFFFF      mov ecx,dword ptr ss:[ebp-2474]
00CD1604     8B11               mov edx,dword ptr ds:[ecx]
00CD1606     8995 38D6FFFF      mov dword ptr ss:[ebp-29C8],edx                  ; ntdll.77FB2340
00CD160C     8B85 8CDBFFFF      mov eax,dword ptr ss:[ebp-2474]
00CD1612     83C0 04            add eax,4
00CD1615     8985 8CDBFFFF      mov dword ptr ss:[ebp-2474],eax                  ; kernel32.77E10000
00CD161B     8B8D 8CDBFFFF      mov ecx,dword ptr ss:[ebp-2474]
00CD1621     8B11               mov edx,dword ptr ds:[ecx]
00CD1623     8995 58D7FFFF      mov dword ptr ss:[ebp-28A8],edx                  ; ntdll.77FB2340
00CD1629     8B85 8CDBFFFF      mov eax,dword ptr ss:[ebp-2474]
00CD162F     83C0 04            add eax,4
00CD1632     8985 8CDBFFFF      mov dword ptr ss:[ebp-2474],eax                  ; kernel32.77E10000
00CD1638     8A0D 5835CF00      mov cl,byte ptr ds:[CF3558]
00CD163E     888D 40D6FFFF      mov byte ptr ss:[ebp-29C0],cl
00CD1644     68 03010000        push 103
00CD1649     6A 00              push 0
00CD164B     8D95 41D6FFFF      lea edx,dword ptr ss:[ebp-29BF]
00CD1651     52                 push edx                                         ; ntdll.77FB2340
00CD1652     E8 39B80000        call 00CDCE90
00CD1657     83C4 0C            add esp,0C
00CD165A     8B85 3CD6FFFF      mov eax,dword ptr ss:[ebp-29C4]
00CD1660     50                 push eax                                         ; kernel32.77E10000
00CD1661     E8 1A78FEFF        call 00CB8E80
00CD1666     8985 4CD7FFFF      mov dword ptr ss:[ebp-28B4],eax                  ; kernel32.77E10000
00CD166C     83BD 4CD7FFFF 00   cmp dword ptr ss:[ebp-28B4],0
00CD1673     0F85 A6000000      jnz 00CD171F
00CD1679     83BD 4CD7FFFF 00   cmp dword ptr ss:[ebp-28B4],0
00CD1680     75 60              jnz short 00CD16E2
00CD1682     6A 01              push 1
00CD1684     8D8D 30D5FFFF      lea ecx,dword ptr ss:[ebp-2AD0]
00CD168A     51                 push ecx                                         ; kernel32.77E18172
00CD168B     E8 5079FFFF        call 00CC8FE0
00CD1690     83C4 08            add esp,8
00CD1693     6A 5C              push 5C
00CD1695     8D95 30D5FFFF      lea edx,dword ptr ss:[ebp-2AD0]
00CD169B     52                 push edx                                         ; ntdll.77FB2340
00CD169C     E8 0FDE0000        call 00CDF4B0
00CD16A1     83C4 08            add esp,8
00CD16A4     8985 2CD5FFFF      mov dword ptr ss:[ebp-2AD4],eax                  ; kernel32.77E10000
00CD16AA     83BD 2CD5FFFF 00   cmp dword ptr ss:[ebp-2AD4],0
00CD16B1     74 2F              je short 00CD16E2
00CD16B3     8B85 3CD6FFFF      mov eax,dword ptr ss:[ebp-29C4]
00CD16B9     50                 push eax                                         ; kernel32.77E10000
00CD16BA     8B8D 2CD5FFFF      mov ecx,dword ptr ss:[ebp-2AD4]
00CD16C0     83C1 01            add ecx,1
00CD16C3     51                 push ecx                                         ; kernel32.77E18172
00CD16C4     E8 47BA0000        call 00CDD110
00CD16C9     83C4 08            add esp,8
00CD16CC     6A 08              push 8
00CD16CE     6A 00              push 0
00CD16D0     8D95 30D5FFFF      lea edx,dword ptr ss:[ebp-2AD0]
00CD16D6     52                 push edx                                         ; ntdll.77FB2340
00CD16D7     E8 F478FEFF        call 00CB8FD0
00CD16DC     8985 4CD7FFFF      mov dword ptr ss:[ebp-28B4],eax                  ; kernel32.77E10000
00CD16E2     83BD 4CD7FFFF 00   cmp dword ptr ss:[ebp-28B4],0
00CD16E9     75 34              jnz short 00CD171F
00CD16EB     6A 01              push 1
00CD16ED     8D85 30D5FFFF      lea eax,dword ptr ss:[ebp-2AD0]
00CD16F3     50                 push eax                                         ; kernel32.77E10000
00CD16F4     E8 E778FFFF        call 00CC8FE0
00CD16F9     83C4 08            add esp,8
00CD16FC     8D8D 30D5FFFF      lea ecx,dword ptr ss:[ebp-2AD0]
00CD1702     51                 push ecx                                         ; kernel32.77E18172
00CD1703     8D95 40D6FFFF      lea edx,dword ptr ss:[ebp-29C0]
00CD1709     52                 push edx                                         ; ntdll.77FB2340
00CD170A     8B85 3CD6FFFF      mov eax,dword ptr ss:[ebp-29C4]
00CD1710     50                 push eax                                         ; kernel32.77E10000
00CD1711     E8 1A70FEFF        call 00CB8730
00CD1716     83C4 0C            add esp,0C
00CD1719     8985 4CD7FFFF      mov dword ptr ss:[ebp-28B4],eax                  ; kernel32.77E10000
00CD171F     83BD 4CD7FFFF 00   cmp dword ptr ss:[ebp-28B4],0
00CD1726     75 59              jnz short 00CD1781
00CD1728     8B4D 08            mov ecx,dword ptr ss:[ebp+8]
00CD172B     8B11               mov edx,dword ptr ds:[ecx]
00CD172D     C702 03000000      mov dword ptr ds:[edx],3
00CD1733     0FBE85 40D6FFFF    movsx eax,byte ptr ss:[ebp-29C0]
00CD173A     85C0               test eax,eax                                     ; kernel32.77E10000
00CD173C     74 0E              je short 00CD174C
00CD173E     8D8D 40D6FFFF      lea ecx,dword ptr ss:[ebp-29C0]
00CD1744     898D D0ACFFFF      mov dword ptr ss:[ebp+FFFFACD0],ecx              ; kernel32.77E18172
00CD174A     EB 0C              jmp short 00CD1758
00CD174C     8B95 3CD6FFFF      mov edx,dword ptr ss:[ebp-29C4]
00CD1752     8995 D0ACFFFF      mov dword ptr ss:[ebp+FFFFACD0],edx              ; ntdll.77FB2340
00CD1758     FF15 0433CF00      call dword ptr ds:[CF3304]                       ; ntdll.RtlGetLastWin32Error
00CD175E     50                 push eax                                         ; kernel32.77E10000
00CD175F     8B85 D0ACFFFF      mov eax,dword ptr ss:[ebp+FFFFACD0]
00CD1765     50                 push eax                                         ; kernel32.77E10000
00CD1766     68 1467CF00        push 0CF6714                                     ; ASCII "File ""%s"", error %d"
00CD176B     8B4D 08            mov ecx,dword ptr ss:[ebp+8]
00CD176E     8B51 04            mov edx,dword ptr ds:[ecx+4]
00CD1771     52                 push edx                                         ; ntdll.77FB2340
00CD1772     E8 67B80000        call 00CDCFDE
00CD1777     83C4 10            add esp,10
00CD177A     33C0               xor eax,eax                                      ; kernel32.77E10000
00CD177C     E9 BD120000        jmp 00CD2A3E
00CD1781     8B85 4CD7FFFF      mov eax,dword ptr ss:[ebp-28B4]
00CD1787     50                 push eax                                         ; kernel32.77E10000
00CD1788     E8 F352FEFF        call 00CB6A80
00CD178D     83C4 04            add esp,4
00CD1790     C785 48D7FFFF 0000>mov dword ptr ss:[ebp-28B8],0
00CD179A     8B0D EC0AD000      mov ecx,dword ptr ds:[D00AEC]                    ; fraps2.00400000
00CD17A0     898D B4ADFFFF      mov dword ptr ss:[ebp+FFFFADB4],ecx              ; kernel32.77E18172
00CD17A6     8B95 4CD7FFFF      mov edx,dword ptr ss:[ebp-28B4]
00CD17AC     3B95 B4ADFFFF      cmp edx,dword ptr ss:[ebp+FFFFADB4]
00CD17B2     75 0F              jnz short 00CD17C3
00CD17B4     C785 48D7FFFF B0C0>mov dword ptr ss:[ebp-28B8],0CFC0B0
00CD17BE     E9 D9000000        jmp 00CD189C
00CD17C3     C785 28D5FFFF 0000>mov dword ptr ss:[ebp-2AD8],0
00CD17CD     C785 24D5FFFF 3CC2>mov dword ptr ss:[ebp-2ADC],0CFC23C
00CD17D7     EB 1E              jmp short 00CD17F7
00CD17D9     8B85 24D5FFFF      mov eax,dword ptr ss:[ebp-2ADC]
00CD17DF     83C0 0C            add eax,0C
00CD17E2     8985 24D5FFFF      mov dword ptr ss:[ebp-2ADC],eax                  ; kernel32.77E10000
00CD17E8     8B8D 28D5FFFF      mov ecx,dword ptr ss:[ebp-2AD8]
00CD17EE     83C1 01            add ecx,1
00CD17F1     898D 28D5FFFF      mov dword ptr ss:[ebp-2AD8],ecx                  ; kernel32.77E18172
00CD17F7     8B95 24D5FFFF      mov edx,dword ptr ss:[ebp-2ADC]
00CD17FD     833A 00            cmp dword ptr ds:[edx],0
00CD1800     0F84 96000000      je 00CD189C
00CD1806     8B85 24D5FFFF      mov eax,dword ptr ss:[ebp-2ADC]
00CD180C     8B48 08            mov ecx,dword ptr ds:[eax+8]
00CD180F     83E1 01            and ecx,1
00CD1812     74 36              je short 00CD184A
00CD1814     BA 0E000000        mov edx,0E
00CD1819     C1E2 02            shl edx,2
00CD181C     A1 D40AD000        mov eax,dword ptr ds:[D00AD4]
00CD1821     8B0D D40AD000      mov ecx,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD1827     8B35 D40AD000      mov esi,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD182D     8B5E 1C            mov ebx,dword ptr ds:[esi+1C]
00CD1830     3319               xor ebx,dword ptr ds:[ecx]
00CD1832     331C10             xor ebx,dword ptr ds:[eax+edx]
00CD1835     81E3 80000000      and ebx,80
00CD183B     F7DB               neg ebx
00CD183D     1BDB               sbb ebx,ebx
00CD183F     F7DB               neg ebx
00CD1841     0FB6D3             movzx edx,bl
00CD1844     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD1846     74 02              je short 00CD184A
00CD1848   ^ EB 8F              jmp short 00CD17D9
00CD184A     A1 D40AD000        mov eax,dword ptr ds:[D00AD4]
00CD184F     8B0D D40AD000      mov ecx,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD1855     8B15 D40AD000      mov edx,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD185B     8B35 D40AD000      mov esi,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD1861     8BB6 80000000      mov esi,dword ptr ds:[esi+80]
00CD1867     3332               xor esi,dword ptr ds:[edx]                       ; ntdll.77FB2360
00CD1869     3371 2C            xor esi,dword ptr ds:[ecx+2C]
00CD186C     3370 24            xor esi,dword ptr ds:[eax+24]
00CD186F     8B85 28D5FFFF      mov eax,dword ptr ss:[ebp-2AD8]
00CD1875     8B0D 1C2FD000      mov ecx,dword ptr ds:[D02F1C]
00CD187B     333481             xor esi,dword ptr ds:[ecx+eax*4]
00CD187E     39B5 4CD7FFFF      cmp dword ptr ss:[ebp-28B4],esi                  ; fraps2.004B1368
00CD1884     75 11              jnz short 00CD1897
00CD1886     8B95 24D5FFFF      mov edx,dword ptr ss:[ebp-2ADC]
00CD188C     8B42 04            mov eax,dword ptr ds:[edx+4]
00CD188F     8985 48D7FFFF      mov dword ptr ss:[ebp-28B8],eax                  ; kernel32.77E10000
00CD1895     EB 05              jmp short 00CD189C
00CD1897   ^ E9 3DFFFFFF        jmp 00CD17D9
00CD189C     C685 57D7FFFF 00   mov byte ptr ss:[ebp-28A9],0
00CD18A3     83BD DCD9FFFF 00   cmp dword ptr ss:[ebp-2624],0
00CD18AA     75 34              jnz short 00CD18E0
00CD18AC     8A0D AC0AD000      mov cl,byte ptr ds:[D00AAC]
00CD18B2     888D B3ADFFFF      mov byte ptr ss:[ebp+FFFFADB3],cl
00CD18B8     0FB695 B3ADFFFF    movzx edx,byte ptr ss:[ebp+FFFFADB3]
00CD18BF     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD18C1     74 1D              je short 00CD18E0
00CD18C3     8B85 38D6FFFF      mov eax,dword ptr ss:[ebp-29C8]
00CD18C9     3B45 EC            cmp eax,dword ptr ss:[ebp-14]
00CD18CC     72 12              jb short 00CD18E0
00CD18CE     8B8D 38D6FFFF      mov ecx,dword ptr ss:[ebp-29C8]
00CD18D4     3B4D F4            cmp ecx,dword ptr ss:[ebp-C]
00CD18D7     73 07              jnb short 00CD18E0
00CD18D9     C685 57D7FFFF 01   mov byte ptr ss:[ebp-28A9],1
00CD18E0     8B95 58D7FFFF      mov edx,dword ptr ss:[ebp-28A8]
00CD18E6     83C2 01            add edx,1
00CD18E9     8995 58D7FFFF      mov dword ptr ss:[ebp-28A8],edx                  ; ntdll.77FB2340
00CD18EF     83BD DCD9FFFF 00   cmp dword ptr ss:[ebp-2624],0
00CD18F6     74 4D              je short 00CD1945
00CD18F8     8B85 38D6FFFF      mov eax,dword ptr ss:[ebp-29C8]
00CD18FE     2B85 7CDAFFFF      sub eax,dword ptr ss:[ebp-2584]
00CD1904     C1E8 02            shr eax,2
00CD1907     8985 20D5FFFF      mov dword ptr ss:[ebp-2AE0],eax                  ; kernel32.77E10000
00CD190D     8B8D 20D5FFFF      mov ecx,dword ptr ss:[ebp-2AE0]
00CD1913     8B95 DCD9FFFF      mov edx,dword ptr ss:[ebp-2624]
00CD1919     8D048A             lea eax,dword ptr ds:[edx+ecx*4]
00CD191C     8985 50DAFFFF      mov dword ptr ss:[ebp-25B0],eax                  ; kernel32.77E10000
00CD1922     8B8D 50DAFFFF      mov ecx,dword ptr ss:[ebp-25B0]
00CD1928     898D 84DBFFFF      mov dword ptr ss:[ebp-247C],ecx                  ; kernel32.77E18172
00CD192E     8B95 B0D9FFFF      mov edx,dword ptr ss:[ebp-2650]
00CD1934     8B85 DCD9FFFF      mov eax,dword ptr ss:[ebp-2624]
00CD193A     8D0C90             lea ecx,dword ptr ds:[eax+edx*4]
00CD193D     898D 68DAFFFF      mov dword ptr ss:[ebp-2598],ecx                  ; kernel32.77E18172
00CD1943     EB 68              jmp short 00CD19AD
00CD1945     0FB695 57D7FFFF    movzx edx,byte ptr ss:[ebp-28A9]
00CD194C     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD194E     74 3F              je short 00CD198F
00CD1950     33C9               xor ecx,ecx                                      ; kernel32.77E18172
00CD1952     8B85 58D7FFFF      mov eax,dword ptr ss:[ebp-28A8]
00CD1958     BA 04000000        mov edx,4
00CD195D     F7E2               mul edx                                          ; ntdll.77FB2340
00CD195F     0F90C1             seto cl
00CD1962     F7D9               neg ecx                                          ; kernel32.77E18172
00CD1964     0BC8               or ecx,eax                                       ; kernel32.77E10000
00CD1966     51                 push ecx                                         ; kernel32.77E18172
00CD1967     E8 43BA0000        call 00CDD3AF
00CD196C     83C4 04            add esp,4
00CD196F     8985 A8AEFFFF      mov dword ptr ss:[ebp+FFFFAEA8],eax              ; kernel32.77E10000
00CD1975     8B85 A8AEFFFF      mov eax,dword ptr ss:[ebp+FFFFAEA8]
00CD197B     8985 50DAFFFF      mov dword ptr ss:[ebp-25B0],eax                  ; kernel32.77E10000
00CD1981     8B8D 50DAFFFF      mov ecx,dword ptr ss:[ebp-25B0]
00CD1987     898D 84DBFFFF      mov dword ptr ss:[ebp-247C],ecx                  ; kernel32.77E18172
00CD198D     EB 1E              jmp short 00CD19AD
00CD198F     8B95 74DAFFFF      mov edx,dword ptr ss:[ebp-258C]
00CD1995     0395 38D6FFFF      add edx,dword ptr ss:[ebp-29C8]
00CD199B     8995 84DBFFFF      mov dword ptr ss:[ebp-247C],edx                  ; ntdll.77FB2340
00CD19A1     8B85 84DBFFFF      mov eax,dword ptr ss:[ebp-247C]
00CD19A7     8985 50DAFFFF      mov dword ptr ss:[ebp-25B0],eax                  ; kernel32.77E10000
00CD19AD     83BD DCD9FFFF 00   cmp dword ptr ss:[ebp-2624],0
00CD19B4     0F85 BD000000      jnz 00CD1A77
00CD19BA     8D8D 5CD7FFFF      lea ecx,dword ptr ss:[ebp-28A4]
00CD19C0     51                 push ecx                                         ; kernel32.77E18172
00CD19C1     6A 04              push 4
00CD19C3     8B95 58D7FFFF      mov edx,dword ptr ss:[ebp-28A8]
00CD19C9     C1E2 02            shl edx,2
00CD19CC     52                 push edx                                         ; ntdll.77FB2340
00CD19CD     8B85 74DAFFFF      mov eax,dword ptr ss:[ebp-258C]
00CD19D3     0385 38D6FFFF      add eax,dword ptr ss:[ebp-29C8]
00CD19D9     50                 push eax                                         ; kernel32.77E10000
00CD19DA     FF15 1831CF00      call dword ptr ds:[CF3118]                       ; kernel32.VirtualProtect
00CD19E0     6A 14              push 14
00CD19E2     E8 2CB40000        call 00CDCE13
00CD19E7     83C4 04            add esp,4
00CD19EA     8985 A4AEFFFF      mov dword ptr ss:[ebp+FFFFAEA4],eax              ; kernel32.77E10000
00CD19F0     83BD A4AEFFFF 00   cmp dword ptr ss:[ebp+FFFFAEA4],0
00CD19F7     74 59              je short 00CD1A52
00CD19F9     8B0D 8CA3D000      mov ecx,dword ptr ds:[D0A38C]
00CD19FF     898D ACADFFFF      mov dword ptr ss:[ebp+FFFFADAC],ecx              ; kernel32.77E18172
00CD1A05     8B95 74DAFFFF      mov edx,dword ptr ss:[ebp-258C]
00CD1A0B     0395 38D6FFFF      add edx,dword ptr ss:[ebp-29C8]
00CD1A11     8B85 A4AEFFFF      mov eax,dword ptr ss:[ebp+FFFFAEA4]
00CD1A17     8910               mov dword ptr ds:[eax],edx                       ; ntdll.77FB2340
00CD1A19     8B8D 58D7FFFF      mov ecx,dword ptr ss:[ebp-28A8]
00CD1A1F     C1E1 02            shl ecx,2
00CD1A22     8B95 A4AEFFFF      mov edx,dword ptr ss:[ebp+FFFFAEA4]
00CD1A28     894A 04            mov dword ptr ds:[edx+4],ecx                     ; kernel32.77E18172
00CD1A2B     8B85 A4AEFFFF      mov eax,dword ptr ss:[ebp+FFFFAEA4]
00CD1A31     C640 0C 00         mov byte ptr ds:[eax+C],0
00CD1A35     8B8D A4AEFFFF      mov ecx,dword ptr ss:[ebp+FFFFAEA4]
00CD1A3B     8B95 ACADFFFF      mov edx,dword ptr ss:[ebp+FFFFADAC]
00CD1A41     8951 10            mov dword ptr ds:[ecx+10],edx                    ; ntdll.77FB2340
00CD1A44     8B85 A4AEFFFF      mov eax,dword ptr ss:[ebp+FFFFAEA4]
00CD1A4A     8985 CCACFFFF      mov dword ptr ss:[ebp+FFFFACCC],eax              ; kernel32.77E10000
00CD1A50     EB 0A              jmp short 00CD1A5C
00CD1A52     C785 CCACFFFF 0000>mov dword ptr ss:[ebp+FFFFACCC],0
00CD1A5C     8B8D CCACFFFF      mov ecx,dword ptr ss:[ebp+FFFFACCC]
00CD1A62     890D 8CA3D000      mov dword ptr ds:[D0A38C],ecx                    ; kernel32.77E18172
00CD1A68     8B15 8CA3D000      mov edx,dword ptr ds:[D0A38C]
00CD1A6E     8B85 5CD7FFFF      mov eax,dword ptr ss:[ebp-28A4]
00CD1A74     8942 08            mov dword ptr ds:[edx+8],eax                     ; kernel32.77E10000
00CD1A77     C785 60D7FFFF 0000>mov dword ptr ss:[ebp-28A0],0
00CD1A81     FF15 4033CF00      call dword ptr ds:[CF3340]                       ; kernel32.GetTickCount
00CD1A87     8985 50D7FFFF      mov dword ptr ss:[ebp-28B0],eax                  ; kernel32.77E10000
00CD1A8D     B9 01000000        mov ecx,1
00CD1A92     85C9               test ecx,ecx                                     ; kernel32.77E18172
00CD1A94     0F84 C4030000      je 00CD1E5E
00CD1A9A     8B95 8CDBFFFF      mov edx,dword ptr ss:[ebp-2474]
00CD1AA0     66:8B02            mov ax,word ptr ds:[edx]
00CD1AA3     66:8985 1CD5FFFF   mov word ptr ss:[ebp-2AE4],ax
00CD1AAA     8B8D 8CDBFFFF      mov ecx,dword ptr ss:[ebp-2474]
00CD1AB0     83C1 02            add ecx,2
00CD1AB3     898D 8CDBFFFF      mov dword ptr ss:[ebp-2474],ecx                  ; kernel32.77E18172
00CD1AB9     0FB795 1CD5FFFF    movzx edx,word ptr ss:[ebp-2AE4]
00CD1AC0     52                 push edx                                         ; ntdll.77FB2340
00CD1AC1     8B85 8CDBFFFF      mov eax,dword ptr ss:[ebp-2474]
00CD1AC7     50                 push eax                                         ; kernel32.77E10000
00CD1AC8     8D8D 18CDFFFF      lea ecx,dword ptr ss:[ebp-32E8]
00CD1ACE     51                 push ecx                                         ; kernel32.77E18172
00CD1ACF     E8 7CAF0000        call 00CDCA50
00CD1AD4     83C4 0C            add esp,0C
00CD1AD7     0FB795 1CD5FFFF    movzx edx,word ptr ss:[ebp-2AE4]
00CD1ADE     0395 8CDBFFFF      add edx,dword ptr ss:[ebp-2474]
00CD1AE4     8995 8CDBFFFF      mov dword ptr ss:[ebp-2474],edx                  ; ntdll.77FB2340
00CD1AEA     66:C785 0CC5FFFF 0>mov word ptr ss:[ebp-3AF4],0
00CD1AF3     A0 5835CF00        mov al,byte ptr ds:[CF3558]
00CD1AF8     8885 10C5FFFF      mov byte ptr ss:[ebp-3AF0],al
00CD1AFE     68 FF070000        push 7FF
00CD1B03     6A 00              push 0
00CD1B05     8D8D 11C5FFFF      lea ecx,dword ptr ss:[ebp-3AEF]
00CD1B0B     51                 push ecx                                         ; kernel32.77E18172
00CD1B0C     E8 7FB30000        call 00CDCE90
00CD1B11     83C4 0C            add esp,0C
00CD1B14     0FB795 1CD5FFFF    movzx edx,word ptr ss:[ebp-2AE4]
00CD1B1B     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD1B1D     74 70              je short 00CD1B8F
00CD1B1F     8D8D CCD9FFFF      lea ecx,dword ptr ss:[ebp-2634]
00CD1B25     E8 E63CFDFF        call 00CA5810
00CD1B2A     8985 08C5FFFF      mov dword ptr ss:[ebp-3AF8],eax                  ; kernel32.77E10000
00CD1B30     6A 00              push 0
00CD1B32     0FB785 1CD5FFFF    movzx eax,word ptr ss:[ebp-2AE4]
00CD1B39     50                 push eax                                         ; kernel32.77E10000
00CD1B3A     8D8D 18CDFFFF      lea ecx,dword ptr ss:[ebp-32E8]
00CD1B40     51                 push ecx                                         ; kernel32.77E18172
00CD1B41     8B95 08C5FFFF      mov edx,dword ptr ss:[ebp-3AF8]
00CD1B47     52                 push edx                                         ; ntdll.77FB2340
00CD1B48     E8 A3A80000        call 00CDC3F0
00CD1B4D     83C4 10            add esp,10
00CD1B50     0FB685 18CDFFFF    movzx eax,byte ptr ss:[ebp-32E8]
00CD1B57     3D FF000000        cmp eax,0FF
00CD1B5C     75 10              jnz short 00CD1B6E
00CD1B5E     66:8B8D 19CDFFFF   mov cx,word ptr ss:[ebp-32E7]
00CD1B65     66:898D 0CC5FFFF   mov word ptr ss:[ebp-3AF4],cx
00CD1B6C     EB 21              jmp short 00CD1B8F
00CD1B6E     0FBE95 18CDFFFF    movsx edx,byte ptr ss:[ebp-32E8]
00CD1B75     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD1B77     74 16              je short 00CD1B8F
00CD1B79     8D85 18CDFFFF      lea eax,dword ptr ss:[ebp-32E8]
00CD1B7F     50                 push eax                                         ; kernel32.77E10000
00CD1B80     8D8D 10C5FFFF      lea ecx,dword ptr ss:[ebp-3AF0]
00CD1B86     51                 push ecx                                         ; kernel32.77E18172
00CD1B87     E8 84B50000        call 00CDD110
00CD1B8C     83C4 08            add esp,8
00CD1B8F     C785 14CDFFFF 0000>mov dword ptr ss:[ebp-32EC],0
00CD1B99     0FB795 0CC5FFFF    movzx edx,word ptr ss:[ebp-3AF4]
00CD1BA0     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD1BA2     74 6E              je short 00CD1C12
00CD1BA4     83BD 48D7FFFF 00   cmp dword ptr ss:[ebp-28B8],0
00CD1BAB     74 51              je short 00CD1BFE
00CD1BAD     8B85 48D7FFFF      mov eax,dword ptr ss:[ebp-28B8]
00CD1BB3     8985 04C5FFFF      mov dword ptr ss:[ebp-3AFC],eax                  ; kernel32.77E10000
00CD1BB9     EB 0F              jmp short 00CD1BCA
00CD1BBB     8B8D 04C5FFFF      mov ecx,dword ptr ss:[ebp-3AFC]
00CD1BC1     83C1 0C            add ecx,0C
00CD1BC4     898D 04C5FFFF      mov dword ptr ss:[ebp-3AFC],ecx                  ; kernel32.77E18172
00CD1BCA     8B95 04C5FFFF      mov edx,dword ptr ss:[ebp-3AFC]
00CD1BD0     837A 08 00         cmp dword ptr ds:[edx+8],0
00CD1BD4     74 28              je short 00CD1BFE
00CD1BD6     0FB785 0CC5FFFF    movzx eax,word ptr ss:[ebp-3AF4]
00CD1BDD     8B8D 04C5FFFF      mov ecx,dword ptr ss:[ebp-3AFC]
00CD1BE3     0FB751 04          movzx edx,word ptr ds:[ecx+4]
00CD1BE7     3BC2               cmp eax,edx                                      ; ntdll.77FB2340
00CD1BE9     75 11              jnz short 00CD1BFC
00CD1BEB     8B85 04C5FFFF      mov eax,dword ptr ss:[ebp-3AFC]
00CD1BF1     8B48 08            mov ecx,dword ptr ds:[eax+8]
00CD1BF4     898D 14CDFFFF      mov dword ptr ss:[ebp-32EC],ecx                  ; kernel32.77E18172
00CD1BFA     EB 02              jmp short 00CD1BFE
00CD1BFC   ^ EB BD              jmp short 00CD1BBB
00CD1BFE     8B95 60D7FFFF      mov edx,dword ptr ss:[ebp-28A0]
00CD1C04     83C2 01            add edx,1
00CD1C07     8995 60D7FFFF      mov dword ptr ss:[ebp-28A0],edx                  ; ntdll.77FB2340
00CD1C0D     E9 DA000000        jmp 00CD1CEC
00CD1C12     0FBE85 10C5FFFF    movsx eax,byte ptr ss:[ebp-3AF0]
00CD1C19     85C0               test eax,eax                                     ; kernel32.77E10000
00CD1C1B     0F84 8D000000      je 00CD1CAE
00CD1C21     83BD 48D7FFFF 00   cmp dword ptr ss:[ebp-28B8],0
00CD1C28     74 73              je short 00CD1C9D
00CD1C2A     8B8D 48D7FFFF      mov ecx,dword ptr ss:[ebp-28B8]
00CD1C30     898D 00C5FFFF      mov dword ptr ss:[ebp-3B00],ecx                  ; kernel32.77E18172
00CD1C36     EB 0F              jmp short 00CD1C47
00CD1C38     8B95 00C5FFFF      mov edx,dword ptr ss:[ebp-3B00]
00CD1C3E     83C2 0C            add edx,0C
00CD1C41     8995 00C5FFFF      mov dword ptr ss:[ebp-3B00],edx                  ; ntdll.77FB2340
00CD1C47     8B85 00C5FFFF      mov eax,dword ptr ss:[ebp-3B00]
00CD1C4D     8378 08 00         cmp dword ptr ds:[eax+8],0
00CD1C51     74 4A              je short 00CD1C9D
00CD1C53     68 00010000        push 100
00CD1C58     8D8D 00C4FFFF      lea ecx,dword ptr ss:[ebp-3C00]
00CD1C5E     51                 push ecx                                         ; kernel32.77E18172
00CD1C5F     8B95 00C5FFFF      mov edx,dword ptr ss:[ebp-3B00]
00CD1C65     8B02               mov eax,dword ptr ds:[edx]                       ; ntdll.77FB2360
00CD1C67     50                 push eax                                         ; kernel32.77E10000
00CD1C68     E8 E3AC0000        call 00CDC950
00CD1C6D     83C4 0C            add esp,0C
00CD1C70     8D8D 00C4FFFF      lea ecx,dword ptr ss:[ebp-3C00]
00CD1C76     51                 push ecx                                         ; kernel32.77E18172
00CD1C77     8D95 10C5FFFF      lea edx,dword ptr ss:[ebp-3AF0]
00CD1C7D     52                 push edx                                         ; ntdll.77FB2340
00CD1C7E     E8 56ED0000        call 00CE09D9
00CD1C83     83C4 08            add esp,8
00CD1C86     85C0               test eax,eax                                     ; kernel32.77E10000
00CD1C88     75 11              jnz short 00CD1C9B
00CD1C8A     8B85 00C5FFFF      mov eax,dword ptr ss:[ebp-3B00]
00CD1C90     8B48 08            mov ecx,dword ptr ds:[eax+8]
00CD1C93     898D 14CDFFFF      mov dword ptr ss:[ebp-32EC],ecx                  ; kernel32.77E18172
00CD1C99     EB 02              jmp short 00CD1C9D
00CD1C9B   ^ EB 9B              jmp short 00CD1C38
00CD1C9D     8B95 60D7FFFF      mov edx,dword ptr ss:[ebp-28A0]
00CD1CA3     83C2 01            add edx,1
00CD1CA6     8995 60D7FFFF      mov dword ptr ss:[ebp-28A0],edx                  ; ntdll.77FB2340
00CD1CAC     EB 3E              jmp short 00CD1CEC
00CD1CAE     68 00010000        push 100
00CD1CB3     8D8D 58DAFFFF      lea ecx,dword ptr ss:[ebp-25A8]
00CD1CB9     E8 F286FCFF        call 00C9A3B0
00CD1CBE     0FB6C0             movzx eax,al
00CD1CC1     99                 cdq
00CD1CC2     B9 14000000        mov ecx,14
00CD1CC7     F7F9               idiv ecx                                         ; kernel32.77E18172
00CD1CC9     8B85 50DAFFFF      mov eax,dword ptr ss:[ebp-25B0]
00CD1CCF     8B8C95 F8D9FFFF    mov ecx,dword ptr ss:[ebp+edx*4-2608]
00CD1CD6     8908               mov dword ptr ds:[eax],ecx                       ; kernel32.77E18172
00CD1CD8     8B95 50DAFFFF      mov edx,dword ptr ss:[ebp-25B0]
00CD1CDE     83C2 04            add edx,4
00CD1CE1     8995 50DAFFFF      mov dword ptr ss:[ebp-25B0],edx                  ; ntdll.77FB2340
00CD1CE7     E9 72010000        jmp 00CD1E5E
00CD1CEC     83BD 14CDFFFF 00   cmp dword ptr ss:[ebp-32EC],0
00CD1CF3     75 44              jnz short 00CD1D39
00CD1CF5     0FB785 0CC5FFFF    movzx eax,word ptr ss:[ebp-3AF4]
00CD1CFC     85C0               test eax,eax                                     ; kernel32.77E10000
00CD1CFE     74 0F              je short 00CD1D0F
00CD1D00     0FB78D 0CC5FFFF    movzx ecx,word ptr ss:[ebp-3AF4]
00CD1D07     898D C8ACFFFF      mov dword ptr ss:[ebp+FFFFACC8],ecx              ; kernel32.77E18172
00CD1D0D     EB 0C              jmp short 00CD1D1B
00CD1D0F     8D95 10C5FFFF      lea edx,dword ptr ss:[ebp-3AF0]
00CD1D15     8995 C8ACFFFF      mov dword ptr ss:[ebp+FFFFACC8],edx              ; ntdll.77FB2340
00CD1D1B     6A 01              push 1
00CD1D1D     8B85 C8ACFFFF      mov eax,dword ptr ss:[ebp+FFFFACC8]
00CD1D23     50                 push eax                                         ; kernel32.77E10000
00CD1D24     8B8D 4CD7FFFF      mov ecx,dword ptr ss:[ebp-28B4]
00CD1D2A     51                 push ecx                                         ; kernel32.77E18172
00CD1D2B     E8 905AFEFF        call 00CB77C0
00CD1D30     83C4 0C            add esp,0C
00CD1D33     8985 14CDFFFF      mov dword ptr ss:[ebp-32EC],eax                  ; kernel32.77E10000
00CD1D39     83BD 14CDFFFF 00   cmp dword ptr ss:[ebp-32EC],0
00CD1D40     75 44              jnz short 00CD1D86
00CD1D42     0FB795 0CC5FFFF    movzx edx,word ptr ss:[ebp-3AF4]
00CD1D49     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD1D4B     74 0F              je short 00CD1D5C
00CD1D4D     0FB785 0CC5FFFF    movzx eax,word ptr ss:[ebp-3AF4]
00CD1D54     8985 C4ACFFFF      mov dword ptr ss:[ebp+FFFFACC4],eax              ; kernel32.77E10000
00CD1D5A     EB 0C              jmp short 00CD1D68
00CD1D5C     8D8D 10C5FFFF      lea ecx,dword ptr ss:[ebp-3AF0]
00CD1D62     898D C4ACFFFF      mov dword ptr ss:[ebp+FFFFACC4],ecx              ; kernel32.77E18172
00CD1D68     6A 00              push 0
00CD1D6A     8B95 C4ACFFFF      mov edx,dword ptr ss:[ebp+FFFFACC4]
00CD1D70     52                 push edx                                         ; ntdll.77FB2340
00CD1D71     8B85 4CD7FFFF      mov eax,dword ptr ss:[ebp-28B4]
00CD1D77     50                 push eax                                         ; kernel32.77E10000
00CD1D78     E8 435AFEFF        call 00CB77C0
00CD1D7D     83C4 0C            add esp,0C
00CD1D80     8985 14CDFFFF      mov dword ptr ss:[ebp-32EC],eax                  ; kernel32.77E10000
00CD1D86     83BD 14CDFFFF 00   cmp dword ptr ss:[ebp-32EC],0
00CD1D8D     0F85 9B000000      jnz 00CD1E2E
00CD1D93     0FB78D 0CC5FFFF    movzx ecx,word ptr ss:[ebp-3AF4]
00CD1D9A     85C9               test ecx,ecx                                     ; kernel32.77E18172
00CD1D9C     74 55              je short 00CD1DF3
00CD1D9E     FF15 0433CF00      call dword ptr ds:[CF3304]                       ; ntdll.RtlGetLastWin32Error
00CD1DA4     83F8 32            cmp eax,32
00CD1DA7     75 0C              jnz short 00CD1DB5
00CD1DA9     C785 14CDFFFF B077>mov dword ptr ss:[ebp-32EC],0CB77B0
00CD1DB3     EB 3C              jmp short 00CD1DF1
00CD1DB5     8B55 08            mov edx,dword ptr ss:[ebp+8]
00CD1DB8     8B02               mov eax,dword ptr ds:[edx]                       ; ntdll.77FB2360
00CD1DBA     C700 03000000      mov dword ptr ds:[eax],3
00CD1DC0     FF15 0433CF00      call dword ptr ds:[CF3304]                       ; ntdll.RtlGetLastWin32Error
00CD1DC6     50                 push eax                                         ; kernel32.77E10000
00CD1DC7     0FB78D 0CC5FFFF    movzx ecx,word ptr ss:[ebp-3AF4]
00CD1DCE     51                 push ecx                                         ; kernel32.77E18172
00CD1DCF     8B95 3CD6FFFF      mov edx,dword ptr ss:[ebp-29C4]
00CD1DD5     52                 push edx                                         ; ntdll.77FB2340
00CD1DD6     68 F066CF00        push 0CF66F0                                     ; ASCII "File ""%s"", ordinal %d (error %d)"
00CD1DDB     8B45 08            mov eax,dword ptr ss:[ebp+8]
00CD1DDE     8B48 04            mov ecx,dword ptr ds:[eax+4]
00CD1DE1     51                 push ecx                                         ; kernel32.77E18172
00CD1DE2     E8 F7B10000        call 00CDCFDE
00CD1DE7     83C4 14            add esp,14
00CD1DEA     33C0               xor eax,eax                                      ; kernel32.77E10000
00CD1DEC     E9 4D0C0000        jmp 00CD2A3E
00CD1DF1     EB 3B              jmp short 00CD1E2E
00CD1DF3     8B55 08            mov edx,dword ptr ss:[ebp+8]
00CD1DF6     8B02               mov eax,dword ptr ds:[edx]                       ; ntdll.77FB2360
00CD1DF8     C700 03000000      mov dword ptr ds:[eax],3
00CD1DFE     FF15 0433CF00      call dword ptr ds:[CF3304]                       ; ntdll.RtlGetLastWin32Error
00CD1E04     50                 push eax                                         ; kernel32.77E10000
00CD1E05     8D8D 10C5FFFF      lea ecx,dword ptr ss:[ebp-3AF0]
00CD1E0B     51                 push ecx                                         ; kernel32.77E18172
00CD1E0C     8B95 3CD6FFFF      mov edx,dword ptr ss:[ebp-29C4]
00CD1E12     52                 push edx                                         ; ntdll.77FB2340
00CD1E13     68 CC66CF00        push 0CF66CC                                     ; ASCII "File ""%s"", function ""%s"" (error 

%d)"
00CD1E18     8B45 08            mov eax,dword ptr ss:[ebp+8]
00CD1E1B     8B48 04            mov ecx,dword ptr ds:[eax+4]
00CD1E1E     51                 push ecx                                         ; kernel32.77E18172
00CD1E1F     E8 BAB10000        call 00CDCFDE
00CD1E24     83C4 14            add esp,14
00CD1E27     33C0               xor eax,eax                                      ; kernel32.77E10000
00CD1E29     E9 100C0000        jmp 00CD2A3E
00CD1E2E     8B95 50DAFFFF      mov edx,dword ptr ss:[ebp-25B0]
00CD1E34     3B95 68DAFFFF      cmp edx,dword ptr ss:[ebp-2598]
00CD1E3A     73 1D              jnb short 00CD1E59
00CD1E3C     8B85 50DAFFFF      mov eax,dword ptr ss:[ebp-25B0]
00CD1E42     8B8D 14CDFFFF      mov ecx,dword ptr ss:[ebp-32EC]
00CD1E48     8908               mov dword ptr ds:[eax],ecx                       ; kernel32.77E18172
00CD1E4A     8B95 50DAFFFF      mov edx,dword ptr ss:[ebp-25B0]
00CD1E50     83C2 04            add edx,4
00CD1E53     8995 50DAFFFF      mov dword ptr ss:[ebp-25B0],edx                  ; ntdll.77FB2340
00CD1E59   ^ E9 2FFCFFFF        jmp 00CD1A8D
00CD1E5E     FF15 4033CF00      call dword ptr ds:[CF3340]                       ; kernel32.GetTickCount
00CD1E64     2B85 50D7FFFF      sub eax,dword ptr ss:[ebp-28B0]
00CD1E6A     8B8D 60D7FFFF      mov ecx,dword ptr ss:[ebp-28A0]
00CD1E70     6BC9 32            imul ecx,ecx,32                                  ; kernel32.77E18172
00CD1E73     81C1 D0070000      add ecx,7D0
00CD1E79     3BC1               cmp eax,ecx                                      ; kernel32.77E18172
00CD1E7B     76 07              jbe short 00CD1E84
00CD1E7D     C685 CBD9FFFF 01   mov byte ptr ss:[ebp-2635],1
00CD1E84     83BD DCD9FFFF 00   cmp dword ptr ss:[ebp-2624],0
00CD1E8B     0F85 92000000      jnz 00CD1F23
00CD1E91     0FB695 57D7FFFF    movzx edx,byte ptr ss:[ebp-28A9]
00CD1E98     85D2               test edx,edx                                     ; ntdll.77FB2340
00CD1E9A     0F84 83000000      je 00CD1F23
00CD1EA0     6A 00              push 0
00CD1EA2     8B85 58D7FFFF      mov eax,dword ptr ss:[ebp-28A8]
00CD1EA8     C1E0 02            shl eax,2
00CD1EAB     50                 push eax                                         ; kernel32.77E10000
00CD1EAC     8B8D 74DAFFFF      mov ecx,dword ptr ss:[ebp-258C]
00CD1EB2     038D 38D6FFFF      add ecx,dword ptr ss:[ebp-29C8]
00CD1EB8     51                 push ecx                                         ; kernel32.77E18172
00CD1EB9     E8 E21B0000        call 00CD3AA0
00CD1EBE     83C4 0C            add esp,0C
00CD1EC1     8B95 58D7FFFF      mov edx,dword ptr ss:[ebp-28A8]
00CD1EC7     C1E2 02            shl edx,2
00CD1ECA     52                 push edx                                         ; ntdll.77FB2340
00CD1ECB     8B85 84DBFFFF      mov eax,dword ptr ss:[ebp-247C]
00CD1ED1     50                 push eax                                         ; kernel32.77E10000
00CD1ED2     8B8D 74DAFFFF      mov ecx,dword ptr ss:[ebp-258C]
00CD1ED8     038D 38D6FFFF      add ecx,dword ptr ss:[ebp-29C8]
00CD1EDE     51                 push ecx                                         ; kernel32.77E18172
00CD1EDF     E8 6CAB0000        call 00CDCA50
00CD1EE4     83C4 0C            add esp,0C
00CD1EE7     6A 01              push 1
00CD1EE9     8B95 58D7FFFF      mov edx,dword ptr ss:[ebp-28A8]
00CD1EEF     C1E2 02            shl edx,2
00CD1EF2     52                 push edx                                         ; ntdll.77FB2340
00CD1EF3     8B85 74DAFFFF      mov eax,dword ptr ss:[ebp-258C]
00CD1EF9     0385 38D6FFFF      add eax,dword ptr ss:[ebp-29C8]
00CD1EFF     50                 push eax                                         ; kernel32.77E10000
00CD1F00     E8 9B1B0000        call 00CD3AA0
00CD1F05     83C4 0C            add esp,0C
00CD1F08     8B8D 84DBFFFF      mov ecx,dword ptr ss:[ebp-247C]
00CD1F0E     898D A0AEFFFF      mov dword ptr ss:[ebp+FFFFAEA0],ecx              ; kernel32.77E18172
00CD1F14     8B95 A0AEFFFF      mov edx,dword ptr ss:[ebp+FFFFAEA0]
00CD1F1A     52                 push edx                                         ; ntdll.77FB2340
00CD1F1B     E8 44B40000        call 00CDD364
00CD1F20     83C4 04            add esp,4
00CD1F23   ^ E9 91F6FFFF        jmp 00CD15B9
00CD1F28     8B85 88DBFFFF      mov eax,dword ptr ss:[ebp-2478]
//在此设置断点即可解密至此,解密IAT告一段落。
---------------------------------------------------------------------------------------------------

二、OEP:飞向光明之巅

BP GetCurrentThreadId [ESP]<10000000
Shift+F9运行复制内容到剪贴板代码:
77E119F7 k>  64:A1 18000000     mov eax,dword ptr fs:[18]
//断在这里取消该断点 F8
77E119FD     8B40 24            mov eax,dword ptr ds:[eax+24]
77E11A00     C3                 retn复制内容到剪贴板代码:
00CB735C     50                 push eax
00CB735D     8B4D FC            mov ecx,dword ptr ss:[ebp-4]
00CB7360     51                 push ecx                                         ; kernel32.77E1673A
00CB7361     E8 0A000000        call 00CB7370
00CB7366     83C4 0C            add esp,0C
00CB7369     8BE5               mov esp,ebp
00CB736B     5D                 pop ebp
00CB736C     C3                 retn复制内容到剪贴板代码:
00CD56C6     6A 00              push 0
00CD56C8     E8 F38DFEFF        call 00CBE4C0
00CD56CD     83C4 04            add esp,4
00CD56D0     B9 8804D000        mov ecx,0D00488
00CD56D5     E8 D658FCFF        call 00C9AFB0
00CD56DA     0FB6D0             movzx edx,al
00CD56DD     85D2               test edx,edx
00CD56DF     74 0C              je short 00CD56ED
00CD56E1     6A 01              push 1
00CD56E3     B9 8804D000        mov ecx,0D00488
00CD56E8     E8 633BFDFF        call 00CA9250
00CD56ED     C705 38C7CF00 586B>mov dword ptr ds:[CFC738],0CF6B58
00CD56F7     B9 80CCD000        mov ecx,0D0CC80
00CD56FC     E8 3F730000        call 00CDCA40
00CD5701     C745 F0 00000000   mov dword ptr ss:[ebp-10],0
00CD5708     8D45 E8            lea eax,dword ptr ss:[ebp-18]
00CD570B     50                 push eax
00CD570C     68 E057CD00        push 0CD57E0
00CD5711     FF15 4401D000      call dword ptr ds:[D00144]
00CD5717     83C4 08            add esp,8
00CD571A     8B0D EC0AD000      mov ecx,dword ptr ds:[D00AEC]                    ; fraps2.00400000
00CD5720     894D E4            mov dword ptr ss:[ebp-1C],ecx
00CD5723     BA 02000000        mov edx,2
00CD5728     C1E2 02            shl edx,2
00CD572B     A1 D40AD000        mov eax,dword ptr ds:[D00AD4]
00CD5730     8B0D D40AD000      mov ecx,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD5736     8B35 D40AD000      mov esi,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD573C     8B76 7C            mov esi,dword ptr ds:[esi+7C]
00CD573F     3331               xor esi,dword ptr ds:[ecx]
00CD5741     333410             xor esi,dword ptr ds:[eax+edx]
00CD5744     0375 E4            add esi,dword ptr ss:[ebp-1C]                    ; fraps2.004B8CD0
00CD5747     8975 F4            mov dword ptr ss:[ebp-C],esi
00CD574A     8B55 08            mov edx,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD574D     833A 00            cmp dword ptr ds:[edx],0
00CD5750     75 3D              jnz short 00CD578F
00CD5752     A1 D40AD000        mov eax,dword ptr ds:[D00AD4]
00CD5757     8B0D D40AD000      mov ecx,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD575D     8B50 4C            mov edx,dword ptr ds:[eax+4C]
00CD5760     3311               xor edx,dword ptr ds:[ecx]
00CD5762     A1 D40AD000        mov eax,dword ptr ds:[D00AD4]
00CD5767     3350 0C            xor edx,dword ptr ds:[eax+C]
00CD576A     8955 E0            mov dword ptr ss:[ebp-20],edx
00CD576D     8B4D 08            mov ecx,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD5770     8B51 18            mov edx,dword ptr ds:[ecx+18]
00CD5773     52                 push edx
00CD5774     8B45 08            mov eax,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD5777     8B48 14            mov ecx,dword ptr ds:[eax+14]
00CD577A     51                 push ecx
00CD577B     8B55 08            mov edx,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD577E     8B42 10            mov eax,dword ptr ds:[edx+10]
00CD5781     50                 push eax
00CD5782     8B4D F4            mov ecx,dword ptr ss:[ebp-C]
00CD5785     2B4D E0            sub ecx,dword ptr ss:[ebp-20]                    ; fraps2.00489CF0
00CD5788     FFD1               call ecx
00CD578A     8945 FC            mov dword ptr ss:[ebp-4],eax
00CD578D     EB 45              jmp short 00CD57D4
00CD578F     8B55 08            mov edx,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD5792     833A 01            cmp dword ptr ds:[edx],1
00CD5795     75 3D              jnz short 00CD57D4
00CD5797     A1 D40AD000        mov eax,dword ptr ds:[D00AD4]
00CD579C     8B0D D40AD000      mov ecx,dword ptr ds:[D00AD4]                    ; fraps2.004B1368
00CD57A2     8B50 4C            mov edx,dword ptr ds:[eax+4C]
00CD57A5     3311               xor edx,dword ptr ds:[ecx]
00CD57A7     A1 D40AD000        mov eax,dword ptr ds:[D00AD4]
00CD57AC     3350 0C            xor edx,dword ptr ds:[eax+C]
00CD57AF     8955 DC            mov dword ptr ss:[ebp-24],edx
00CD57B2     8B4D 08            mov ecx,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD57B5     8B51 04            mov edx,dword ptr ds:[ecx+4]
00CD57B8     52                 push edx
00CD57B9     8B45 08            mov eax,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD57BC     8B48 08            mov ecx,dword ptr ds:[eax+8]
00CD57BF     51                 push ecx
00CD57C0     6A 00              push 0
00CD57C2     8B55 08            mov edx,dword ptr ss:[ebp+8]                     ; fraps2.004B7E48
00CD57C5     8B42 0C            mov eax,dword ptr ds:[edx+C]
00CD57C8     50                 push eax
00CD57C9     8B4D F4            mov ecx,dword ptr ss:[ebp-C]
00CD57CC     2B4D DC            sub ecx,dword ptr ss:[ebp-24]
00CD57CF     FFD1               call ecx
//前辈的经验告诉我们这里就是OEP->F7跟进复制内容到剪贴板代码:
0040FCDA     E8 37470000        call 00414416                                    ; fraps2.00414416
//OEP!光明之巅
0040FCDF   ^ E9 16FEFFFF        jmp 0040FAFA                                     ; fraps2.0040FAFA-复制内容到剪贴板代码:
00414416     55                 push ebp                                         ; (Initial CPU selection)
00414417     8BEC               mov ebp,esp
00414419     83EC 10            sub esp,10
0041441C     A1 60F24300        mov eax,dword ptr ds:[43F260]
00414421     8365 F8 00         and dword ptr ss:[ebp-8],0
00414425     8365 FC 00         and dword ptr ss:[ebp-4],0
00414429   - E9 2A804101        jmp 0182C458
0041442E     91                 xchg eax,ecx                                     ; fraps2.0040FCDA
0041442F     91                 xchg eax,ecx                                     ; fraps2.0040FCDA
00414430     3BC7               cmp eax,edi
00414432   - E9 38804101        jmp 0182C46F
00414437     74 0D              je short 00414446                                ; fraps2.00414446
00414439     85C3               test ebx,eax                                     ; fraps2.00400000
0041443B     74 09              je short 00414446                                ; fraps2.00414446
0041443D   - E9 3D804101        jmp 0182C47F
00414442     97                 xchg eax,edi
00414443     97                 xchg eax,edi
00414444     EB 60              jmp short 004144A6                               ; fraps2.004144A6
00414446     56                 push esi
00414447     8D45 F8            lea eax,dword ptr ss:[ebp-8]
0041444A     50                 push eax                                         ; fraps2.00400000
0041444B     FF15 AC4AE300      call dword ptr ds:[E34AAC]                       ; kernel32.GetSystemTimeAsFileTime
00414451     8B75 FC            mov esi,dword ptr ss:[ebp-4]
00414454     3375 F8            xor esi,dword ptr ss:[ebp-8]                     ; fraps2.00473AA0
00414457     FF15 584FE300      call dword ptr ds:[E34F58]                       ; kernel32.GetCurrentProcessId
0041445D     33F0               xor esi,eax                                      ; fraps2.00400000选择0041444B->右键->Follow->Momery Address
上下搜索下IAT基址和大小,整理得:

OEP:0040FCDA
IAT Rva:00E34A74
IAT Size:560 (呆会使用ArmInline修复会使用到)
----------------------------------------------------------------------------------------------------

三.Code Splicing和Import Table Elimination的修复

1.Code Splicing的修复
现在该ArmInline登场了,fly大侠曾在《Armadillo加壳版本号和保护方式的简单判断方法》说过:“Code Splicing和Import Table 

Elimination需要你去看。ArmInline修复这些很方便,虽然有些bug”
我是菜鸟,我没发现这里这里有Code Splicing。使用ArmInline的默认数据进行代码拼接。

拼接代码起点:2490000
拼接代码长度:10000

----------------
2147个拼接已修复
修补成功
----------------
2.Import Table Elimination的修复
查看ArmInline的默认修复数据.
--------------------
现有IAT的基:E34A74
现有IAT的大小:3BC
IAT的新基:451000
--------------------
比较下我们上面手工获取的数据,发现IAT的大小有问题。手工修改下ArmInline的IAT大小为560。
点击 变基IAT
--------------------
758个dll调用
204个函数来自8个DLL
758个dll调用已重定象
修补成功
--------------------
现在运行LordPE修正ImageSize后完全Dump这个进程。得到dumped.exe
-------------------------------------------------------------------------------------

四.脱壳后PE的修复和优化

-------------------------------
运行ImportREC,把OEP改为0000FCDA,点IAT AutoSearch、Get Import,可以得到整齐的输入表。
---------------------
OEP:0000FCDA
RVA:00051000
SIZE:00000350
---------------------
修复跨平台问题,用ImportREC修正如下
--------------------
ntdll.dll RtlFreeHeap -> kernel32.dll HeapFree
ntdll.dll RtlGetLastWin32Error -> kernel32.dll GetLastError
ntdll.dll RtlSetLastWin32Error -> kernel32.dll SetLastError

--------------------
OK NOW!
为了让程序更加美观点,我就不直接添加区段。Winhex打开dumped.exe,找到一片空白天空。复制内容到剪贴板代码:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
0001F190   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0001F1A0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0001F1B0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0001F1C0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................在ImportREC的New Import Infos,填写
---------------
RVA:0001F1A0
Size:00000F6C[ImportREC自动获取]
---------------
Fix Dump后,运行良好.

把脱壳后的文件载入 OD,Alt+M 打开内存映射窗口,从 00401000 到 00551000 这 8 个段全部下 F2 断点。
然后 Shift+F9 直到程序完全运行后再次Alt+M看看哪几个断点已经不存在了,剩下还有断点的这几个段就是无用区段了。 这里分别是:.adata .data1 .pdata LordPE删除上面几个区段后重建下 PE 就可以了! 优化后程序大小为:1.87MB ---------------------------------------------------------------------- 五.写在最后 对壳倒没什么可说的,需要有更扎实的基础才能继续完成对它的分析!感谢machenglin老师的耐心指导!!! 附件地址:http://momery.0wei.com/attachment/1192696531_0.rar
上一篇   下一篇