飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 12197|回复: 26

[原创] 菜鸟也来玩Asprotect脱壳

    [复制链接]

该用户从未签到

发表于 2010-8-13 19:17:55 | 显示全部楼层 |阅读模式
本帖最后由 sentaly 于 2010-8-13 19:20 编辑

【文章标题】: 菜鸟也来玩Asprotect脱壳
【文章作者】: sentaly
【作者邮箱】: sentaly@163.com
【作者QQ号】: 138121310
【下载地址】: http://u.115.com/file/t18aacf88d
【加壳方式】: Asprotect 2.x
【操作平台】: windows sp1 PEID od LORDPE
【软件介绍】: 忘了什么时间的软件了
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  我是一名小菜鸟啊,也来玩玩Asprotect 2.x的壳。高手无视、、、、
  
  ASP的壳跑OEP工作量太大,但是只是体力的问题,难就难在Stolen OEP,好在这个壳没有要我修复SDK,不知道为什么
  好,下面先整理下思路:
  
  1、到达Stolen OEP'Start
  2、正常脱壳
  3、分析Stolen区段(Stloen Code、VM、Route Check)
  4、补区段
  5、修复Route Check
  6、可能会有自校验
  
  所以我就用VOLX大大的ASP 2.X脚本跑到Stolen OEP'Start,省我很多体力。。。/:014
  

确定

同样
  
  
  然后两次确定就到了,Stolen OEP start了,不同的机器,这里的地址是不一样的。用F7单步走,不能用F8
  
  010E0521    55              push ebp                                 ; 655E90
  010E0522    EB 01           jmp short 010E0525
  010E0524    9A BDF64E46 006>call far 6500:464EF6BD
  010E052B    EB 01           jmp short 010E052E
  010E052D    69BD 2C3A4100 6>imul edi,dword ptr ss:[ebp+413A2C],F001E>
  010E0537    EB 01           jmp short 010E053A
  010E0539    E8 BD8EC842     call 43D693FB
  010E053E    00EB            add bl,ch
  010E0540    0169 BD         add dword ptr ds:[ecx-43],ebp
  010E0543    92              xchg eax,edx
  010E0544    73 49           jnb short 010E058F
  010E0546    00BD 02944200   add byte ptr ss:[ebp+429402],bh
  010E054C    F2:             prefix repne:
  010E054D    EB 01           jmp short 010E0550
  010E054F    E8 C1D5538D     call 8E61DB15
  010E0554    6C              ins byte ptr es:[edi],dx
  010E0555    04 16           add al,16
  010E0557    2BE8            sub ebp,eax
  010E0559    8D6C0D EA       lea ebp,dword ptr ss:[ebp+ecx-16]
  010E055D    2BE9            sub ebp,ecx
  010E055F    83C4 F0         add esp,-10
  
  我们来继续。。。。F7 F7 F7 N次F7以后
  标志:
  push xxx
  call xxx
  
  就这,停下。把这里的地址记下。补区段时用。。继续F7
  
  010E0F41    68 DF100E01     push 10E10DF
  010E0F46    E8 B5F00B00     call 011A0000                            //这里是Stolen OEP end
  010E0F4B    57              push edi
  010E0F4C    F2:             prefix repne:
  010E0F4D    EB 01           jmp short 010E0F50
  010E0F4F    F0:B8 C2494800  lock mov eax,4849C2                      ; 不允许锁定前缀
  010E0F55    334424 28       xor eax,dword ptr ss:[esp+28]
  010E0F59    EB 01           jmp short 010E0F5C
  010E0F5B    9A 8D447561 83E>call far E883:6175448D
  010E0F62    61              popad
  010E0F63    F2:             prefix repne:
  010E0F64    EB 01           jmp short 010E0F67
  010E0F66    9A 03442418 F2E>call far EBF2:18244403
  010E0F6D    01E8            add eax,ebp
  010E0F6F    C1C8 F5         ror eax,0F5
  010E0F72    8D8411 60566500 lea eax,dword ptr ds:[ecx+edx+655660]
  010E0F79    2BC2            sub eax,edx
  010E0F7B    2BC1            sub eax,ecx
  010E0F7D  ^ E9 BFFFFFFF     jmp 010E0F41
  
  这里也要停,标志:call 一个寄存器
  继续去打VM的,要记来寄存器里的值。
  
  
  011A011B    FFD3            call ebx                   //数据窗口里寄存器里的值就是VM的地址了。这里不好找,不同的机器会变成不同的寄存器,每加载一次OD他也都在变。
  011A011D    F3:             prefix rep:
  011A011E    EB 02           jmp short 011A0122
  011A0120    CD20 64FF3500   vxdjump 35FF64
  011A0126    0000            add byte ptr ds:[eax],al
  011A0128    0065 EB         add byte ptr ss:[ebp-15],ah
  011A012B    01E8            add eax,ebp
  011A012D    BB 8C6D4900     mov ebx,496D8C
  011A0132    81DB 72BCB9C0   sbb ebx,C0B9BC72
  011A0138    5B              pop ebx
  011A0139    FC              cld
  
  
  下面是Route Check不过很近的。进VM地址的CALL下面第一个CALL寄存器的CALL就是Route Check的地址CALL了
  
  00E78537    8B73 30         mov esi,dword ptr ds:[ebx+30]
  00E7853A    8B7B 14         mov edi,dword ptr ds:[ebx+14]
  00E7853D    A1 E497E700     mov eax,dword ptr ds:[E797E4]
  00E78542    8B40 34         mov eax,dword ptr ds:[eax+34]
  00E78545    FFD0            call eax                         //数据窗口里寄存器里的值就是Route Check的地址了,记下来。。
  00E78547    2945 0C         sub dword ptr ss:[ebp+C],eax
  00E7854A    8B45 0C         mov eax,dword ptr ss:[ebp+C]
  00E7854D    2B43 18         sub eax,dword ptr ds:[ebx+18]
  00E78550    2B43 68         sub eax,dword ptr ds:[ebx+68]
  00E78553    8945 FC         mov dword ptr ss:[ebp-4],eax
  00E78556    8D43 24         lea eax,dword ptr ds:[ebx+24]
  00E78559    8945 F8         mov dword ptr ss:[ebp-8],eax
  00E7855C    85FF            test edi,edi
  00E7855E    76 38           jbe short 00E78598
  00E78560    EB 01           jmp short 00E78563
  
  现在我们找齐了
  
  Stolen OEP start  010E0521
  
  Stolen OEP end    011A0000
  
  VM            ebx=00E784FC
  
  Route Check   eax=010B0000
  
  下面就是补区段了
  
  一般的补区段的顺序
  
  VM(2)
  Route Check(1)
  Stolen Code(10)
  从地址小的DUMP到大的地址
  
  下面开始吧。
  打开LORDPE,区域脱壳,
00E784FC

找到这个地址,DUMP,再用LORDPE载入开开始DUMP出来,也修复好的文件。

下面就分别找地址,DUNMP,载入修复的文件。不过要记得,从小到大,比如:

VM 两个分别Dump来,从小到大载入修复的文件,再去Dump
Route Check的,分别Dump出来后,再载入修复文件。继续Stolen Code

还有要注意一点。。。就是载入区域脱壳后要记得修改 虚拟大小
Route Check区段虚拟大小=011A0000-00401000(基址)

补好区段以后,重建下PE。LORDPE来

重建好还是不能打开,看看,我们还少来一步。去Route Check
  用OD再次载入我们修复的文件,ctrl+g输入route check的地址,就是我们刚刚找到 call eax那个地方
下断,shift+F9到这里

90 90 90 8B 44 24 58 83 E8 05 90
用二进制粘贴,覆盖那个call.保存退出,over了

经验总结:
理清思路,其实也挺简单。这个壳是有点烦
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于sentaly,首发于PYG 转载请注明作者并保持文章的完整, 谢谢!

                                                       2010年08月13日 18:49:06

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x

评分

参与人数 1飘云币 +20 收起 理由
幽雅的心 + 20 PYG有你更精彩!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2010-8-14 00:20:26 | 显示全部楼层
    不错不错哈,继续加油学习哦,膜拜下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-8-24 17:00:14 | 显示全部楼层
    这个一直没搞定
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-9-3 16:58:20 | 显示全部楼层
    进来学习下!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-9-4 16:31:30 | 显示全部楼层
    兄弟牛呀,羡慕。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-9-15 20:01:15 | 显示全部楼层
    真厉害,如果是视频教程的话,一定能学习的更多
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 710 天

    [LV.9]以坛为家II

    发表于 2010-9-21 21:39:23 | 显示全部楼层
    学习一下。共同进步。
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2015-8-6 10:23
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-9-21 22:18:09 | 显示全部楼层
    "用VOLX大大的ASP 2.X脚本"

    volx老大的脚步已经帮你把要补的区段都合并成一个区段了,好像不需要补区段了。你DUMP就可以了。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-10-11 13:25:35 | 显示全部楼层
    谢谢楼主分享经验
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-2-8 17:39
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-10-12 09:46:15 | 显示全部楼层
    一起学习,一起进步!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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