首页
社区
课程
招聘
[原创]ASProtect SKE 2.4 0226之98记事本
发表于: 2008-8-6 09:03 10077

[原创]ASProtect SKE 2.4 0226之98记事本

2008-8-6 09:03
10077

【文章标题】: ASProtect SKE 2.4 0226之98记事本
【文章作者】: yangjt
【作者邮箱】: yangjietao123@163.com
【作者主页】: http://blog.sina.com.cn/yangjt
【作者QQ号】: 325002492
【下载地址】: 自己搜索下载
【保护方式】: ASProtect SKE 2.4 0226
【使用工具】: OllyICE,PhantOm
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  /*
  保护时选择了一下项目:
  Resources Protection
  Preserve Extra Data
  Anti-Debugger Protection
  CheckSum Protection
  */



  
  //入口:
  
  00401000 >  68 01D04000     push    0040D001
  00401005    E8 01000000     call    0040100B
  0040100A    C3              retn
  0040100B    C3              retn
  
  
  //PhantOm全选以后Ctrl+G来到GetSystemTime,F2设置断点,然后F9运行程序,中断两次取消断点返回。
  7C80176F kernel32.GetSystemTime       8BFF            mov     edi, edi    //F2
  7C801771                              55              push    ebp
  7C801772                              8BEC            mov     ebp, esp
  7C801774                              83EC 18         sub     esp, 18
  7C801777                              A1 1800FE7F     mov     eax, dword ptr [7FFE0018]
  
  
  //返回到此处
  00AC2777    0FB745 F0       movzx   eax, word ptr [ebp-10]
  00AC277B    6BC0 3C         imul    eax, eax, 3C
  00AC277E    66:0345 F2      add     ax, word ptr [ebp-E]
  00AC2782    6BC0 3C         imul    eax, eax, 3C
  00AC2785    31D2            xor     edx, edx
  00AC2787    66:8B55 F4      mov     dx, word ptr [ebp-C]
  00AC278B    01D0            add     eax, edx
  00AC278D    69C0 E8030000   imul    eax, eax, 3E8
  00AC2793    66:8B55 F6      mov     dx, word ptr [ebp-A]
  00AC2797    01D0            add     eax, edx
  00AC2799    8905 3C30B000   mov     dword ptr [B0303C], eax
  00AC279F    8BE5            mov     esp, ebp
  00AC27A1    5D              pop     ebp
  00AC27A2    C3              retn        //此处F2然后F9运行到这里,之后F8单步返回
  
  00AE15D0    8BC7            mov     eax, edi       //返回到此处
  00AE15D2    E8 39FAFFFF     call    00AE1010
  00AE15D7    C747 18 FFFFFFF>mov     dword ptr [edi+18], -1
  00AE15DE    A1 482BB000     mov     eax, dword ptr [B02B48]
  00AE15E3    83C0 0D         add     eax, 0D
  00AE15E6    8947 0C         mov     dword ptr [edi+C], eax
  00AE15E9    33D2            xor     edx, edx
  .......
  .......
  00AE1683    83C4 0C         add     esp, 0C
  00AE1686    8BC7            mov     eax, edi
  00AE1688    5F              pop     edi
  00AE1689    5E              pop     esi
  00AE168A    5B              pop     ebx
  00AE168B    C3              retn        //段尾Ret处F2然后F9,F8
  
  00B00226    8B15 982BB000   mov     edx, dword ptr [B02B98]  //返回到这里
  00B0022C    8902            mov     dword ptr [edx], eax
  00B0022E    A1 982BB000     mov     eax, dword ptr [B02B98]
  00B00233    8B00            mov     eax, dword ptr [eax]
  00B00235    E8 462BFEFF     call    00AE2D80
  .......
  .......
  00B002C5    59              pop     ecx
  00B002C6    5A              pop     edx
  00B002C7    5B              pop     ebx
  00B002C8    C3              retn        //段尾Ret处F2然后F9,F8
  
  
  
  00ACED60    68 A75915E2     push    E21559A7                 //返回到这里……
  00ACED65    68 F0290000     push    29F0
  00ACED6A    68 B4150200     push    215B4
  00ACED6F    68 C0200000     push    20C0
  00ACED74    68 9CCC0000     push    0CC9C
  00ACED79    68 00500500     push    55000
  00ACED7E    FF35 D434B000   push    dword ptr [B034D4]
  00ACED84    E8 23D1FFFF     call    00ACBEAC
  00ACED89    310424          xor     dword ptr [esp], eax
  00ACED8C    8B05 D434B000   mov     eax, dword ptr [B034D4]
  00ACED92    010424          add     dword ptr [esp], eax
  00ACED95    C3              retn                            //段尾Ret处F2然后F9,F8
  
  
  00B002E0    68 9B311C0B     push    0B1C319B                 //返回到这里……
  00B002E5    68 E0020000     push    2E0
  00B002EA    68 6C590100     push    1596C
  00B002EF    68 5C140000     push    145C
  00B002F4    68 80EE0300     push    3EE80
  00B002F9    68 00500500     push    55000
  00B002FE    FF35 D434B000   push    dword ptr [B034D4]
  00B00304    E8 01000000     call    00B0030A
  00B00309    8183 C404E89A B>add     dword ptr [ebx+9AE804C4], E8FFFC>
  00B00313    0100            add     dword ptr [eax], eax
  00B00315    0000            add     byte ptr [eax], al
  00B00317    8183 C4043104 2>add     dword ptr [ebx+43104C4], 1E824
  00B00321    0000            add     byte ptr [eax], al
  00B00323    68 83C4048B     push    8B04C483
  00B00328    05 D434B000     add     eax, 0B034D4
  00B0032D    E8 02000000     call    00B00334
  00B00332    E8 6883C404     call    0574869F
  00B00337    010424          add     dword ptr [esp], eax
  00B0033A    C3              retn                           //段尾Ret处F2然后F9,F8
  
  
  00AFFC8A    E8 61F1FFFF     call    00AFEDF0  //在离返回出最近的一处Call处F2然后F9,F7
  00AFFC8F    83C4 24         add     esp, 24
  00AFFC92    5F              pop     edi
  00AFFC93    5E              pop     esi
  00AFFC94    5B              pop     ebx
  00AFFC95    C3              retn
  00AFFC96    8BC0            mov     eax, eax
  00AFFC98    E8 E7FEFFFF     call    00AFFB84   //返回到这里
  00AFFC9D    C3              retn
  
  00AFEDF0    BF 02DB4A00     mov     edi, 4ADB02       //到这里,往下单步跟踪到返回
  00AFEDF5    337C24 28       xor     edi, dword ptr [esp+28]
  ......
  ......
  00AFEF17    037C24 18       add     edi, dword ptr [esp+18]
  00AFEF1B    C3              retn                     //返回处
  
  
  
  01B70000    80F2 23         xor     dl, 23                  //返回到这里
  01B70003    E8 05000000     call    01B7000D
  01B70008    D99E 7F4C95B6   fstp    dword ptr [esi+B6954C7F]
  01B7000E    DB58 BE         fistp   dword ptr [eax-42]
  01B70011    1312            adc     edx, dword ptr [edx]
  01B70013    696D 81 C0E2000>imul    ebp, dword ptr [ebp-7F], 0E2C0
  01B7001A    0068 0A         add     byte ptr [eax+A], ch
  
  //然后往下拉……
  
  01B700B5    15 2A1BB891     adc     eax, 91B81B2A
  
  01B7008B   /E9 36000000     jmp     01B700C6             //上面最近一处JmpEnter跟随
  01B70090   |3B58 B1         cmp     ebx, dword ptr [eax-4F]
  01B70093   |96              xchg    eax, esi
  01B70094   |17              pop     ss
  01B70095   |04 ED           add     al, 0ED
  01B70097   |22B3 70E96E0F   and     dh, byte ptr [ebx+F6EE970]
  01B7009D   |9C              pushfd
  01B7009E   |A5              movs    dword ptr es:[edi], dword ptr [e>
  01B7009F   |0F8C 09000000   jl      01B700AE
  01B700A5   |68 07547301     push    1735407
  01B700AA   |66:8BD8         mov     bx, ax
  01B700AD   |5B              pop     ebx
  01B700AE  ^\E9 7AFFFFFF     jmp     01B7002D         //此处有个向回跳的大跳转,判断上面的代码用于返回代码的解压缩
  01B700B3    FFCC            dec     esp
  .....
  .....
  01B700C6   /EB 51           jmp     short 01B70119    //跟随到此处……硬件执行断点
  01B700C8   |34 E2           xor     al, 0E2
  01B700CA   |3006            xor     byte ptr [esi], al
  01B700CC   |AE              scas    byte ptr es:[edi]
  01B700CD   |BC 485E755F     mov     esp, 5F755E48
  01B700D2   |8890 D6B0FB53   mov     byte ptr [eax+53FBB0D6], dl
  
  //下面代码漏出真实面目……
  
  01B700C6    BB 4EE24900     mov     ebx, 49E24E
  01B700CB    035C24 18       add     ebx, dword ptr [esp+18]
  01B700CF    5B              pop     ebx
  01B700D0    23C7            and     eax, edi
  01B700D2    58              pop     eax
  01B700D3    8D8418 CB50AFF9 lea     eax, dword ptr [eax+ebx+F9AF50CB>
  01B700DA    2BC3            sub     eax, ebx
  01B700DC    03C3            add     eax, ebx
  01B700DE    5C              pop     esp
  01B700DF    FFE0            jmp     eax            //飞向光明之巅……
  
  
  004010CC    55              push    ebp                //到达OEP
  004010CD    8BEC            mov     ebp, esp
  004010CF    83EC 44         sub     esp, 44
  004010D2    56              push    esi
  004010D3    E8 28EF7801     call    01B90000           //次出被ASPr保护……现在想办法恢复回来……硬件执行断点
  004010D8    AE              scas    byte ptr es:[edi]
  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
  
  
  
  //中断两次以后此处变成这个样……
  004010D3    E8 2CEF9900     call    00DA0004   //F7进
  
  //ASPr很狡猾……把系统Call代码抽到自己家里运行去了
  
  00DA0004    FF0424          inc     dword ptr [esp]
  00DA0007  - E9 F4FFF4FF     jmp     00CF0000   //到这里看看……
  
  
  00CF0000    A1 F455887C     mov     eax, dword ptr [7C8855F4]         //此处正是kernel32.GetCommandLineA的入口代码
  00CF0005    C3              retn
  //对比一下
  7C812FAD kernel32.GetCommandLineA     A1 F455887C     mov     eax, dword ptr [7C8855F4]
  7C812FB2                              C3              retn
  7C812FB3                              90              nop
  
  //其他处代码恢复诸如此类……形势一样……
  //修复好了就可以Dump,然后ImportREC伺候……因为没有选择高技输入表保护,所以修复起来就简单了
  
--------------------------------------------------------------------------------
【经验总结】
  总结一下,感觉ASPr2.4SKE的确狡猾了很多……系统标准DLL代码都抽到自己空间运行给恢复代码带来很大困难,即便要恢
  复,也对代码进行恢复的人员要求很高,必须熟悉WindowsDll的标准调用,所以个人感觉还是Volx的脚本方便些……呵呵…
  …本教程只作娱乐,看到没有手脱2.4SKE的教程……特此写一篇……当脚本不好用的时候……我想手工可能会好些
  吧
                                                       2008年08月06日


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (17)
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
2
没研究过ASProtect ,特此狂顶!
2008-8-6 18:41
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习下
2008-8-6 21:44
0
雪    币: 6092
活跃值: (744)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
4
 
秒完 路过
没看教程....有时间看看   
好象很详细   很不错
Microsoft Visual C++ 6.0 SPx Method 1
上传的附件:
2008-8-6 23:03
0
雪    币: 609
活跃值: (237)
能力值: ( LV12,RANK:441 )
在线值:
发帖
回帖
粉丝
5
如果你想用脚本就不必进来了……本篇文章是讲如何手工制作…… 如果你能把脚本的意思都翻译出来并且分享给大家……那你就牛了……
2008-8-7 07:49
0
雪    币: 6092
活跃值: (744)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6

你说的很对
但是我都是用很多办法的
不知道你看了会怎么想
我的做法让你难受了....其实我都是一半的用最简单的办法
另外的就用手工的..............
不是你想的那样..........
谢谢你的建议...........
极度的要求自己朝你的方向努力
太注重技巧和效率了
2008-8-7 23:11
0
雪    币: 102
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
啊!又是杨大牛的帖子!不顶不是人~~~
杨哥我支持你
2008-8-14 21:40
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
8
不会脱壳, 路过~
2008-8-14 21:43
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习下
2008-8-19 03:03
0
雪    币: 251
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
10
l路过学习中
2008-8-20 09:20
0
雪    币: 244
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
00AFFC98    E8 E7FEFFFF     call    00AFFB84   //返回到这里
00AFFC9D    C3              retn
跟到这地方就跟不下去了,下面的retn该怎么处理,F8也不是,F9也不是,F7也不是。汗
2008-9-5 11:09
0
雪    币: 609
活跃值: (237)
能力值: ( LV12,RANK:441 )
在线值:
发帖
回帖
粉丝
12
可以F7,这个Call里修改了返回地址……所以就飞了……可以到最上面离得最近的Call处F2,F9,这样快一些……当然你也可以单步……
2008-9-5 12:08
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
太复杂了,学习一下
2008-9-5 12:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
太复杂了,学习一下
2008-9-8 17:29
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
没想到壳上的工夫这么的深奥
2008-9-13 21:41
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
请教楼主那些call到壳里的api怎么修复的,一个一个手动改么,还有IAT怎么修复的
请教君君寒,怎么秒的 谢谢
2008-9-15 22:38
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
这壳用脚本关键就是修复了
2008-9-20 16:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不会 但也顶顶
2008-9-21 21:13
0
游客
登录 | 注册 方可回帖
返回
//