Jian丶ylt 发表于 2015-11-21 19:21

手脱ASProtect v1.23 RC1(无Stolen Code)

声明:

       1.只为纪录自己成长历程,高手勿喷
       2.您的热心是新手持续发帖的动力

1.载入PEID

    ASProtect v1.23 RC1

2.载入OD,不勾选内存访问异常,其他异常全部勾选

00401000 >68 01C04200   push 跑跑排行.0042C001                     ; //入口处
00401005    E8 01000000   call 跑跑排行.0040100B
0040100A    C3            retn
0040100B    C3            retn
0040100C    D6            salc
0040100D    54            push esp
0040100E    4A            dec edx
0040100F    60            pushad
00401010    55            push ebp

3.使用最后一次异常法,来到最后一次异常处应该是第16次,第17次就跑飞了

009E2CD1    3100            xor dword ptr ds:,eax               ; //落脚点
009E2CD3    64:8F05 0000000>pop dword ptr fs:
009E2CDA    58            pop eax
009E2CDB    833D 7C6D9E00 0>cmp dword ptr ds:,0
009E2CE2    74 14         je short 009E2CF8
009E2CE4    6A 0C         push 0C
009E2CE6    B9 7C6D9E00   mov ecx,9E6D7C
009E2CEB    8D45 F8         lea eax,dword ptr ss:
009E2CEE    BA 04000000   mov edx,4
009E2CF3    E8 54E1FFFF   call 009E0E4C

4.往下拉找到最近的一个retn处F2,shift+F9,F2,让程序运行到指定位置

009E2D08    FF75 F0         push dword ptr ss:
009E2D0B    FF75 EC         push dword ptr ss:
009E2D0E    C3            retn                                     ; //F2,shift+F9,F2
009E2D0F    5F            pop edi
009E2D10    5E            pop esi
009E2D11    5B            pop ebx

5.程序到这里有两种方式可以到达OEP:

第一种:打开内存窗口,在00401000处下段然后shift+F9就可以到达OEP

0040A41E    55            push ebp                                 ; //来到OEP
0040A41F    8BEC            mov ebp,esp
0040A421    6A FF         push -1
0040A423    68 C8CB4000   push 跑跑排行.0040CBC8
0040A428    68 A4A54000   push 跑跑排行.0040A5A4                     
0040A42D    64:A1 00000000mov eax,dword ptr fs:
0040A433    50            push eax
0040A434    64:8925 0000000>mov dword ptr fs:,esp
0040A43B    83EC 68         sub esp,68

第二种:找到堆栈窗口第四行(跑跑排行榜.0040000下面两行)的值,也就是"0012FFA4",然后命令行下硬件断点"hr 0012FFA4",然后shift+F9运行一次

堆栈窗口:

0012FF5C   009F2BF4//第一行
0012FF60   00400000跑跑排行.00400000
0012FF64   3D375BA5
0012FF68   0012FFA4//第四行
0012FF6C   009D0000
0012FF70   009B0000

这里是一个大跳转,也就是指向OEP的关键跳,F8单步一次

009F3457- FFE0            jmp eax                                  ; //落脚点
009F3459    66:8BC4         mov ax,sp
009F345C    BD F2E44268   mov ebp,6842E4F2
009F3461    F7D5            not ebp
009F3463    81C5 8039C332   add ebp,32C33980
009F3469    80D2 51         adc dl,51
009F346C    BF A1CAF122   mov edi,22F1CAA1
009F3471    C1CF B3         ror edi,0B3


0040A41E    55            push ebp                                 ; //来到OEP
0040A41F    8BEC            mov ebp,esp
0040A421    6A FF         push -1
0040A423    68 C8CB4000   push 跑跑排行.0040CBC8
0040A428    68 A4A54000   push 跑跑排行.0040A5A4                     
0040A42D    64:A1 00000000mov eax,dword ptr fs:
0040A433    50            push eax
0040A434    64:8925 0000000>mov dword ptr fs:,esp
0040A43B    83EC 68         sub esp,68

6.然后依然是LoadPE+ImportREC脱壳,注意使用ImportREC修复的时候等级1+插件修复

7.运行查壳

    运行OK,查壳:Microsoft Visual C++ v6.0

8.还是ximo大神的例子,还是放个附件把




E式丶男孩 发表于 2015-11-21 19:48

谢谢分享哦
页: [1]
查看完整版本: 手脱ASProtect v1.23 RC1(无Stolen Code)