【文章标题】: 手脱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直播授课