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

More Related Content

Viewers also liked

Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林FLASH开发者交流会
 
公司的成長和製作生產線的管理
公司的成長和製作生產線的管理公司的成長和製作生產線的管理
公司的成長和製作生產線的管理Satoshi SASAKI
 
Think it - 美學力+創造力 = 美力創價
Think it - 美學力+創造力 = 美力創價Think it - 美學力+創造力 = 美力創價
Think it - 美學力+創造力 = 美力創價Aidan Wu
 
2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)
2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)
2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)Ren-Hao (PAN) Pan
 
Odoo 商用系統基本介紹
Odoo 商用系統基本介紹Odoo 商用系統基本介紹
Odoo 商用系統基本介紹Ryan Wu
 
值得一試的小事:打造 UX 導向的產品開發文化
值得一試的小事:打造 UX 導向的產品開發文化值得一試的小事:打造 UX 導向的產品開發文化
值得一試的小事:打造 UX 導向的產品開發文化David Liu
 
Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅
Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅
Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅Aidan Wu
 
Web Design 設計過程與合作經驗分享
Web Design 設計過程與合作經驗分享Web Design 設計過程與合作經驗分享
Web Design 設計過程與合作經驗分享Abby Chiu
 
Let's talk about Web Design
Let's talk about Web DesignLet's talk about Web Design
Let's talk about Web DesignAbby Chiu
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享Will Huang
 
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)阿肯 KEN studio
 
Business project plan
Business project planBusiness project plan
Business project planAhmed Shafie
 
透過Amazon Launchpad Program 速進新創公司成功跨境
透過Amazon Launchpad Program 速進新創公司成功跨境透過Amazon Launchpad Program 速進新創公司成功跨境
透過Amazon Launchpad Program 速進新創公司成功跨境Amazon Web Services
 
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】青年創業及圓夢網 創業計畫書撰寫【創業懶人包】
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】RICK Lin
 
SOBO Design profile
SOBO Design profileSOBO Design profile
SOBO Design profileSOBO Design
 

Viewers also liked (15)

Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林
 
公司的成長和製作生產線的管理
公司的成長和製作生產線的管理公司的成長和製作生產線的管理
公司的成長和製作生產線的管理
 
Think it - 美學力+創造力 = 美力創價
Think it - 美學力+創造力 = 美力創價Think it - 美學力+創造力 = 美力創價
Think it - 美學力+創造力 = 美力創價
 
2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)
2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)
2015 國際志工的學習與突破 (2015 桃園市政府青年局,青年國際志工培訓)
 
Odoo 商用系統基本介紹
Odoo 商用系統基本介紹Odoo 商用系統基本介紹
Odoo 商用系統基本介紹
 
值得一試的小事:打造 UX 導向的產品開發文化
值得一試的小事:打造 UX 導向的產品開發文化值得一試的小事:打造 UX 導向的產品開發文化
值得一試的小事:打造 UX 導向的產品開發文化
 
Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅
Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅
Mobile Interaction Design - 行動世界裡的互動設計之 7 言心旅
 
Web Design 設計過程與合作經驗分享
Web Design 設計過程與合作經驗分享Web Design 設計過程與合作經驗分享
Web Design 設計過程與合作經驗分享
 
Let's talk about Web Design
Let's talk about Web DesignLet's talk about Web Design
Let's talk about Web Design
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享
 
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
 
Business project plan
Business project planBusiness project plan
Business project plan
 
透過Amazon Launchpad Program 速進新創公司成功跨境
透過Amazon Launchpad Program 速進新創公司成功跨境透過Amazon Launchpad Program 速進新創公司成功跨境
透過Amazon Launchpad Program 速進新創公司成功跨境
 
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】青年創業及圓夢網 創業計畫書撰寫【創業懶人包】
青年創業及圓夢網 創業計畫書撰寫【創業懶人包】
 
SOBO Design profile
SOBO Design profileSOBO Design profile
SOBO Design profile
 

More from FLASH开发者交流会

9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁FLASH开发者交流会
 
Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光FLASH开发者交流会
 
Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦FLASH开发者交流会
 
7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁FLASH开发者交流会
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)FLASH开发者交流会
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)FLASH开发者交流会
 
Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)FLASH开发者交流会
 

More from FLASH开发者交流会 (20)

Flash游戏大会 商文烨
Flash游戏大会 商文烨Flash游戏大会 商文烨
Flash游戏大会 商文烨
 
Flash ria usability 刘轩飞
Flash ria usability 刘轩飞Flash ria usability 刘轩飞
Flash ria usability 刘轩飞
 
9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁
 
简化复杂的Flash应用程序 谈熠
简化复杂的Flash应用程序 谈熠简化复杂的Flash应用程序 谈熠
简化复杂的Flash应用程序 谈熠
 
Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光
 
Web base 吴志华
Web base 吴志华Web base 吴志华
Web base 吴志华
 
Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦
 
7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁
 
浅析Flash特效开发 陈勇
浅析Flash特效开发 陈勇浅析Flash特效开发 陈勇
浅析Flash特效开发 陈勇
 
Flash网络通讯处理 陈苏俊
Flash网络通讯处理 陈苏俊Flash网络通讯处理 陈苏俊
Flash网络通讯处理 陈苏俊
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)
 
Flash 原型开发(刘磊)
Flash 原型开发(刘磊)Flash 原型开发(刘磊)
Flash 原型开发(刘磊)
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)Actionscript中的元编程和开发流程解耦(谈熠)
Actionscript中的元编程和开发流程解耦(谈熠)
 
Flex开发实践经验谈(谢敏)
Flex开发实践经验谈(谢敏)Flex开发实践经验谈(谢敏)
Flex开发实践经验谈(谢敏)
 
Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)Flash独立游戏 现状分析与发展思考(陈静)
Flash独立游戏 现状分析与发展思考(陈静)
 
在FLASH平台上开发大型MMO游戏
在FLASH平台上开发大型MMO游戏在FLASH平台上开发大型MMO游戏
在FLASH平台上开发大型MMO游戏
 
Moshen Mochi Overview
Moshen Mochi OverviewMoshen Mochi Overview
Moshen Mochi Overview
 
多元件鼠标性能测试 鞠海深
多元件鼠标性能测试 鞠海深多元件鼠标性能测试 鞠海深
多元件鼠标性能测试 鞠海深
 

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