CN102890630B - swf文件中外部链接的去除方法 - Google Patents
swf文件中外部链接的去除方法 Download PDFInfo
- Publication number
- CN102890630B CN102890630B CN201210313204.1A CN201210313204A CN102890630B CN 102890630 B CN102890630 B CN 102890630B CN 201210313204 A CN201210313204 A CN 201210313204A CN 102890630 B CN102890630 B CN 102890630B
- Authority
- CN
- China
- Prior art keywords
- label
- doabc
- swf file
- length value
- abcdata
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种swf文件中外部链接的去除方法,包括:读取源swf文件;对所述源swf文件进行解析,定位到常量池;对常量池进行解析,获取所述常量池中存储的各个字符串;判断各个所述字符串中是否存在外部链接字符串,如果判断结果为是,则执改变所述常量池中存储的与所述外部链接字符串对应的字符串的值,使其失效,得到不包含外部链接的swf文件。在不需要整个swf文件的全部源代码的情况下,通过修改原外部链接使其失效,从而方便的去除swf文件中的外部链接,增强了用户使用swf文件的用户体验。
Description
技术领域
本发明属于计算机应用技术领域,具体涉及一种swf文件中外部链接的去除方法。
背景技术
Flash游戏是近年来新兴起的一种游戏形式,由于其具有游戏简单、操作方便、绿色、无需安装和文件体积小等优点而渐渐被广大网友喜爱。
目前,发布到各个网站的Flash游戏通常包含有各类广告的外部链接,玩家在进行游戏时,在游戏画面的某个位置常常显示某个外部链接,其中,外部链接的触发形式包括点击图片触发或点击按钮触发;例如:游戏画面的右上角显示有一个产品的广告图片,玩家在游戏过程中,当无心点击到该广告图片时,页面即会自动跳转到该广告图片对应的一个广告网站。因此,一方面,当游戏画面的局部显示外部链接时,会降低整个游戏画面的观赏度,同时,也存在防碍玩家进行游戏操作;另一方面,在玩家进行游戏的过程中,由于无心点击外部链接而导致页面跳转时,会严重降低玩家的游戏体验,降低玩家进行游戏的娱乐性。
因此,现有技术中迫切需要一种方便去除Flash游戏中外部链接的方法。
发明内容
针对现有技术存在的缺陷,本发明提供一种swf文件中外部链接的去除方法,在不需要整个swf文件的全部源代码的情况下,就可以方便的去除swf文件中的外部链接,从而增强了用户使用swf文件的用户体验。
本发明采用的技术方案如下:
本发明提供一种swf文件中外部链接的去除方法,包括以下步骤:
S1,读取源swf文件;
S2,对所述源swf文件进行解析,定位到所述源swf文件中的DoABC标签;
S3,对所述DoABC标签进行解析,定位到所述DoABC标签中的ABCData数据体;
S4,对所述ABCData数据体进行解析,定位到所述ABCData数据体中的常量池;
S5,对所述常量池进行解析,获取所述常量池中存储的各个字符串;
S6,判断各个所述字符串中是否存在外部链接字符串,如果判断结果为是,则执行S7;如果判断结果为否,则得到所述源swf文件中不存在外部链接的结论,并结束流程;
S7,改变所述常量池中存储的与所述外部链接字符串对应的字符串的值,使其失效,得到不包含外部链接的swf文件。
优选的,S2具体为:
对所述源swf文件进行解析,获取所述源swf文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值;
对所述文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值进行求和计算,获得所述DoABC标签的位置值;
根据所述DoABC标签的位置值直接定位到所述DoABC标签。
优选的,S3具体为:
对所述DoABC标签进行解析,得到所述DoABC标签的结构;所述DoABC标签的结构包括标签文件头、DoABC属性标志、标签名称和ABCData数据体;
获取所述标签文件头的长度值、所述DoABC属性标志的长度值和所述标签名称的长度值;
对所述标签文件头的长度值、所述DoABC属性标志的长度值和所述标签名称的长度值进行求和计算,获得所述ABCData数据体的位置值;
根据所述ABCData数据体的位置值直接定位到所述ABCData数据体。
优选的,S4具体为:
对所述ABCData数据体进行解析,获取所述ABCData数据体中位于所述常量池之前的数据长度值;
根据所述数据长度值直接定位到所述ABCData数据体中的常量池。
优选的,S6中,所述外部链接字符串为navigateTo URL字符串。
优选的,S7之后,还包括:
S8,存储所述不包含外部链接的swf文件。
本发明的有益效果如下:
本发明提供的swf文件中外部链接的去除方法,在不需要整个swf文件的全部源代码的情况下,通过修改原外部链接使其失效,从而方便的去除swf文件中的外部链接,增强了用户使用swf文件的用户体验。
附图说明
图1为本发明提供的swf文件中外部链接的去除方法的流程示意图。
具体实施方式
以下结合附图对本发明提供的swf文件中外部链接的去除方法进行详细介绍:
如图1所示,本发明提供的swf文件中外部链接的去除方法,包括以下步骤:
S1,读取源swf文件;
S2,对所述源swf文件进行解析,定位到所述源swf文件中的DoABC标签,其中,DoABC全称为Do ActionScript Byte Code,是处理ActionScript3字节码的标签,用于保存ABCData(ActionScript Byte Code Data)和描述ABCData属性和名称的标签,具有区别作用。在一个swf文件中可能存在多个DoABC标签,调用者可以通过DoABC的名称来决定调用哪个标签。
现有swf文件的文件结构如表1所示:
表1:现有swf文件的文件结构表
从表1可以看出,swf文件由文件头以及数据体组成;其中,数据体由多个不同种类的标签定义得到。例如:形状定义标签、DoABC标签和结束标签等。其中,DoABC标签是用于存储as3.0代码的标签。
对所述源swf文件进行解析,定位到所述源swf文件中的DoABC标签具体为:
对所述源swf文件进行解析,获取所述源swf文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值;
对所述文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值进行求和计算,获得所述DoABC标签的位置值;
根据所述DoABC标签的位置值直接定位到所述DoABC标签。
例如:在解析源swf文件时,文件头的长度值为23,在DoABC标签之前存在两个标签,分别为文件属性标签和形状定义标签,并且,文件属性标签长度值为15,形状定义标签长度值为18,因此,DoABC标签的位置=(0+文件头长度值+文件属性标签长度值+形状定义标签长度值)=(0+23+15+18)=56;因此,DoABC标签的位置为56。
S3,对所述DoABC标签进行解析,定位到所述DoABC标签中的ABCData(ActionScript Byte Code Data,ActionScript3的字节码的数据)数据体,在数据体中,将会完整的展现swf文件中的代码部分,如角色的行为、小怪行为和场景变换等涉及逻辑部分的处理。
现有DoABC标签的结构如表2所示:
表2:现有DoABC标签的结构表
标签文件头 | DoABC属性标志 | 标签名称 | ABCData数据体 |
因此,本发明中,对所述DoABC标签进行解析,定位到所述DoABC标签中的ABCData数据体包括以下步骤:
对所述DoABC标签进行解析,得到所述DoABC标签的结构;所述DoABC标签的结构包括标签文件头、DoABC属性标志、标签名称和ABCData数据体;
获取所述标签文件头的长度值、所述DoABC属性标志的长度值和所述标签名称的长度值;
对所述标签文件头的长度值、所述DoABC属性标志的长度值和所述标签名称的长度值进行求和计算,获得所述ABCData数据体的位置值;
根据所述ABCData数据体的位置值直接定位到所述ABCData数据体。
S4,对所述ABCData数据体进行解析,定位到所述ABCData数据体中的常量池;
现有ABCData数据体的结构如表3所示:
表3:现有ABCData数据体的结构表
版本号 | 常量池 | 函数名称 | 元数据 | 类 | 脚本 | 函数体 |
本步骤具体为:
对所述ABCData数据体进行解析,获取所述ABCData数据体中位于所述常量池之前的数据长度值;现在结构中,位于所述常量池之前的数据长度值即为版本号的长度值。
根据所述数据长度值直接定位到所述ABCData数据体中的常量池。
S5,对所述常量池进行解析,获取所述常量池中存储的各个字符串;
S6,判断各个所述字符串中是否存在外部链接字符串,如果判断结果为是,则执行S7;如果判断结果为否,则得到所述源swf文件中不存在外部链接的结论,并结束流程;
本步骤中,外部链接字符串通常表示为navigateTo URL。navigateTo URL意思为链接到指定网址,URL全称为Uniform/Universal Resource Locator,表示网页地址,在ABCData数据体中,产生外链行为均需要通过调用这个字符窜才能成功,如需要链接到4399,则可以通过navigateToURL(″www.4399,com″)完成。
S7,改变所述常量池中存储的与所述外部链接字符串对应的字符串的值,使其失效,得到不包含外部链接的swf文件。
由于在swf中,通过函数名称识别函数作用,如:navigateToURL字符串的函数作用为:添加外部链接,而trace的作用为:打印所传参数内容,如果将navigateToURL改为trace,则swf认为这个函数的作用为打印所传参数内容,则外部链接无法实现添加,由此得到不包含外部链接的swf文件。
上述S1-S7为去除一个源swf文件中外部链接的方法,本领域普通技术人员可以理解,如图2所示,可以设置一个专门的服务器,通过服务器分别对多个源swf文件进行去除外部链接的操作,具体的,包括以下步骤:
S11,服务器建立等候队列,等候队列为按照服务器接收时间先后顺序排列的多个源swf文件;
S12,服务器从所述等候队列中读取当前排列在第一位的第一源swf文件;
S13,服务器对所述第一源swf文件按照S1-S7步骤进行去除外部链接的处理,在处理完毕后,将所述第一源swf文件移除所述等候队列;
S14,服务器判断等候队列是否为空,如果判断结果为是,则结束流程;如果判断结果为否,则重复执行S12-S14;如果判断结果为是,则结束流程。
综上所述,本发明提供的swf文件中外部链接的去除方法,在不需要整个swf文件的全部源代码的情况下,通过修改原外部链接使其失效,从而方便的去除swf文件中的外部链接,增强了用户使用swf文件的用户体验。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (1)
1.一种swf文件中外部链接的去除方法,其特征在于,包括以下步骤:
S1,读取源swf文件;
S2,对所述源swf文件进行解析,定位到所述源swf文件中的DoABC标签;
S3,对所述DoABC标签进行解析,定位到所述DoABC标签中的ABCData数据体;
S4,对所述ABCData数据体进行解析,定位到所述ABCData数据体中的常量池;
S5,对所述常量池进行解析,获取所述常量池中存储的各个字符串;
S6,判断各个所述字符串中是否存在外部链接字符串,如果判断结果为是,则执行S7;如果判断结果为否,则得到所述源swf文件中不存在外部链接的结论,并结束流程;
S7,改变所述常量池中存储的与所述外部链接字符串对应的字符串的值,使其失效,得到不包含外部链接的swf文件;
其中,S2具体为:
对所述源swf文件进行解析,获取所述源swf文件中文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值;
对所述文件头的长度值以及位于所述DoABC标签之前的各个标签的长度值进行求和计算,获得所述DoABC标签的位置值;
根据所述DoABC标签的位置值直接定位到所述DoABC标签;
其中,S3具体为:
对所述DoABC标签进行解析,得到所述DoABC标签的结构;所述DoABC标签的结构包括标签文件头、DoABC属性标志、标签名称和ABCData数据体;
获取所述标签文件头的长度值、所述DoABC属性标志的长度值和所述标签名称的长度值;
对所述标签文件头的长度值、所述DoABC属性标志的长度值和所述标签名称的长度值进行求和计算,获得所述ABCData数据体的位置值;
根据所述ABCData数据体的位置值直接定位到所述ABCData数据体;
其中,S4具体为:
对所述ABCData数据体进行解析,获取所述ABCData数据体中位于所述常量池之前的数据长度值;
根据所述数据长度值直接定位到所述ABCData数据体中的常量池;
其中,S6中,所述外部链接字符串为navigateTo URL字符串;
S7之后,还包括:
S8,存储所述不包含外部链接的swf文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210313204.1A CN102890630B (zh) | 2012-08-29 | 2012-08-29 | swf文件中外部链接的去除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210313204.1A CN102890630B (zh) | 2012-08-29 | 2012-08-29 | swf文件中外部链接的去除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102890630A CN102890630A (zh) | 2013-01-23 |
CN102890630B true CN102890630B (zh) | 2015-08-26 |
Family
ID=47534139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210313204.1A Active CN102890630B (zh) | 2012-08-29 | 2012-08-29 | swf文件中外部链接的去除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102890630B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294539B (zh) * | 2013-05-09 | 2016-04-06 | 四三九九网络股份有限公司 | 批量解密flash游戏的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937340A (zh) * | 2009-06-29 | 2011-01-05 | 中兴通讯股份有限公司 | 使用补丁对软件进行动态升级与控制的方法和装置 |
CN102592080A (zh) * | 2011-12-26 | 2012-07-18 | 北京奇虎科技有限公司 | flash恶意文件检测方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100175057A1 (en) * | 2009-01-06 | 2010-07-08 | David Simons | Associating advertisements and game data in a flash-based gaming environment |
US8813232B2 (en) * | 2010-03-04 | 2014-08-19 | Mcafee Inc. | Systems and methods for risk rating and pro-actively detecting malicious online ads |
US8510829B2 (en) * | 2010-06-24 | 2013-08-13 | Mcafee, Inc. | Systems and methods to detect malicious media files |
-
2012
- 2012-08-29 CN CN201210313204.1A patent/CN102890630B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937340A (zh) * | 2009-06-29 | 2011-01-05 | 中兴通讯股份有限公司 | 使用补丁对软件进行动态升级与控制的方法和装置 |
CN102592080A (zh) * | 2011-12-26 | 2012-07-18 | 北京奇虎科技有限公司 | flash恶意文件检测方法及装置 |
Non-Patent Citations (2)
Title |
---|
adobe."The actionScript Byte Code(abc) format".《ActionScript Virtual Machine 2(AVM2) Overview》.2007, * |
adobe."SWF Structure Summary".《SWF File Format Specification Version 10》.2008, * |
Also Published As
Publication number | Publication date |
---|---|
CN102890630A (zh) | 2013-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866512B (zh) | 提取网页内容的方法、装置及系统 | |
CN105138340A (zh) | 一种Native与Web页面的交互方法和系统 | |
JP2010506216A5 (zh) | ||
CN105279251B (zh) | 虚拟礼物展示方法和装置 | |
CN103345493B (zh) | 用于移动终端上的文本内容显示的方法、装置及系统 | |
CN103577466A (zh) | 一种在浏览器中显示网页内容的方法和装置 | |
CN101404080A (zh) | 一种广告嵌入和显示方法及装置 | |
CN103902679B (zh) | 搜索推荐方法和装置 | |
CN104133865A (zh) | 一种广告过滤方法以及装置 | |
CN103607668B (zh) | 一种视频播放方法及装置 | |
CN106095816B (zh) | 信息投放方法和装置 | |
CN108090123A (zh) | 净化网络小说页面的方法与装置 | |
CN102880707A (zh) | 网页主体内容识别方法和装置 | |
CN104598571A (zh) | 一种多媒体资源的播放方法及装置 | |
CN101174264A (zh) | 多媒体书签制作系统及方法 | |
CN102890630B (zh) | swf文件中外部链接的去除方法 | |
CN105550207A (zh) | 一种信息推广方法及装置 | |
CN110543307A (zh) | 一种应用构建方法及装置 | |
CN104978169A (zh) | 期刊阅读应用的sdk处理方法及装置 | |
CN101615189A (zh) | 在手机屏幕上增大字体缩放比例渲染显示网页文字内容 | |
CN103399879A (zh) | 基于用户搜索日志的兴趣实体获得方法及装置 | |
CN105809469A (zh) | 与移动通信关键字搜索联动的广告系统和广告方法 | |
CN102567366A (zh) | 实现对网页重新排版的方法 | |
CN102509329B (zh) | 渲染字体的方法及系统 | |
Seale | Emerging mobile strategies for news publishers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |