飘云阁安全论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

查看: 27818|回复: 113

[原创] 黄河Flash播放器 V7.62 简单分析(十一种破解方案,初学者可检测下自己的爆破功底)

    [复制链接]

该用户从未签到

发表于 2009-11-9 13:01:31 | 显示全部楼层 |阅读模式
黄河Flash播放器 V7.62 简单分析

    这个软件破解不难,明码比较。该程序的验证思路比较典型,本文只谈针对脱壳版本的爆破方式,软件请自行下载。

先给出该程序的两处关键点:

---------------------------------------------------

注册时验证:

004BBB9D  |.  E8 1ADFFFFF   CALL 004B9ABC                    ;  算法CALL
004BBBA2  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]     ;  真码
004BBBA5  |.  58            POP EAX                          ;  假码
004BBBA6  |.  E8 3D91F4FF   CALL 00404CE8
004BBBAB  |.  75 34         JNZ SHORT 004BBBE1

---------------------------------------------------

启动时验证:
其中[EBP-24]存放真码,[EBP-20]存放假码

004C30A3      8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]   // 真码给EDX
004C30A6      58            POP EAX                         // 假码POP到EAX
004C30A7  |.  E8 3C1CF4FF   CALL 00404CE8                   // 字符串比较函数
004C30AC  |.  75 1A         JNZ SHORT 004C30C8
004C30AE  |.  C605 38994C00>MOV BYTE PTR DS:[4C9938],1
004C30B5  |.  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
004C30B8  |.  8B40 FC       MOV EAX,DWORD PTR DS:[EAX-4]
004C30BB  |.  8B80 38030000 MOV EAX,DWORD PTR DS:[EAX+338]
004C30C1  |.  33D2          XOR EDX,EDX
004C30C3  |.  E8 78E7F8FF   CALL 00451840
004C30C8  |>  33C0          XOR EAX,EAX

-----------------------------------------------

0分 -- 修改注册跳转:
004BBBAB  |.  75 34         JNZ SHORT 004BBBE1

-----------------------------------------------

以下为可以成功爆破的几种修改方式,我根据修改方法来给出相应的参考分数。

1分 -- 启动验证修改跳转法:
004C30AC  75  ==> 74   

2分 -- 启动验证修改跳转距离法
004C30AD  1A  ==> 00  

3分 -- 修改比较寄存器法:

004C30A3      8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
004C30A6  |.  58            POP EAX
修改为:
004C30A3      58            POP EAX                                  ;  00ACABE8
004C30A4      8BD0          MOV EDX,EAX
004C30A6      90            NOP

4分 -- 修改比较数据法:
004C30A5  DC ==> E0

004C30A3      8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
修改为:
004C30A3      8B55 E0       MOV EDX,DWORD PTR SS:[EBP-20]

5分 -- 堆栈数据利用法:
004C30A4  55 ==> 14
004C30A5  DC ==> 24

004C30A3      8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
修改为:
004C30A3      8B1424        MOV EDX,DWORD PTR SS:[ESP]

----------------------------------------------

6分 -- 明码比较软件自动保存真码法:
004BBBAC  34  ==> 00
004BBBC7  E8  ==> F4

004BBBC5      8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
修改为:
004BBBC5     |8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]        // 保存真码

7分 -- 等价替换验证函数:关键数据利用法

第一处:
004C3464   .  E8 ABFAFFFF        CALL 004C2F14          // 启动验证函数
修改为:
004C3464      E8 43FCFFFF        CALL 004C30AC

第二处:
004C30AC     /75 1A              JNZ SHORT 004C30C8
004C30AE     |C605 38994C00 01   MOV BYTE PTR DS:[4C9938],1
004C30B5     |8B45 08            MOV EAX,DWORD PTR SS:[EBP+8]
004C30B8     |8B40 FC            MOV EAX,DWORD PTR DS:[EAX-4]
004C30BB     |8B80 38030000      MOV EAX,DWORD PTR DS:[EAX+338]
004C30C1     |33D2               XOR EDX,EDX
004C30C3     |E8 78E7F8FF        CALL 00451840
004C30C8     \33C0               XOR EAX,EAX
修改为:
004C30AC      C605 38994C00 01   MOV BYTE PTR DS:[4C9938],1
004C30B3      8B4424 04          MOV EAX,DWORD PTR SS:[ESP+4]   // 修改空间不足 借用JNZ那行代码空间
004C30B7      90                 NOP
004C30B8  |.  8B40 FC            MOV EAX,DWORD PTR DS:[EAX-4]
004C30BB  |.  8B80 38030000      MOV EAX,DWORD PTR DS:[EAX+338]
004C30C1  |.  33D2               XOR EDX,EDX
004C30C3  |.  E8 78E7F8FF        CALL 00451840
004C30C8      C3                 RETN
004C30C9      90                 NOP


8分 -- 等价替换启动验证函数:全局变量赋值法

修改为:
004C2F14  /$  C605 38994C00 01   MOV BYTE PTR DS:[4C9938],1
004C2F1B  |.  8B4424 04          MOV EAX,DWORD PTR SS:[ESP+4]
004C2F1F  |.  8B40 FC            MOV EAX,DWORD PTR DS:[EAX-4]
004C2F22      8B80 38030000      MOV EAX,DWORD PTR DS:[EAX+338]
004C2F28      B2 00              MOV DL,0
004C2F2A      8850 3E            MOV BYTE PTR DS:[EAX+3E],DL
004C2F2D      C3                 RETN
004C2F2E      90                 NOP
004C2F2F      90                 NOP


9分:将真码赋值到假码内存写ASM汇编代码实现

10分:将 strcmp 函数修改为 strcpy
...

其他的破解方式,比如SMC、Loader、注入等等,也要建立在对其验证流程的分析基础之上,有了分析结果,写代码就是手工活,所以我们这里暂不讨论。

该程序的破解方法应该还有,欢迎大家补充。这8种修改方法是本轮教学中为拓宽学员破解思路和修改方式的一个总结归纳,借此文来告诉初学者,学习软件破解要重过程,轻结果。不要为了破解而破解,不要为了发布破解而破解。

评分

参与人数 2威望 +12 飘云币 +8 收起 理由
醉月清风 + 8 + 8 校长威武!
wzgangwzgang + 4 很给力!

查看全部评分

  • TA的每日心情

    16 小时前
  • 签到天数: 1248 天

    [LV.10]以坛为家III

    发表于 2009-11-9 20:02:01 | 显示全部楼层
    感谢校长详细分析。慢慢吸收。
  • TA的每日心情
    开心
    2016-4-23 17:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-11-9 20:25:37 | 显示全部楼层
    感谢校长详细分析,让人非常受教

    该用户从未签到

     楼主| 发表于 2009-11-9 20:31:11 | 显示全部楼层
    该帖 是作业贴 PYG学员需将本帖做成视频
  • TA的每日心情

    2017-6-17 16:59
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-11-9 21:07:25 | 显示全部楼层
    我一会根据校长和我自己的知识。。做成视频
    1是学习新知识
    2是巩固方法
    3是加深记忆
    4是备忘录呵呵

    后两种有点看不懂啊~~怎么办啊

    视频已经上传

    [ 本帖最后由 yanhuohua999 于 2009-11-10 12:24 编辑 ]
  • TA的每日心情

    2015-7-21 19:57
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-11-9 21:37:26 | 显示全部楼层
    占位留影,待编辑
  • TA的每日心情

    2017-7-19 15:45
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-11-9 21:50:05 | 显示全部楼层
    收到,留作视频贴,也算是个小结。
  • TA的每日心情
    开心
    2020-7-16 11:27
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2009-11-9 21:50:35 | 显示全部楼层
    晚上再好好总结吸收吸收

    该用户从未签到

    发表于 2009-11-10 10:43:02 | 显示全部楼层
    小弟向N大学习了/:014
  • TA的每日心情
    开心
    2019-6-18 08:20
  • 签到天数: 279 天

    [LV.8]以坛为家I

    发表于 2009-11-10 12:54:50 | 显示全部楼层
    后面的三种要好好吸收下。。争取晚上写好InstantDemo的作业后把N大的这个作业录好视频。。。
    您需要登录后才可以回帖 登录 | 快速注册

    本版积分规则

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