[ACProtect]-ConTrolPTZ.exe
 

标题:[ACProtect]-ConTrolPTZ.exe
链接:http://www.unpack.cn/viewthread.php?tid=8540
贴者:cyto
日期:2006-11-23 19:42


如果发表本文不妥,请说明,我马上删除.

忘了在哪看到有人提到这个软件:ConTrolPTZ.exe因为查不出何种壳,跟了下,算是给些脱壳思路,作为新手学习的参考,有IAT加密,自校验.脱壳后程序是Borland C++ 1999.脱壳后程序能够运行,也不知道功能有没有被限制.


如果发表本文不妥,请说明,我马上删除.

忘了在哪看到有人提到这个软件:ConTrolPTZ.exe
因为查不出何种壳,跟了下,算是给些脱壳思路,作为新手学习的参考,有IAT加密,自校验.
脱壳后程序是Borland C++ 1999.
脱壳后程序能够运行,也不知道功能有没有被限制.


EP:
0051E000 C>  55                  push ebp
0051E001     E8 01000000         call ConTrolP.0051E007
0051E006     EA 83042406 C347    jmp far 47C3:06240483
0051E00D     0F84 01000000       je ConTrolP.0051E014
0051E013     F9                  stc
0051E014     87C7                xchg edi,eax
0051E016     50                  push eax
0051E017     E8 01000000         call ConTrolP.0051E01D
0051E01C   - EB 83               jmp short ConTrolP.0051DFA1
0051E01E     C40458              les eax,fword ptr ds:[eax+ebx*2]
0051E021     66:81D8 5C02        sbb ax,25C
0051E026     78 03               js short ConTrolP.0051E02B
0051E028     79 01               jns short ConTrolP.0051E02B
0051E02A   - 79 D3               jns short ConTrolP.0051DFFF
0051E02C     D9EB                fldpi
0051E02E     017487 C7           add dword ptr ds:[edi+eax*4-39],esi
0051E032     E8 01000000         call ConTrolP.0051E038
0051E037   - 77 83               ja short ConTrolP.0051DFBC

搜索:0F85 ?? FFFFFF,在下一行代码下段:
为什么这么做?因为我步进了n久后发现了这个规律.
0051E150     F9             stc
0051E151     83C2 FF        add edx,-1
0051E154   ^ 0F85 71FFFFFF  jnz ConTrolP.0051E0CB            ; 第一个
0051E15A     EB 01          jmp short ConTrolP.0051E15D
...
0053509F   ^\0F85 66FFFFFF  jnz ConTrolP.0053500B            ; 最后一个
005350A5     EB 01          jmp short ConTrolP.005350A8
005350A7     76 42          jbe short ConTrolP.005350EB
...
005350FD     E8 CC87FFFF    call ConTrolP.0052D8CE
00535102     AB             stos dword ptr es:[edi]
00535103   ^ E2 F8          loopd short ConTrolP.005350FD
00535105     61             popad
00535106     EB 01          jmp short ConTrolP.00535109

00535109   - FF25 4B515300  jmp dword ptr ds:[53514B]        ; ConTrolP.00401000

来到OEP:
00401000    /EB 10          jmp short ConTrolP.00401012
00401002    |66:623A        bound di,dword ptr ds:[edx]
00401005    |43             inc ebx
00401006    |2B2B           sub ebp,dword ptr ds:[ebx]
00401008    |48             dec eax
00401009    |4F             dec edi
0040100A    |4F             dec edi
0040100B    |4B             dec ebx
0040100C    |90             nop
0040100D   -|E9 88B44C00    jmp 008CC49A
00401012    \A1 7BB44C00    mov eax,dword ptr ds:[4CB47B]
00401017     C1E0 02        shl eax,2

IAT:
n多加密了:
004DB2F8  0051E010  ConTrolP.0051E010
004DB2FC  0051E01D  ConTrolP.0051E01D

对4DB2F8下硬件访问断点:
00532511     8B95 46F84000   mov edx,dword ptr ss:[ebp+40F846]
00532517     8B06            mov eax,dword ptr ds:[esi]
00532519     0BC0            or eax,eax
0053251B     75 07           jnz short ConTrolP.00532524
0053251D     90              nop
0053251E     90              nop
0053251F     90              nop
00532520     90              nop
00532521     8B46 10         mov eax,dword ptr ds:[esi+10]
00532524     03C2            add eax,edx
00532526     0385 42F84000   add eax,dword ptr ss:[ebp+40F842]
0053252C     8B18            mov ebx,dword ptr ds:[eax]
0053252E     8B7E 10         mov edi,dword ptr ds:[esi+10]
00532531     03FA            add edi,edx
00532533     03BD 42F84000   add edi,dword ptr ss:[ebp+40F842]
00532539     85DB            test ebx,ebx
0053253B     0F84 62010000   je ConTrolP.005326A3
00532541     F7C3 00000080   test ebx,80000000
00532547     75 1D           jnz short ConTrolP.00532566
00532549     90              nop
0053254A     90              nop
0053254B     90              nop
0053254C     90              nop
0053254D     03DA            add ebx,edx
0053254F     83C3 02         add ebx,2
00532552     56              push esi
00532553     57              push edi
00532554     50              push eax
00532555     8BF3            mov esi,ebx
00532557     8BFB            mov edi,ebx
00532559     AC              lods byte ptr ds:[esi]
0053255A     C0C0 03         rol al,3
0053255D     AA              stos byte ptr es:[edi]
0053255E     803F 00         cmp byte ptr ds:[edi],0
00532561   ^ 75 F6           jnz short ConTrolP.00532559
00532563     58              pop eax
00532564     5F              pop edi
00532565     5E              pop esi
00532566     3B9D 46F84000   cmp ebx,dword ptr ss:[ebp+40F846]
0053256C     7C 11           jl short ConTrolP.0053257F
0053256E     90              nop
0053256F     90              nop
00532570     90              nop
00532571     90              nop
00532572     83BD 1A204000 0>cmp dword ptr ss:[ebp+40201A],0
00532579     75 0A           jnz short ConTrolP.00532585
0053257B     90              nop
0053257C     90              nop
0053257D     90              nop
0053257E     90              nop
0053257F     81E3 FFFFFF0F   and ebx,0FFFFFFF
00532585     53              push ebx
00532586     FFB5 3EF84000   push dword ptr ss:[ebp+40F83E]
0053258C     FF95 1C854100   call dword ptr ss:[ebp+41851C]        
00532592     3B9D 46F84000   cmp ebx,dword ptr ss:[ebp+40F846]    ; 这里eax就是函数地址
00532598     7C 0F           jl short ConTrolP.005325A9           ; patch
0053259A     90              nop
0053259B     90              nop
0053259C     90              nop
0053259D     90              nop
0053259E     60              pushad
0053259F     2BC0            sub eax,eax                          ; 这里抹除记录
005325A1     8803            mov byte ptr ds:[ebx],al
005325A3     43              inc ebx
005325A4     3803            cmp byte ptr ds:[ebx],al
005325A6   ^ 75 F9           jnz short ConTrolP.005325A1
005325A8     61              popad
005325A9     0BC0            or eax,eax                           ; eax就是函数地址
005325AB   ^ 0F84 15FFFFFF   je ConTrolP.005324C6
005325B1     3B85 2C854100   cmp eax,dword ptr ss:[ebp+41852C]    ; 是不是MessageBoxA?
005325B7     74 20           je short ConTrolP.005325D9           ; 是的话另外处理
005325B9     90              nop
005325BA     90              nop
005325BB     90              nop
005325BC     90              nop
005325BD     3B85 C4FD4000   cmp eax,dword ptr ss:[ebp+40FDC4]    ; 是不是xx函数
005325C3     74 09           je short ConTrolP.005325CE           ; 是的话另外处理
005325C5     90              nop
005325C6     90              nop
005325C7     90              nop
005325C8     90              nop
005325C9     EB 14           jmp short ConTrolP.005325DF
005325CB     90              nop
005325CC     90              nop
005325CD     90              nop
005325CE     8D85 31FE4000   lea eax,dword ptr ss:[ebp+40FE31]
005325D4     EB 09           jmp short ConTrolP.005325DF
005325D6     90              nop
005325D7     90              nop
005325D8     90              nop
005325D9     8D85 4BFE4000   lea eax,dword ptr ss:[ebp+40FE4B]
005325DF     56              push esi
005325E0     FFB5 3EF84000   push dword ptr ss:[ebp+40F83E]
005325E6     5E              pop esi
005325E7     39B5 12204000   cmp dword ptr ss:[ebp+402012],esi
005325ED     74 15           je short ConTrolP.00532604
005325EF     90              nop
005325F0     90              nop
005325F1     90              nop
005325F2     90              nop
005325F3     39B5 16204000   cmp dword ptr ss:[ebp+402016],esi
005325F9     74 09           je short ConTrolP.00532604
005325FB     90              nop
005325FC     90              nop
005325FD     90              nop
005325FE     90              nop
005325FF     EB 63           jmp short ConTrolP.00532664
00532601     90              nop
00532602     90              nop
00532603     90              nop
00532604     80BD 16564100 0>cmp byte ptr ss:[ebp+415616],0
0053260B     74 57           je short ConTrolP.00532664
0053260D     90              nop
0053260E     90              nop
0053260F     90              nop
00532610     90              nop
00532611     EB 07           jmp short ConTrolP.0053261A
00532613     90              nop
00532614     90              nop
00532615     90              nop
00532616     0100            add dword ptr ds:[eax],eax
00532618     0000            add byte ptr ds:[eax],al
0053261A     8BB5 0BF94000   mov esi,dword ptr ss:[ebp+40F90B]
00532620     83C6 0D         add esi,0D
00532623     81EE 02184000   sub esi,ConTrolP.00401802
00532629     2BF5            sub esi,ebp
0053262B     83FE 00         cmp esi,0
0053262E     7F 34           jg short ConTrolP.00532664
00532630     90              nop
00532631     90              nop
00532632     90              nop
00532633     90              nop
00532634     8BB5 0BF94000   mov esi,dword ptr ss:[ebp+40F90B]
0053263A     53              push ebx
0053263B     50              push eax
0053263C     E8 8DB2FFFF     call ConTrolP.0052D8CE
00532641     8BD8            mov ebx,eax
00532643     58              pop eax
00532644     33C3            xor eax,ebx
00532646     C606 68         mov byte ptr ds:[esi],68
00532649     8946 01         mov dword ptr ds:[esi+1],eax
0053264C     C746 05 8134240>mov dword ptr ds:[esi+5],243481
00532653     895E 08         mov dword ptr ds:[esi+8],ebx
00532656     C646 0C C3      mov byte ptr ds:[esi+C],0C3
0053265A     5B              pop ebx
0053265B     8BC6            mov eax,esi
0053265D     8385 0BF94000 0>add dword ptr ss:[ebp+40F90B],0D
00532664     5E              pop esi
00532665     60              pushad
00532666     8BD0            mov edx,eax
00532668     2BBD 46F84000   sub edi,dword ptr ss:[ebp+40F846]
0053266E     8BC7            mov eax,edi
00532670     B9 01010000     mov ecx,101
00532675     8DBD EBEC4000   lea edi,dword ptr ss:[ebp+40ECEB]
0053267B     F2:AF           repne scas dword ptr es:[edi]
0053267D     0BC9            or ecx,ecx
0053267F     74 13           je short ConTrolP.00532694
00532681     90              nop
00532682     90              nop
00532683     90              nop
00532684     90              nop
00532685     81E9 01010000   sub ecx,101
0053268B     F7D1            not ecx
0053268D     89948D EBE84000 mov dword ptr ss:[ebp+ecx*4+40E8EB],edx
00532694     61              popad
00532695     8907            mov dword ptr ds:[edi],eax           ; 写入函数地址或虚拟地址
00532697     8385 42F84000 0>add dword ptr ss:[ebp+40F842],4      ; 停在此
0053269E   ^ E9 6EFEFFFF     jmp ConTrolP.00532511

patch:
00532586     FFB5 3EF84000   push dword ptr ss:[ebp+40F83E]
0053258C     FF95 1C854100   call dword ptr ss:[ebp+41851C]
00532592     3B9D 46F84000   cmp ebx,dword ptr ss:[ebp+40F846]
00532598     E9 F8000000     jmp ConTrolP.00532695                ; 

00532695     8907            mov dword ptr ds:[edi],eax
00532697     8385 42F84000 0>add dword ptr ss:[ebp+40F842],4
0053269E   ^ E9 6EFEFFFF     jmp ConTrolP.00532511

让得到的函数地址eax直接填充,F9,一直运行,函数地址全部出来了,ImportREC获取.

重新申请内存:这个算是自校验
004BADE3     803D AC524D00 >cmp byte ptr ds:[4D52AC],0           ; 清0
004BADEA     75 13          jnz short cyto.004BADFF
004BADEC     E8 13F9FFFF    call cyto.004BA704
004BADF1     84C0           test al,al
004BADF3     75 0A          jnz short cyto.004BADFF
004BADF5     33C0           xor eax,eax
004BADF7     8945 FC        mov dword ptr ss:[ebp-4],eax
004BADFA     E9 54010000    jmp cyto.004BAF53
004BADFF     33C9           xor ecx,ecx
004BAE01     55             push ebp
004BAE02     68 4CAF4B00    push cyto.004BAF4C
004BAE07     64:FF31        push dword ptr fs:[ecx]
004BAE0A     64:8921        mov dword ptr fs:[ecx],esp
004BAE0D     803D C54E4D00 >cmp byte ptr ds:[4D4EC5],0
004BAE14     74 0A          je short cyto.004BAE20
004BAE16     68 B4524D00    push cyto.004D52B4
004BAE1B     E8 5EF30000    call 
004BAE20     83C3 07        add ebx,7
004BAE23     83E3 FC        and ebx,FFFFFFFC
004BAE26     83FB 0C        cmp ebx,0C
004BAE29     7D 05          jge short cyto.004BAE30
004BAE2B     BB 0C000000    mov ebx,0C
004BAE30     81FB 00100000  cmp ebx,1000
004BAE36     0F8F 93000000  jg cyto.004BAECF
004BAE3C     8BC3           mov eax,ebx
004BAE3E     85C0           test eax,eax
004BAE40     79 03          jns short cyto.004BAE45
004BAE42     83C0 03        add eax,3
004BAE45     C1F8 02        sar eax,2
004BAE48     8B15 0C534D00  mov edx,dword ptr ds:[4D530C]
004BAE4E     8B5482 F4      mov edx,dword ptr ds:[edx+eax*4-C]   ; 否则这里异常
004BAE52     85D2           test edx,edx
004BAE54     74 79          je short cyto.004BAECF

004BA07A     BE D0524D00    mov esi,cyto.004D52D0
004BA07F     833E 00        cmp dword ptr ds:[esi],0             ; 清0
004BA082     75 3A          jnz short cyto.004BA0BE
004BA084     68 44060000    push 644
004BA089     6A 00          push 0
004BA08B     E8 74020100    call 
004BA090     8BC8           mov ecx,eax
004BA092     85C9           test ecx,ecx
004BA094     75 05          jnz short cyto.004BA09B

上一篇   下一篇