飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 12978|回复: 13

[原创] Yoda's Crypter v1.3 脱壳笔记 + 动画演示

[复制链接]
  • TA的每日心情
    开心
    2019-2-21 12:33
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2007-2-24 18:43:49 | 显示全部楼层 |阅读模式
    【文章标题】: Yoda's Crypter v1.3 脱壳笔记
    【文章作者】: 王猛
    【作者邮箱】: [email protected]
    【作者主页】: www.81mil.cn
    【作者QQ号】: 12985462
    【软件名称】: QQ空间人精灵
    【软件大小】: 283 KB
    【下载地址】: 自己搜索下载
    【加壳方式】: Yoda's Crypter v1.3!
    【保护方式】: 网络认证
    【编写语言】: VB6
    【使用工具】: ProtectionID v5.2C, OllyDBG v1.10
    【操作平台】: Windows XP SP2
    【软件介绍】: 刷QQ空间人气的小工具!
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      一、查壳
      
      将文件拖到 ProtectionID v5.2C 识别该程序使用 Yoda's Crypter v1.3 加密!
      
      二、脱壳步骤
      
      程序载入后停在:
      
      004D9060 >  55              PUSH EBP
      004D9061    8BEC            MOV EBP,ESP
      004D9063    53              PUSH EBX
      004D9064    56              PUSH ESI
      004D9065    57              PUSH EDI
      004D9066    60              PUSHAD
      
      在[命令]工具条,输入 bp IsDebuggerPresent 命令并按[回车键]下断点。如果您看不到该工具条,可以使用快捷键ALT+F1打开。
      
      按F9,程序运行到断点IsDebuggerPresent处后自动停止,我们会看到下面的代码:
      
      7C813093 >  64:A1 18000000  MOV EAX,DWORD PTR FS:[18]
      7C813099    8B40 30         MOV EAX,DWORD PTR DS:[EAX+30]
      7C81309C    0FB640 02       MOVZX EAX,BYTE PTR DS:[EAX+2]
      7C8130A0    C3              RETN
      
      按F8跟进到7C8130A0处的RETN指令程序后,程序将返回并出现下列代码,我们开始寻找POPAD指令。
      
      004D988A    0BC0            OR EAX,EAX
      004D988C    74 02           JE SHORT QQ空间人.004D9890
      004D988E    61              POPAD                                    ; 第一次
      004D988F    C3              RETN
      …… …… ……
      004D98F7    CD 07           INT 7
      004D98F9    61              POPAD                                    ; 第二次
      004D98FA    EB 02           JMP SHORT QQ空间人.004D98FE
      004D98FC    CD 01           INT 1
      004D98FE    C3              RETN
      …… …… ……
      004D9975    61              POPAD                                    ; 第三次
      004D9976    50              PUSH EAX
      004D9977    33C0            XOR EAX,EAX
      004D9979    64:FF30         PUSH DWORD PTR FS:[EAX]
      004D997C    64:8920         MOV DWORD PTR FS:[EAX],ESP
      004D997F   /EB 01           JMP SHORT QQ空间人.004D9982
      004D9981   |CC              INT3
      004D9982   \0000            ADD BYTE PTR DS:[EAX],AL
      
      第三次出现的POPAD指令正是我们需要的!鼠标选中 004D9975 按F2下断点后按F9
      运行到这里,之后按F8步进。我们步进到 004D9982 会跳转到系统领空,会出现下面的代码:
      
      7C92EAF0    8B1C24          MOV EBX,DWORD PTR SS:[ESP]
      7C92EAF3    51              PUSH ECX
      7C92EAF4    53              PUSH EBX
      7C92EAF5    E8 C78C0200     CALL ntdll.7C9577C1
      7C92EAFA    0AC0            OR AL,AL
      7C92EAFC    74 0C           JE SHORT ntdll.7C92EB0A
      7C92EAFE    5B              POP EBX
      7C92EAFF    59              POP ECX
      7C92EB00    6A 00           PUSH 0
      7C92EB02    51              PUSH ECX
      7C92EB03    E8 11EBFFFF     CALL ntdll.ZwContinue
      
      用F8键步进到 7C92EB03 ,观察寄存器窗口,注意EDI中出现的值,我们要在寻找内存中此值出现的地址。
      
      寄存器窗口信息如下:
      EAX 00000001
      ECX 0012FCE0
      EDX 7C9237D8 ntdll.7C9237D8
      EBX 0012FCC4
      ESP 0012FCBC
      EBP 0012FFC0
      ESI FFFFFFFF
      EDI 7C930738 ntdll.7C930738
      EIP 7C92EB03 ntdll.7C92EB03
      
      内存中信息如下:
      
      0012FD7C   7C930738  ntdll.7C930738
      0012FD80   FFFFFFFF
      0012FD84   2E009B00刷
      0012FD88   7C92EB94  ntdll.KiFastSystemCallRet
      0012FD8C   0012FFB0
      0012FD90   00000000
      0012FD94   0012FFC0
      0012FD98   004D8017  QQ空间人.004D8017
      
      0023FD7C地址出现了刚才我们要找到EDI中出现的数值 7C930738 。向下几行出现的QQ空间人.004D8017便是我们要找的第一层入口点。下面,处理第二层壳,这层壳同UPX有些相似,作PE检测时老版本软件真就识别为UPX〈修改版〉。
      
      我们在命令行下断点,使用命令 bp 004D8017,并按F9。我们将看到如下代码:
      004D8017    90              NOP
      004D8018    90              NOP
      004D8019    B8 F45A4D00     MOV EAX,QQ空间人.004D5AF4
      004D801E    FFE0            JMP EAX
      
      在这里我们将开始脱第二层壳!一直用按F8键步进,我们一路走到 004D5960  时,就要瞪大眼睛了!这里便是第二层壳的SFX入口!这一步的工作可以完全按照UPX脱壳准则一路向下,利用F4+F8跳过循环和回跳。
      
      004D5960    60              PUSHAD
      004D5961    BE 00204900     MOV ESI,QQ空间人.00492000
      004D5966    8DBE 00F0F6FF   LEA EDI,DWORD PTR DS:[ESI+FFF6F000]
      004D596C    57              PUSH EDI
      004D596D    83CD FF         OR EBP,FFFFFFFF
      004D5970    EB 10           JMP SHORT QQ空间人.004D5982
      
      遵照刚才说过的"F4+F8跳过循环和回跳"原则,谨慎操作!和UPX一样一不留神,程序一启动你可就要重新来过了!
      
      当我们走到 004d5A5F - 004d5A84时,我们遇到了第一个也是唯一一个循环,在这里要小心格外小心!!到了这里距离OEP只有一步之遥了!
      
      004D5A5F    3C 01           CMP AL,1
      004D5A61  ^ 77 F7           JA SHORT QQ空间人.004D5A5A
      004D5A63    803F 04         CMP BYTE PTR DS:[EDI],4
      004D5A66  ^ 75 F2           JNZ SHORT QQ空间人.004D5A5A
      004D5A68    8B07            MOV EAX,DWORD PTR DS:[EDI]
      004D5A6A    8A5F 04         MOV BL,BYTE PTR DS:[EDI+4]
      004D5A6D    66:C1E8 08      SHR AX,8
      004D5A71    C1C0 10         ROL EAX,10
      004D5A74    86C4            XCHG AH,AL
      004D5A76    29F8            SUB EAX,EDI
      004D5A78    80EB E8         SUB BL,0E8
      004D5A7B    01F0            ADD EAX,ESI
      004D5A7D    8907            MOV DWORD PTR DS:[EDI],EAX
      004D5A7F    83C7 05         ADD EDI,5
      004D5A82    88D8            MOV AL,BL
      004D5A84  ^ E2 D9           LOOPD SHORT QQ空间人.004D5A5F
      004D5A86    8DBE 00300D00   LEA EDI,DWORD PTR DS:[ESI+D3000]
      004D5A8C    8B07            MOV EAX,DWORD PTR DS:[EDI]
      004D5A8E    09C0            OR EAX,EAX
      004D5A90    74 45           JE SHORT QQ空间人.004D5AD7
      
      点选 004D5A8C 一行按F4键跳过!向下拉代码,我们在不远处就可以看到 004D5AD7出现了POPAD下一行004D5AD8紧跟着一个jmp跳转指令!还记得怎么找寻UPX的OEP吗?嘿嘿,我们找到了!
      
      004D5ACF  ^\EB D8           JMP SHORT QQ空间人.004D5AA9
      004D5AD1    FF96 B46D0D00   CALL DWORD PTR DS:[ESI+D6DB4]
      004D5AD7    61              POPAD
      004D5AD8  - E9 47B7F2FF     JMP QQ空间人.00401224 ; <== OEP!!
      
      点选004D5AD7一行,按F4跳过来!再按一下F8跳到00401224,这里就是OEP!
      
      
    --------------------------------------------------------------------------------
    【经验总结】
      本想参照 yC v1.2 来脱 yC v1.3结果无功而返,最后才搞明白我碰到的是一个双层壳!
      
    --------------------------------------------------------------------------------
    【版权声明】: 本文由王猛(www.81mil.cn)原创撰写,转载请注明作者并保持文章的完整,谢谢!

                                                           2007年02月24日 18:34:30


    https://www.chinapyg.com/viewthr ... &extra=page%3D1

    我制作了配套视频,有兴趣的可以看视频!附赠WORD要点彩色提示文案一套。(*^__^*) 嘻嘻……!

    [ 本帖最后由 ruyi7952 于 2007-2-26 20:42 编辑 ]

    脱壳yC.v1.3.by.WangMeng.zip

    15.49 KB, 下载次数: 4555, 下载积分: 飘云币 -2 枚

    word 2007排版好的

    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2018-6-6 15:51
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-2-24 19:03:40 | 显示全部楼层
    支持兄弟~~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-2-25 17:07:08 | 显示全部楼层
    是那种高手级别的人!太強暸
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-6-14 20:49
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2007-2-25 18:41:46 | 显示全部楼层
    我好想学会啊!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-21 12:33
  • 签到天数: 17 天

    [LV.4]偶尔看看III

     楼主| 发表于 2007-2-26 20:38:35 | 显示全部楼层
    https://www.chinapyg.com/viewthr ... &extra=page%3D1

    我制作了配套视频,有兴趣的可以看视频!附赠WORD要点彩色提示文案一套。(*^__^*) 嘻嘻……!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2022-12-19 19:56
  • 签到天数: 55 天

    [LV.5]常住居民I

    发表于 2007-2-28 14:41:36 | 显示全部楼层
    写的有点复杂,而且思维方面的内容太少,新手不太容易看
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-2-28 16:01:49 | 显示全部楼层
    认真的学习一下.
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-21 12:33
  • 签到天数: 17 天

    [LV.4]偶尔看看III

     楼主| 发表于 2007-2-28 16:42:50 | 显示全部楼层
    我不是有意写复杂的,Yoda's 做的两个壳子都很复杂的!国外游戏外挂很多用这个壳子,因为它和UPX压缩壳一样是开放源代码的自由软件!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-3-9 14:21:07 | 显示全部楼层
    下来好好学习学习.
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-7-9 22:48
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2007-4-7 18:16:05 | 显示全部楼层
    学习啦。。大致看了一下。
    没看懂。。要搞视频来学习。。才懂
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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