菜鸟也来玩Asprotect脱壳
本帖最后由 sentaly 于 2010-8-13 19:20 编辑【文章标题】: 菜鸟也来玩Asprotect脱壳
【文章作者】: sentaly
【作者邮箱】: [email protected]
【作者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:,F001E>
010E0537 EB 01 jmp short 010E053A
010E0539 E8 BD8EC842 call 43D693FB
010E053E 00EB add bl,ch
010E0540 0169 BD add dword ptr ds:,ebp
010E0543 92 xchg eax,edx
010E0544 73 49 jnb short 010E058F
010E0546 00BD 02944200 add byte ptr ss:,bh
010E054C F2: prefix repne:
010E054D EB 01 jmp short 010E0550
010E054F E8 C1D5538D call 8E61DB15
010E0554 6C ins byte ptr es:,dx
010E0555 04 16 add al,16
010E0557 2BE8 sub ebp,eax
010E0559 8D6C0D EA lea ebp,dword ptr ss:
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 C2494800lock mov eax,4849C2 ; 不允许锁定前缀
010E0F55 334424 28 xor eax,dword ptr ss:
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:
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:,al
011A0128 0065 EB add byte ptr ss:,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:
00E7853A 8B7B 14 mov edi,dword ptr ds:
00E7853D A1 E497E700 mov eax,dword ptr ds:
00E78542 8B40 34 mov eax,dword ptr ds:
00E78545 FFD0 call eax //数据窗口里寄存器里的值就是Route Check的地址了,记下来。。
00E78547 2945 0C sub dword ptr ss:,eax
00E7854A 8B45 0C mov eax,dword ptr ss:
00E7854D 2B43 18 sub eax,dword ptr ds:
00E78550 2B43 68 sub eax,dword ptr ds:
00E78553 8945 FC mov dword ptr ss:,eax
00E78556 8D43 24 lea eax,dword ptr ds:
00E78559 8945 F8 mov dword ptr ss:,eax
00E7855C 85FF test edi,edi
00E7855E 76 38 jbe short 00E78598
00E78560 EB 01 jmp short 00E78563
现在我们找齐了
Stolen OEP start010E0521
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 不错不错哈,继续加油学习哦,膜拜下 这个一直没搞定 进来学习下! 兄弟牛呀,羡慕。 真厉害,如果是视频教程的话,一定能学习的更多 学习一下。共同进步。 "用VOLX大大的ASP 2.X脚本"
volx老大的脚步已经帮你把要补的区段都合并成一个区段了,好像不需要补区段了。你DUMP就可以了。 谢谢楼主分享经验 一起学习,一起进步!