频道栏目
首页 > 资讯 > 加密解密 > 正文

Hying's PeLock v0.7x 外壳完全分析篇

05-10-28        来源:[db:作者]  
收藏   我要投稿

前言:以前版分析的一个版本,通过对旧版的了解可以很快的掌握新版的变化的,新版刚看完,谢谢hnhuqiong的帮助,脚本太多了,我自己看不下去:-(,
我还是选择了自己的方法,走了一程。走了后感觉新版变化也不是很大,虽然多
乱序IAT和特殊代码加密转换了一种比较方式,不过去乱序iat感觉就像鸡肋,
特殊代码处理虽然有一定难度,但很可惜,花指令太死了,如果有足够的时间的话,可以完全不用去掉花指令跟踪到特殊代码,也许是Magic esp的烂用吧:-),
没有任何的杀伤力可言。
当然这个壳的精彩代码是非常不错的,也因此非常感谢hexer。这段代码我现在还专门记录下来了:-).这篇文章把Simxx和hexer部分没有分析清楚的,自己补了一下。新版的总体流程还是差不多的。

【目    标】:Delphi
【工    具】:Olydbg1.1(diy版)
【任    务】:分析外壳loader
【操作平台】:Windows XP sp2
【作    者】:LOVEBOOM[DFCG][FCG][US]
【相关链接】:NONE
【简要说明】:Hying的外壳上次没有完全分析完下篇,这回来个全面的,外壳有几个地方很有"意思",新版本的花指令也比较有"意思"的.也随便把Hexer和simonzh2000
文章中没有分析明白的,自己分析了下.文章我大部分地方用了标签来注明,也因此很少额外写注释的.应该直接看下就知道什么意思了,看完后,事理一下可以做出
一个和原版一样的loader来的:-).

【详细过程】:
 因为全面分析的文章,所以我也懒得多打几个字.边分析边写吧:-).
用OD载入,下断Bp VirtualAlloc然后执行到返回,之所以这样是因为前面的解压代码很是无聊,也没有什么价值,直接入主题更好:-).
来到这里:

0045A11A    6A 04           PUSH    4
0045A11C    68 00100000     PUSH    1000
0045A121    FF75 10         PUSH    DWORD PTR SS:[EBP+10]
0045A124    6A 00           PUSH    0
0045A126    FF55 2C         CALL    DWORD PTR SS:[EBP+2C]                                       ; VirtualAlloc
0045A129    50              PUSH    EAX                                                         ; 返回这里
0045A12A    8945 0C         MOV     DWORD PTR SS:[EBP+C], EAX
0045A12D    8B5D 08         MOV     EBX, DWORD PTR SS:[EBP+8]
0045A130    03DD            ADD     EBX, EBP
0045A132    50              PUSH    EAX
0045A133    53              PUSH    EBX
0045A134    E8 18000000     CALL                                                  ; 解压代码
0045A139    5A              POP     EDX                                                         ; 0012FFE0
0045A13A    52              PUSH    EDX
0045A13B    55              PUSH    EBP
0045A13C    8D85 DE000000   LEA     EAX, DWORD PTR SS:[EBP+DE]
0045A142    C600 EB         MOV     BYTE PTR DS:[EAX], 0EB                                      ; 对dll的再次重入进行处理
0045A145    C640 01 10      MOV     BYTE PTR DS:[EAX+1], 10
0045A149    8B45 30         MOV     EAX, DWORD PTR SS:[EBP+30]
0045A14C    8945 74         MOV     DWORD PTR SS:[EBP+74], EAX
0045A14F  - FFE2            JMP     EDX                                                         ; 这里跳去壳的部分

************************************************************************************************************************************************

aplib_Unpack:

0045A151 >  60              PUSHAD                                                              ; aplib_Unpack
0045A152    8B7424 24       MOV     ESI, DWORD PTR SS:[ESP+24]                                  ; aplib解压代码,后面壳里还会用到一次
0045A156    8B7C24 28       MOV     EDI, DWORD PTR SS:[ESP+28]                                  ; 因此直接抓下来
0045A15A    FC              CLD
0045A15B    B2 80           MOV     DL, 80
0045A15D    33DB            XOR     EBX, EBX
0045A15F    A4              MOVS    BYTE PTR ES:[EDI], BYTE PTR DS:[ESI]
0045A160    B3 02       

相关TAG标签
上一篇:注入过程中遇到DB_OWNER的想法
下一篇:拒绝服务攻击全面解析
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站