zoukankan      html  css  js  c++  java
  • 手脱ASProtect v1.23 RC1(无Stolen Code)

    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],eax               ; //落脚点
    009E2CD3    64:8F05 0000000>pop dword ptr fs:[0]
    009E2CDA    58              pop eax
    009E2CDB    833D 7C6D9E00 0>cmp dword ptr ds:[9E6D7C],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:[ebp-8]
    009E2CEE    BA 04000000     mov edx,4
    009E2CF3    E8 54E1FFFF     call 009E0E4C
     

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

    009E2D08    FF75 F0         push dword ptr ss:[ebp-10]
    009E2D0B    FF75 EC         push dword ptr ss:[ebp-14]
    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 00000000  mov eax,dword ptr fs:[0]
    0040A433    50              push eax
    0040A434    64:8925 0000000>mov dword ptr fs:[0],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 00000000  mov eax,dword ptr fs:[0]
    0040A433    50              push eax
    0040A434    64:8925 0000000>mov dword ptr fs:[0],esp
    0040A43B    83EC 68         sub esp,68

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

    7.运行查壳

    运行OK,查壳:Microsoft Visual C++ v6.0
    
  • 相关阅读:
    Swift之 ? 和 !
    objective-c工程使用swift
    NSMethodSignature和NSInvocation的用法
    NSTimer
    iOS 的 XMPPFramework
    计算string高度
    python学习:猜数字小游戏
    python 各种控制语句
    ③ 小程序的代码组成
    ③ 组件&props
  • 原文地址:https://www.cnblogs.com/JianXu/p/5158364.html
Copyright © 2011-2022 走看看