Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Like this? Share it with your network

Share

Swf文件格式和abc代码混淆工具 黄珏坤

on

  • 4,518 views

 

Statistics

Views

Total Views
4,518
Views on SlideShare
4,518
Embed Views
0

Actions

Likes
3
Downloads
75
Comments
1

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • 我们的这个混淆工具已经正式发布了:
    http://www.orandea.com/product?lang=cn
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Swf文件格式和abc代码混淆工具 黄珏坤 Presentation Transcript

  • 1. SWF文件格式和ABC代码混淆工具的开发
    黄珏珅 (Tony Huang)
    上海橙创数码科技有限公司
  • 2. About me
    上海橙创数码科技有限公司
    网页游戏从业人员
    我的博客
    http://www.greatony.com
    我的Email地址
    tony@orandea.com
  • 3. 小广告
    我们公司正在
    为我们的网页游戏《战争艺术》寻找联合运营
    为我们的团队招募新的伙伴
    AS3工程师
    C#工程师
    如果你们感兴趣,就用QQ弹死我吧:
    17746369
    当然如果你不用QQ,也欢迎大家写信给我:
    tony@orandea.com
  • 4. Agenda
    出发点和目标
    SWF文件格式
    SWF文件格式
    ABC文件格式
    ABC代码混淆工具的开发
    符号重命名
    插入无用的指令
  • 5. 出发点
    游戏的客户端成为他们编写外挂的参考资料?
    游戏的客户端实现的高性能算法被别人盗用?
    游戏被破解后,广泛传播,却不能给自己带来合理的收益?
    我们不能任由别人践踏我们的知识产权!!
  • 6. 目标
    现在市场上主要两款主流的破解软件:
    硕思闪客精灵
    Action Script Viewer
  • 7. 目标
    硕思闪客精灵 专业版 5.6
    ActionScript Viewer 2010/6
    让他们统统见鬼去吧
  • 8. DEMO
    目标
  • 9. 从哪里入手
    SWF的文件格式
    http://www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf_file_format_spec_v10.pdf
    ABC的文件格式
    AVM虚拟机的工作方式
    http://www.adobe.com/content/dam/Adobe/en/devnet/actionscript/articles/avm2overview.pdf
  • 10. SWF文件格式
    众所周知,是Flash Player使用的内容格式
    一种二进制的文件格式
    支持压缩
    对流式的内容做过优化
  • 11. SWF文件格式
  • 12. SWF文件头
    签名
    FWS或者CWS
    压缩标志
    由签名的第一个字符来确定
    F代表未压缩的SWF文件
    C代表压缩过的SWF文件
    使用了zlib的deflate压缩算法
    版本号
    原始文件长度
    在压缩之前的SWF文件的大小,用以校验解压后的SWF文件是否正确
    动画的大小、帧率、帧数
  • 13. SWF的Tag
    Tag就是数据块
    一张图片
    一个图形
    一些参数
    一个ABC文件
    等等……
    今天我们主要讨论的是ABC的代码混淆,所以不去讨论其他TAG的特点
  • 14. DEMO
    看看SWF文件里面都有些什么?
  • 15. ABC文件格式
    * 参考文档:avm2_overview.pdf section 4 page 18
  • 16. ABC各部分关系
  • 17. ABC各部分关系(常量池)
    命名空间常量
    整形常量
    无符号整形常量
    命名空间集合常量
    双精度浮点常量
    字符串常量
    Multiname常量
    常量池
  • 18. Demo程序
    privatefunctiongetFriendlyValue(v:int): String {
    varstringValue : String = v.toString();
    if (v < 0) return"negative: " + stringValue;
    if (v > 100) return"large: " + stringValue;
    return"normal: " + stringValue;
    }
  • 19. DEMO
    上面的代码会产生什么样的编译结果?
  • 20. DEMO – Release编译
  • 21. DEMO – Debug编译
    包含了Debugfile, Debugline, Debug指令
    如:Debug 1, v, 0, 36
    Debug 1, stringValue, 1, 37
    表明local1的名字是v,local2的名字是stringValue
    参数名和本地变量的名字全部都暴露了
  • 22. 符号重命名
    安全
    由于大家引用的只是一个索引,所以修改了符号的名字以后不会造成程序不能正常执行
    需要注意一些会使用反射来访问的符号
    需要注意和真正的字符串常量有重叠的部分
    有效
    由于符号的名字和avm的运行没有关系,可以将名字全部都换成非法的字符(as3不支持的类名)
  • 23. 符号重命名
    找到所有的类名
    剔除所有对外暴露的类名
    剔除所有被pushstring指令引用的字符串
    将相应的字符串常量重命名成非法字符
  • 24. DEMO
    符号重命名的效果
  • 25. 插入无用指令
    任何命令式的语言中,if语句都是最常用的
    所以我们只要拿if下手就能够实现目标了
    测试代码:
    return (v > 100) ? 1 : 0;
  • 26. 插入无用指令
    如果变成这样:
    Getlocal1
    Pushbyte100
    IfngtLabel0
    Jump Real
    Pushbyte0
    Setlocal0
    Real:
    Pushbyte1
    Returnvalue
    Label0:
    Pushbyte0
    Returnvalue
    编译结果
    Getlocal1
    Pushbyte100
    Ifngtlabel0
    Pushbyte1
    Returnvalue
    Label0:
    Pushbyte0
    Returnvalue
    效果相当于:
    this = 0;
  • 27. DEMO
    插入无用指令的效果
  • 28. 再次小广告
    我们公司正在
    为我们的网页游戏《战争艺术》寻找联合运营
    为我们的团队招募新的伙伴
    AS3工程师
    C#工程师
    如果你们感兴趣,就用QQ弹死我吧:
    17746369
    当然如果你不用QQ,也欢迎大家写信给我:
    tony@orandea.com
  • 29. Q/A
  • 30. 谢谢