首页
社区
课程
招聘
[原创]手脱ShrinkWrap 1.4加密笔记本
发表于: 2009-8-18 14:35 4531

[原创]手脱ShrinkWrap 1.4加密笔记本

2009-8-18 14:35
4531
【文章标题】: 手脱ShrinkWrap 1.4加密笔记本
【文章作者】: childz
【下载地址】: 275K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3g2^5k6i4c8G2L8$3I4K6i4K6u0W2j5X3I4G2k6#2)9J5k6h3y4G2L8g2)9J5k6h3y4F1i4K6u0r3j5i4u0U0K9r3W2$3k6i4y4Q4x3V1j5J5x3o6l9%4i4K6u0r3f1$3S2J5K9h3&6C8g2%4u0S2M7q4)9J5k6i4y4Z5N6r3#2D9
【使用工具】: peid ICEdbg loadPE IR
【操作平台】: xp ps2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  今天,在网上逛结果进入了一个cracker的bolg,好像是一个叫Breezer的(看雪上有这位仁兄),发现了一款壳,
  上面的壳介绍激起了我想试试款壳的兴趣。
  
  是这样描述的:
   ShrinkWrap 是这个星球上最强大的软件保护工具,其强大的反调试检测让所有调试器均无法加载;先进的进程实
  时保护和内存加密可以有效的阻止一切程序对加密进程的攻击操作;自变形引擎使每次生成的文件及内存解码代码
  均不相同;自主研发的虚拟机引擎可以完全替换原有机器代码,到目前为止还没有哪一个组织可以公开宣称能够还
  原虚拟代码;其无与伦比的加密强度使 ShrinkWrap 出道7年来仍无法被破解...(不知道是什么时候开始的7年)。
  
  决定下回来脱,脱之前上网查了一下,好像关于这个的壳信息好少,只有自己摸索了(毕竟只是压缩壳嘛^_^)
  
  先用笔记本来做试验,加壳
  peid查壳(我想看看peid能不能准确查出),查出来居然是Safeguard 1.03 -> Simonzh *(不知道为什么好多的壳
  都被识别为那个壳)
  不管了,od载入,看到EP如下:
  
  0040D000 >  E8 7E000000     call    0040D083                        //F7跟进
  0040D005    23FE            and     edi, esi
  0040D007    BF FFEF8EBF     mov     edi, BF8EEFFF
  0040D00C    FF00            inc     dword ptr [eax]
  0040D00E    0040 00         add     byte ptr [eax], al
  0040D011    00F0            add     al, dh
  0040D013    FFFF            ???                                      ; 未知命令
  0040D015    0040 FF         add     byte ptr [eax-1], al
  0040D018    FF00            inc     dword ptr [eax]
  0040D01A    90              nop
  0040D01B    FFFF            ???                                      ; 未知命令
  0040D01D    38BD FFFFAF77   cmp     byte ptr [ebp+77AFFFFF], bh
  0040D023    1D 807CB0AD     sbb     eax, ADB07C80
  0040D028    807C00 00 00    cmp     byte ptr [eax+eax], 0
  0040D02D    0000            add     byte ptr [eax], al
  0040D02F    0000            add     byte ptr [eax], al
  0040D031    0000            add     byte ptr [eax], al
  0040D033    0000            add     byte ptr [eax], al
  0040D035    0000            add     byte ptr [eax], al
  0040D037    0000            add     byte ptr [eax], al
  0040D039    0056 D0         add     byte ptr [esi-30], dl
  0040D03C    0000            add     byte ptr [eax], al
  0040D03E    22D0            and     dl, al
  0040D040    0000            add     byte ptr [eax], al
  0040D042    0000            add     byte ptr [eax], al
  0040D044    0000            add     byte ptr [eax], al
  0040D046    0000            add     byte ptr [eax], al
  0040D048    0000            add     byte ptr [eax], al
  0040D04A    0000            add     byte ptr [eax], al
  
  我们F7跟进,看到如下:
  
  0040D083    58              pop     eax
  0040D084    60              pushad                     
  0040D085    8BE8            mov     ebp, eax               //看看能不能ESP定律
  0040D087    55              push    ebp
  0040D088    33F6            xor     esi, esi
  0040D08A    68 48010000     push    148
  0040D08F    E8 49010000     call    0040D1DD
  0040D094    EB 04           jmp     short 0040D09A
  0040D096    DA145D DA0C4DDA ficom   dword ptr [ebx*2+DA4D0CDA]
  0040D09D    1C 41           sbb     al, 41
  0040D09F    DA2445 DA2C49A6 fisub   dword ptr [eax*2+A6492CDA]
  0040D0A6    89A6 8AA688A6   mov     dword ptr [esi+A688A68A], esp
  0040D0AC    8F              ???                                      ; 未知命令
  0040D0AD    A6              cmps    byte ptr [esi], byte ptr es:[edi>
  0040D0AE    8ED0            mov     ss, ax
  0040D0B0    B2 AE           mov     dl, 0AE
  0040D0B2    51              push    ecx
  0040D0B3    51              push    ecx
  0040D0B4    51              push    ecx
  0040D0B5    52              push    edx
  
  先F8单步到0040D085    8BE8            mov     ebp, eax  ,再hr ESP,到达了
  
  0040D177    8B00            mov     eax, dword ptr [eax]
  0040D179    F7D8            neg     eax
  0040D17B    35 11110000     xor     eax, 1111
  0040D180    60              pushad
  0040D181    E8 00000000     call    0040D186
  0040D186    5F              pop     edi
  0040D187    81EF 86010000   sub     edi, 186
  0040D18D    33C0            xor     eax, eax
  0040D18F    B9 94010000     mov     ecx, 194
  0040D194    E8 40000000     call    0040D1D9
  0040D199    81C7 49000000   add     edi, 49
  0040D19F    57              push    edi
  0040D1A0    B9 93000000     mov     ecx, 93
  0040D1A5    E8 2F000000     call    0040D1D9
  0040D1AA    5F              pop     edi
  0040D1AB    81EF 04000000   sub     edi, 4
  0040D1B1    AB              stos    dword ptr es:[edi]
  0040D1B2    81EF 49000000   sub     edi, 49
  0040D1B8    AB              stos    dword ptr es:[edi]
  0040D1B9    AB              stos    dword ptr es:[edi]
  
  接着取消断点,F8单步走,结果很快就到oep了
  0040D1D8    C3              retn                            //奔向OEP
  0040D1D9    0000            add     byte ptr [eax], al
  0040D1DB    0000            add     byte ptr [eax], al
  0040D1DD    0000            add     byte ptr [eax], al
  0040D1DF    0000            add     byte ptr [eax], al
  0040D1E1    0000            add     byte ptr [eax], al
  0040D1E3    0000            add     byte ptr [eax], al
  0040D1E5    0000            add     byte ptr [eax], al
  
  004010CC    55              push    ebp                   //OEP
  004010CD    8BEC            mov     ebp, esp
  004010CF    83EC 44         sub     esp, 44
  004010D2    56              push    esi
  004010D3    FF15 E4634000   call    dword ptr [4063E4]               ; kernel32.GetCommandLineA
  004010D9    8BF0            mov     esi, eax
  004010DB    8A00            mov     al, byte ptr [eax]
  004010DD    3C 22           cmp     al, 22
  004010DF    75 1B           jnz     short 004010FC
  004010E1    56              push    esi
  004010E2    FF15 F4644000   call    dword ptr [4064F4]               ; user32.CharNextA
  004010E8    8BF0            mov     esi, eax
  004010EA    8A00            mov     al, byte ptr [eax]
  004010EC    84C0            test    al, al
  004010EE    74 04           je      short 004010F4
  004010F0    3C 22           cmp     al, 22
  004010F2  ^ 75 ED           jnz     short 004010E1
  
  接着,loadPE来dump,IR修复(IAT全部有效),最后试运行,可以运行,大功告成。
  
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  其实,我们可以更快到达OEP的,F7,再hr ESP,F9运行3次,再F8单步
  本人菜鸟,失误之处敬请诸位大侠赐教!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年08月18日 下午 02:31:35

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 138
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
越看越没技术含量,楼下不要打击我啊
2009-8-18 14:49
0
游客
登录 | 注册 方可回帖
返回