吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7669|回复: 9
收起左侧

[脚本+补区段]-ASProtect 2.1x SKE-文件夹保护

[复制链接]
mycsy 发表于 2008-6-23 00:38
ASProtect 2.1x SKE 此壳俺跑完脚本 修复成功指数 基本为零@

发现论坛很多朋友 和我一样 有种既要成功 又面临失败的 窘境。。。。

找来此文 不敢独享 特此发来 大家一起学习下 前辈的经验

在研读了SYSCOM,machenglin两位大侠的文章,历经n天,动手试验n次,终于用补区段的方法搞定一个Asprotect壳,发出来给跟我一样菜的人参考。
贴图片比较麻烦,我还是上传附件。

8.15心血来潮,对此程序进行恢复代码,记录如下:
文件夹保护 2006 2.10

ASProtect 2.1x SKE -> Alexey Solodovnikov
Version: ASProtect 2.11 SKE build 03.13 Release [1]
Microsoft Visual C++ 7.0 Method2 [Debug]

安装后不方便打开文件夹,拷贝地址备用:
E:\Program Files\文件夹保护 2006\fp.exe

1.OEP+DUMP+IAT:
Volx脚本IAT修复,提示Stolen code After API,保存在SCafAPI.bin,然后停在伪OEP:
017002EC   6A 74     push 74         ; 00040E8BD
017002EE   F2:      prefix repne:
017002EF   EB 01     jmp short 017002F2

0040E8BD d>- E9 2A1A2F01  jmp 017002EC         ; 真正的OEP
有Stolen OEP,上LordPE选择进程dump,保存为dump.exe。

Ctrl+G到401000,Ctrl+B:FF25
0040E052  - FF25 6C404D00   jmp dword ptr ds:[4D406C]   ; crtool.CCRTools::Init
0040E058  - FF25 C4464D00   jmp dword ptr ds:[4D46C4]   ; <jmp.&MSVCR71.free>
0040E05E  - FF25 BC464D00   jmp dword ptr ds:[4D46BC]   ; MFC71.7C1CAE35

数据窗口:dd 4D46C4,上下翻翻
004D4000 796D1E76 ADVAPI32.RegCloseKey
004D4004 796D6315 ADVAPI32.RegSetValueA
004D4008 796D33CB ADVAPI32.RegSetValueExA
...
004D52C0 00000000
004D52C4 77A344BA OLE32.CoInitialize
004D52C8 77A3435E OLE32.CoUninitialize
004D52CC 00000000

RVA=000D4000,Size=12CC
上ImportREC,选择进程,填入RVA+Size,获取函数,全部有效,修改OEP=0000E052,Refix dump。

2.变形跳转及变形call的分析:
01700461  68 690C7001  push dumped_1.01700C69     ; 变形call
01700466  E8 95FB0700  call dumped_1.01780000     ; 进入第一层

第一层:一直F7直到第一个call
01780157  /EB 01     jmp short dumped_1.0178015A
0178015A  FFD3     call ebx         ; 进入第二层
0178015C  FF7424 04   push dword ptr ss:[esp+4]
01780160  EB 02     jmp short dumped_1.01780164

第二层:经过Route Check后来到循环
014D8A87  8B45 F8    mov eax,dword ptr ss:[ebp-8]
014D8A8A  0FB600    movzx eax,byte ptr ds:[eax]
014D8A8D  8B5483 40   mov edx,dword ptr ds:[ebx+eax*4+40]
014D8A91  8BC6     mov eax,esi
014D8A93  FFD2     call edx
014D8A95  3B45 FC    cmp eax,dword ptr ss:[ebp-4]
014D8A98  75 1A     jnz short dumped_1.014D8AB4
014D8A9A  8B45 10    mov eax,dword ptr ss:[ebp+10]
014D8A9D  50      push eax
014D8A9E  8B45 14    mov eax,dword ptr ss:[ebp+14]
014D8AA1  50      push eax
014D8AA2  E8 19FAFFFF   call dumped_1.014D84C0
014D8AA7  50      push eax
014D8AA8  8BCE     mov ecx,esi
014D8AAA  8B55 18    mov edx,dword ptr ss:[ebp+18]
014D8AAD  8BC3     mov eax,ebx
014D8AAF  E8 D4FDFFFF   call dumped_1.014D8888    ; 进入第3层
014D8AB4  4F      dec edi
014D8AB5  0373 6C    add esi,dword ptr ds:[ebx+6C]
014D8AB8  85FF     test edi,edi
014D8ABA  ^ 77 CB     ja short dumped_1.014D8A87

第3层:变形种类的分类
014D88D8  FFD2     call edx
014D88DA  2C 02     sub al,2         ; 注意al值
014D88DC  72 12     jb short dumped_1.014D88F0
014D88DE  74 3D     je short dumped_1.014D891D
014D88E0  FEC8     dec al
014D88E2  0F84 82000000  je dumped_1.014D896A
014D88E8  E9 DA000000   jmp dumped_1.014D89C7
...
014D89E5  FF75 0C    push dword ptr ss:[ebp+C]
014D89E8  8B45 F8    mov eax,dword ptr ss:[ebp-8]  ; dumped_1.01510E28
014D89EB  FF60 20    jmp dword ptr ds:[eax+20]   ;跟进到第4层
014D89EE  /EB 01     jmp short dumped_1.014D89F1
014D89F0  |9A 5F5E5B8B E55D call far 5DE5:8B5B5E5F
014D89F7  C2 0C00    retn 0C
014D89FA  8BC0     mov eax,eax

第4层:指向最后的地址
017900AD  - FF6424 FC   jmp dword ptr ss:[esp-4]    ; dumped_1.01700A9B
如果不是code,那就是call里还有stolen。

3.Stolen OEP的恢复:
0040E8BD c> 6A 74     push 74
0040E8BF  68 20894D00   push cyto-wj.004D8920
0040E8C4  E8 F3010000   call cyto-wj.0040EABC    ; (1)
0040E8C9  33DB      xor ebx,ebx
0040E8CB  895D E0     mov dword ptr ss:[ebp-20],ebx
0040E8CE  53      push ebx
0040E8CF  8B3D AC414D00   mov edi,dword ptr ds:[<&kernel32.GetModuleHandleA>]
0040E8D5  FFD7      call edi
0040E8D7  66:8138 4D5A   cmp word ptr ds:[eax],5A4D
0040E8DC  75 1F     jnz short cyto-wj.0040E8FD
0040E8DE  8B48 3C     mov ecx,dword ptr ds:[eax+3C]
0040E8E1  03C8      add ecx,eax
0040E8E3  8139 50450000   cmp dword ptr ds:[ecx],4550
0040E8E9  75 12     jnz short cyto-wj.0040E8FD
0040E8EB  0FB741 18    movzx eax,word ptr ds:[ecx+18]
0040E8EF  3D 0B010000   cmp eax,10B
0040E8F4  74 1F     je short cyto-wj.0040E915
0040E8F6  3D 0B020000   cmp eax,20B
0040E8FB  74 05     je short cyto-wj.0040E902
0040E8FD  895D E4     mov dword ptr ss:[ebp-1C],ebx
0040E900  EB 27     jmp short cyto-wj.0040E929
0040E902  83B9 84000000 0E  cmp dword ptr ds:[ecx+84],0E
0040E909  ^ 76 F2     jbe short cyto-wj.0040E8FD
0040E90B  33C0      xor eax,eax
0040E90D  3999 F8000000   cmp dword ptr ds:[ecx+F8],ebx
0040E913  EB 0E     jmp short cyto-wj.0040E923
0040E915  8379 74 0E    cmp dword ptr ds:[ecx+74],0E
0040E919  ^ 76 E2     jbe short cyto-wj.0040E8FD
0040E91B  33C0      xor eax,eax
0040E91D  3999 E8000000   cmp dword ptr ds:[ecx+E8],ebx
0040E923  0F95C0     setne al
0040E926  8945 E4     mov dword ptr ss:[ebp-1C],eax
0040E929  895D FC     mov dword ptr ss:[ebp-4],ebx
0040E92C  6A 02     push 2
0040E92E  FF15 D04E4D00   call dword ptr ds:[<&msvcr71.__set_app_type>]  
0040E934  59      pop ecx
0040E935  830D 1CE34F00 FF  or dword ptr ds:[4FE31C],FFFFFFFF
0040E93C  830D 20E34F00 FF  or dword ptr ds:[4FE320],FFFFFFFF
0040E943  FF15 D44E4D00   call dword ptr ds:[<&msvcr71.__p__fmode>]   
0040E949  8B0D BCCD4F00   mov ecx,dword ptr ds:[4FCDBC]
0040E94F  8908      mov dword ptr ds:[eax],ecx
0040E951  FF15 D84E4D00   call dword ptr ds:[<&msvcr71.__p__commode>]  
0040E957  8B0D B8CD4F00   mov ecx,dword ptr ds:[4FCDB8]
0040E95D  8908      mov dword ptr ds:[eax],ecx
0040E95F  A1 DC4E4D00   mov eax,dword ptr ds:[<&msvcr71._adjust_fdiv>]
0040E964  8B00      mov eax,dword ptr ds:[eax]
0040E966  A3 18E34F00   mov dword ptr ds:[4FE318],eax
0040E96B  E8 4A020000   call cyto-wj.0040EBBA    ; (2)
0040E970  E8 E5020000   call cyto-wj.0040EC5A
0040E975  391D B0C34F00   cmp dword ptr ds:[4FC3B0],ebx
0040E97B  75 0C     jnz short cyto-wj.0040E989
0040E97D  68 5AEC4000   push cyto-wj.0040EC5A
0040E982  FF15 E04E4D00   call dword ptr ds:[<&msvcr71.__setusermatherr>]
0040E988  59      pop ecx
0040E989  E8 BA020000   call cyto-wj.0040EC48    ; (3)
0040E98E  68 E0C24F00   push cyto-wj.004FC2E0
0040E993  68 DCC24F00   push cyto-wj.004FC2DC
0040E998  E8 A5020000   call <jmp.&msvcr71._initterm>
0040E99D  68 FEEB4000   push cyto-wj.0040EBFE
0040E9A2  E8 87FDFFFF   call cyto-wj.0040E72E    ; (4)
0040E9A7  A1 B4CD4F00   mov eax,dword ptr ds:[4FCDB4]
0040E9AC  8945 D8     mov dword ptr ss:[ebp-28],eax
0040E9AF  8D45 D8     lea eax,dword ptr ss:[ebp-28]
0040E9B2  50      push eax
0040E9B3  FF35 B0CD4F00   push dword ptr ds:[4FCDB0]
0040E9B9  8D45 D0     lea eax,dword ptr ss:[ebp-30]
0040E9BC  50      push eax
0040E9BD  8D45 CC     lea eax,dword ptr ss:[ebp-34]
0040E9C0  50      push eax
0040E9C1  8D45 C8     lea eax,dword ptr ss:[ebp-38]
0040E9C4  50      push eax
0040E9C5  FF15 404F4D00   call dword ptr ds:[<&msvcr71.__getmainargs>]   
0040E9CB  83C4 20     add esp,20
0040E9CE  8945 C4     mov dword ptr ss:[ebp-3C],eax
0040E9D1  3BC3      cmp eax,ebx
0040E9D3  7D 08     jge short cyto-wj.0040E9DD
0040E9D5  6A 08     push 8
0040E9D7  E8 D8010000   call <jmp.&msvcr71._amsg_exit>
0040E9DC  59      pop ecx
0040E9DD  68 D8C24F00   push cyto-wj.004FC2D8
0040E9E2  68 00C04F00   push cyto-wj.004FC000
0040E9E7  E8 56020000   call <jmp.&msvcr71._initterm>
0040E9EC  59      pop ecx
0040E9ED  59      pop ecx
0040E9EE  A1 484F4D00   mov eax,dword ptr ds:[<&msvcr71._acmdln>]
0040E9F3  8B30      mov esi,dword ptr ds:[eax]
0040E9F5  8975 DC     mov dword ptr ss:[ebp-24],esi
0040E9F8  8A06      mov al,byte ptr ds:[esi]
0040E9FA  3C 20     cmp al,20
0040E9FC  77 5D     ja short cyto-wj.0040EA5B
0040E9FE  3AC3      cmp al,bl
0040EA00  74 05     je short cyto-wj.0040EA07
0040EA02  395D E0     cmp dword ptr ss:[ebp-20],ebx
0040EA05  75 54     jnz short cyto-wj.0040EA5B
0040EA07  8A06      mov al,byte ptr ds:[esi]
0040EA09  3AC3      cmp al,bl
0040EA0B  74 0A     je short cyto-wj.0040EA17
0040EA0D  3C 20     cmp al,20
0040EA0F  77 06     ja short cyto-wj.0040EA17
0040EA11  46      inc esi
0040EA12  8975 DC     mov dword ptr ss:[ebp-24],esi
0040EA15  ^ EB F0     jmp short cyto-wj.0040EA07
0040EA17  895D A8     mov dword ptr ss:[ebp-58],ebx
0040EA1A  8D85 7CFFFFFF   lea eax,dword ptr ss:[ebp-84]
0040EA20  50      push eax
0040EA21  FF15 18424D00   call dword ptr ds:[<&kernel32.GetStartupInfoA>]  
0040EA27  F645 A8 01    test byte ptr ss:[ebp-58],1
0040EA2B  74 06     je short cyto-wj.0040EA33
0040EA2D  0FB745 AC    movzx eax,word ptr ss:[ebp-54]
0040EA31  EB 03     jmp short cyto-wj.0040EA36
0040EA33  6A 0A     push 0A
0040EA35  58      pop eax
0040EA36  50      push eax
0040EA37  56      push esi
0040EA38  53      push ebx
0040EA39  53      push ebx
0040EA3A  FFD7      call edi
0040EA3C  50      push eax
0040EA3D  E8 9EF10A00   call cyto-wj.004BDBE0
0040EA42  8BF0      mov esi,eax
0040EA44  8975 C0     mov dword ptr ss:[ebp-40],esi
0040EA47  395D E4     cmp dword ptr ss:[ebp-1C],ebx
0040EA4A  75 07     jnz short cyto-wj.0040EA53
0040EA4C  56      push esi
0040EA4D  FF15 4C4F4D00   call dword ptr ds:[<&msvcr71.exit>]   
0040EA53  FF15 504F4D00   call dword ptr ds:[<&msvcr71._cexit>]   
0040EA59  EB 55     jmp short cyto-wj.0040EAB0
0040EA5B  3C 22     cmp al,22
0040EA5D  75 0B     jnz short cyto-wj.0040EA6A
0040EA5F  33C9      xor ecx,ecx
0040EA61  395D E0     cmp dword ptr ss:[ebp-20],ebx
0040EA64  0F94C1     sete cl
0040EA67  894D E0     mov dword ptr ss:[ebp-20],ecx
0040EA6A  0FB6C0     movzx eax,al
0040EA6D  50      push eax
0040EA6E  FF15 544F4D00   call dword ptr ds:[<&msvcr71._ismbblead>]  
0040EA74  59      pop ecx
0040EA75  85C0      test eax,eax
0040EA77  74 04     je short cyto-wj.0040EA7D
0040EA79  46      inc esi
0040EA7A  8975 DC     mov dword ptr ss:[ebp-24],esi
0040EA7D  46      inc esi
0040EA7E  ^ E9 72FFFFFF   jmp cyto-wj.0040E9F5

OEP中某些call内容也被偷了:
1) call dumped_.0040EABC
0040EABC  - E9 DA1F2F01  jmp 01700A9B

0040EABC  68 6CE84000   push <jmp.&msvcr71._except_handler3>
0040EAC1  64:A1 00000000  mov eax,dword ptr fs:[0]
0040EAC7  50      push eax
0040EAC8  8B4424 10   mov eax,dword ptr ss:[esp+10]
0040EACC  896C24 10   mov dword ptr ss:[esp+10],ebp
0040EAD0  8D6C24 10   lea ebp,dword ptr ss:[esp+10]
0040EAD4  2BE0     sub esp,eax
0040EAD6  53      push ebx
0040EAD7  56      push esi
0040EAD8  57      push edi
0040EAD9  8B45 F8    mov eax,dword ptr ss:[ebp-8]
0040EADC  8965 E8    mov dword ptr ss:[ebp-18],esp
0040EADF  50      push eax
0040EAE0  8B45 FC    mov eax,dword ptr ss:[ebp-4]
0040EAE3  C745 FC FFFFFFFF mov dword ptr ss:[ebp-4],-1
0040EAEA  8945 F8    mov dword ptr ss:[ebp-8],eax
0040EAED  8D45 F0    lea eax,dword ptr ss:[ebp-10]
0040EAF0  64:A3 00000000  mov dword ptr fs:[0],eax
0040EAF6  C3      retn

2) call cyto-wj.0040EBBA
0040EBBA  - E9 991E2F01   jmp 01700A58

0040EBBA  6A 0C     push 0C
0040EBBC  68 30894D00   push cyto-wj.004D8930
0040EBC1  E8 F6FEFFFF   call cyto-wj.0040EABC
0040EBC6  C745 E4 48E24E00  mov dword ptr ss:[ebp-1C],cyto-wj.004EE248
0040EBCD  817D E4 48E24E00  cmp dword ptr ss:[ebp-1C],cyto-wj.004EE248
0040EBD4  73 22     jnb short cyto-wj.0040EBF8
0040EBD6  8365 FC 00    and dword ptr ss:[ebp-4],0
0040EBDA  8B45 E4     mov eax,dword ptr ss:[ebp-1C]
0040EBDD  8B00      mov eax,dword ptr ds:[eax]
0040EBDF  85C0      test eax,eax
0040EBE1  74 0B     je short cyto-wj.0040EBEE
0040EBE3  FFD0      call eax
0040EBE5  EB 07     jmp short cyto-wj.0040EBEE
0040EBE7  33C0      xor eax,eax
0040EBE9  40      inc eax
0040EBEA  C3      retn
0040EBEB  8B65 E8     mov esp,dword ptr ss:[ebp-18]
0040EBEE  834D FC FF    or dword ptr ss:[ebp-4],FFFFFFFF
0040EBF2  8345 E4 04    add dword ptr ss:[ebp-1C],4
0040EBF6  ^ EB D5     jmp short cyto-wj.0040EBCD
0040EBF8  E8 FAFEFFFF   call cyto-wj.0040EAF7
0040EBFD  C3      retn

call cyto-wj.0040EAF7
0040EAF7  - E9 7C1B2F01   jmp 01700678

0040EAF7  8B4D F0     mov ecx,dword ptr ss:[ebp-10]
0040EAFA  64:890D 00000000  mov dword ptr fs:[0],ecx
0040EB01  59      pop ecx
0040EB02  5F      pop edi
0040EB03  5E      pop esi
0040EB04  5B      pop ebx
0040EB05  C9      leave
0040EB06  51      push ecx
0040EB07  C3      retn

3) call cyto-wj.0040EC48
0040EC48  - E9 BB1B2F01   jmp 01700808

0040EC48  68 00000300   push 30000
0040EC4D  68 00000100   push 10000      
0040EC52  E8 07000000   call <jmp.&msvcr71._controlfp>
0040EC57  59      pop ecx
0040EC58  59      pop ecx
0040EC59  C3      retn

4) call cyto-wj.0040E72E
0040E72E  - E9 17232F01   jmp 01700A4A

0040E72E  FF7424 04    push dword ptr ss:[esp+4]
0040E732  E8 D1FFFFFF   call cyto-wj.0040E708
0040E737  F7D8      neg eax
0040E739  1BC0      sbb eax,eax
0040E73B  F7D8      neg eax
0040E73D  59      pop ecx
0040E73E  48      dec eax
0040E73F  C3      retn

4.Stolen code After API:
8种Stolen code After API的分类处:
014DAA9B  8B55 F8    mov edx,dword ptr ss:[ebp-8]
014DAA9E  3A42 4A    cmp al,byte ptr ds:[edx+4A]
014DAAA1  74 0B     je short 014DAAAE
014DAAA3  8B55 F8    mov edx,dword ptr ss:[ebp-8]
014DAAA6  3A42 4B    cmp al,byte ptr ds:[edx+4B]
014DAAA9  75 3E     jnz short 014DAAE9
014DAAAB  EB 01     jmp short 014DAAAE

0=eax,1=ecx,2=edx,3=ebx,4=esp,5=ebp,6=esi,7=edi

打开脚本运行后产生的文件SCafAPI.bin:
004D4000 >00401606 cyto-wj.00401606   // mov ecx,esi,隐藏
004D4004 >00401B75 cyto-wj.00401B75   // mov esi,eax,加密码
004D4008 >00402679 cyto-wj.00402679   //
004D400C >0040588C cyto-wj.0040588C   //
004D4010 >00405F4C cyto-wj.00405F4C   // mov ecx,edi,输入注册码
004D4014 >0040816B cyto-wj.0040816B   //
004D4018 >00409AE4 cyto-wj.00409AE4   // mov ecx,esi,加密码
004D401C >00409C05 cyto-wj.00409C05   //
004D4020 >00411BCC cyto-wj.00411BCC   //
004D4024 >0041286A cyto-wj.0041286A   // mov eax,esi,程序启动
004D4028 >004167B2 cyto-wj.004167B2   //
004D402C >004167E9 cyto-wj.004167E9   //
004D4030 >00416F94 cyto-wj.00416F94   //

点击各个功能模块,有几个没能断下,可能要注册才能用到?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小生我怕怕 发表于 2008-6-23 01:05
支持教程,到现在不懂补区段,哎,惭愧
小不点儿 发表于 2008-6-23 01:11
小糊涂虫 发表于 2008-6-23 19:47
lvshun 发表于 2008-6-23 19:53
老大,我想看啊,可就是看不到,郁闷
lvshun 发表于 2008-6-23 19:54
我在来顶一下,哈哈,我是老大
cpma510 发表于 2008-6-23 21:17
学习了, [s:41] [s:41] [s:41]
mantoou 发表于 2008-6-23 21:23
有的深奥的说,看来还得再等段时间才能理解了 [s:38]
dzhckb 发表于 2008-8-14 10:35
很深奥,看不懂!无法理解!
norman11 发表于 2010-7-16 07:17
很难,谈虎色变。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 22:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表