一种手机应用软件自动生成水印的方法和系统技术方案

技术编号:10106660 阅读:388 留言:0更新日期:2014-06-01 21:24
本发明专利技术涉及一种手机应用软件自动生成水印的方法和系统,所述方法包括:水印产生步骤,给指定图片产生一个ASCII字符图片,模糊并分割该ASCII字符图片,将分割的每一部分ASCII字符图片映射为一段代码,形成水印代码;水印插入步骤,通过指定事件序列获取手机应用程序的执行路径,将执行路径中仅有一个入口点和一个出口点的程序序列作为基本块,选取仅执行一次的基本块,在该基本块的原始代码中随机插入水印代码;水印提取步骤:使用相同的事件序列运行手机应用程序,扫描手机应用程序的内存,并从内存中定位水印,再提取水印进行验证。本发明专利技术的水印构建方式独特,且不易被识别,能有效地识别重组软件,保护手机应用软件。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及一种手机应用软件自动生成水印的方法和系统,所述方法包括:水印产生步骤,给指定图片产生一个ASCII字符图片,模糊并分割该ASCII字符图片,将分割的每一部分ASCII字符图片映射为一段代码,形成水印代码;水印插入步骤,通过指定事件序列获取手机应用程序的执行路径,将执行路径中仅有一个入口点和一个出口点的程序序列作为基本块,选取仅执行一次的基本块,在该基本块的原始代码中随机插入水印代码;水印提取步骤:使用相同的事件序列运行手机应用程序,扫描手机应用程序的内存,并从内存中定位水印,再提取水印进行验证。本专利技术的水印构建方式独特,且不易被识别,能有效地识别重组软件,保护手机应用软件。【专利说明】一种手机应用软件自动生成水印的方法和系统
本专利技术涉及手机应用软件保护领域,特别是针对安卓应用软件和ios应用软件,涉及的一种手机应用软件自动生成水印的方法和系统。
技术介绍
智能手机已经成为人们日常生活中很普遍的工具,很多传统计算机的应用也已经转移到智能手机上,例如社交网络,游戏等。因此,智能手机应用软件的安全也日益重要。安卓应用软件和ios应用软件目前在智能手机应用软件中占有很大比例,其面临多种威胁,其中包括重组,即添加恶意负载或广告给合法的应用软件并形成新的重组软件。攻击者经常使用重组的方法,因为该方法需要修改的内容很少。当前的研究显示15%的安卓市场应用软件都是重组的软件。由于普通用户无法区分合法软件和重组的软件,因此攻击者重组软件后被查出的可能性很小。现有的检测手机市场中重组软件的技术主要包括基于图的方法和基于哈希的方法。但是,当软件中存在模糊技术时,检测率是低的。模糊技术主要包括对控制流和数据流进行转换,使现有技术难于检测出重组的软件。因此,考虑新的方法,检测出非法的重组软件,保护软件版权及用户使用的安全性是非常有必要的。在手机应用软件中加入水印可以有效解决这个问题。通过从应用软件中提取水印,可以识别出应用软件的拥有者,并对重组的软件进行有效判定。通常有两种水印方法:静态水印和动态水印。静态水印是将数据或变量插入到应用程序中,一旦水印被破坏,便不能从目标应用软件中提取正确的水印。动态水印使用运行信息作为水印,例如路径和内存状态,但是构建水印的动态信息容易被识别。结合动态水印和静态水印的特点,本专利技术提出了一种新的手机应用软件自动生成水印方法。
技术实现思路
本专利技术所要解决的技术问题是提供一种手机应用软件自动生成水印方法,用于解决识别手机应用软件的重组软件的问题。本专利技术解决上述技术问题的技术方案如下:一种手机应用软件自动生成水印的方法,包括:水印产生步骤:给指定图片产生一个ASCII字符图片,模糊并分割该ASCII字符图片,将分割的每一部分ASCII字符图片映射为一段代码,将每段代码作为水印代码的一个片段,形成水印代码;水印插入步骤:通过指定事件序列获取手机应用程序的执行路径,将执行路径中仅有一个入口点和一个出口点的程序序列作为基本块,选取仅执行一次的基本块,在该基本块的原始代码中随机插入水印代码;水印提取步骤:使用与水印插入步骤相同的事件序列运行手机应用程序,扫描手机应用程序的内存,并从内存中定位水印,再提取水印进行验证。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步,所述水印产生步骤还包括:在分割ASCII字符图片前,随机选择ASCII字符图片中的一部分字符,并将其随机放入分割成的各部分ASCII字符图片中。进一步,模糊ASCII字符图片的方法具体包括:在不影响图片识别的情况下,在原始ASCII字符图片的空白区域加入若干与原始ASCII字符图片不相关的字符。进一步,所述步骤2插入水印代码后,采用适用的常量对水印代码进行变形,且在变形后的水印代码中创建新的语句,使变形后的水印代码与原始水印代码间的语义不变。进一步,所述步骤2插入水印代码后,采用运行时发生变化的变量对水印代码进行变形。进一步,所述步骤I中,在水印代码的开始处插入标志位,该标志位用于表示水印的开始;所述步骤3中定位水印时,检查内存中所有对象,若对象中带有插入的标志位,则此对象为水印。对应地,本专利技术的技术方案还包括一种手机应用程序自动生成水印的系统,包括依次连接的水印产生模块、水印插入模块和水印提取模块:所述水印产生模块,用于给指定图片产生一个ASCII字符图片,模糊并分割该ASCII字符图片,将分割的每一部分ASCII字符图片映射为一段代码,将各段代码叠加,形成水印代码;所述水印插入模块,用于通过指定事件序列获取手机应用程序的执行路径,将执行路径中仅有一个入口点和一个出口点的程序序列作为基本块,选取仅执行一次的基本块,在该基本块的原始代码中随机插入水印代码;所述水印提取模块,用于使用与所述水印插入模块中相同的事件序列运行手机应用程序,扫描手机应用程序的内存,并从内存中定位水印,再提取水印进行验证。进一步,所述水印产生模块还用于:在分割ASCII字符图片前,随机选择ASCII字符图片中的一部分字符,并将其随机放入分割后成的各部分ASCII字符图片中。进一步,所述水印插入模块插入水印代码后,采用适用的常量对水印代码进行变形,且在变形后的水印代码中创建新的语句,使为变形后的水印代码与原始水印代码间的语义不变。进一步,所述水印插入模块插入水印代码后,采用运行时发生变化的变量对水印代码进行变形。本专利技术的有益效果是:本专利技术通过对图片的内在特征进行提取,形成ASCII格式图片,对其进行模糊与分割,并将图中的每一部分映射为一段代码,形成水印代码嵌入到原始代码中;在嵌入过程中,通过指定输入事件序列,选择必经执行路径上的基本块进行插入,并对代码中的常量与变量进行一定的变形,保证其不被恶意用户识别并替换;最后在水印验证过程中,可以通过特殊标识有效识别水印部分并进行比较,对软件进行保护。本专利技术在手机应用软件中加入了特殊构建的水印,水印构建方式独特,且不易被识别,能有效地识别重组软件,保护手机应用软件。【专利附图】【附图说明】图1为本专利技术普通图片和ASCII字符图片的示例图;图2为本专利技术手机应用软件自动生成水印的流程示意图;图3为本专利技术手机应用软件自动生成水印的系统的结构示意图图4为本专利技术ASCII字符图片的模糊与分割示例图。【具体实施方式】以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。为了在手机应用软件中加入好的水印,需要满足如下条件:1)通过语义保留的变形,代码不容易被破坏。一般不需要考虑变形会破坏语义,因为攻击者也希望重组后的软件能正常运行。2)代码不能被轻易识别,即添加的代码没有特别之处。3)水印不容易被识别,否则攻击者会通过监控应用软件来去掉相应的水印。针对上述条件,本实施例设计了一种手机应用软件自动生成水印的方法来满足上述要求,该方法是一种基于图片的水印方法。为了满足条件1),该方法不直接使用应用程序中的静态代码或数据作为水印;为了满足条件2),该方法尽量使用原来应用程序中的代码和数据结构,将这些代码与水印代码结合;为了满足条件3),该方法并不使用一般格式的图片,而是使用ASCII格式。如图1所示,给出了将普通图片转换成ASCII字符格式的图片的过程,ASCII字符本文档来自技高网
...

【技术保护点】
一种手机应用软件自动生成水印的方法,其特征在于,包括:水印产生步骤:给指定图片产生一个ASCII字符图片,模糊并分割该ASCII字符图片,将分割的每一部分ASCII字符图片映射为一段代码,将每段代码作为水印代码的一个片段,形成水印代码;水印插入步骤:通过指定事件序列获取手机应用程序的执行路径,将执行路径中仅有一个入口点和一个出口点的程序序列作为基本块,选取仅执行一次的基本块,在该基本块的原始代码中随机插入水印代码;水印提取步骤:使用与水印插入步骤相同的事件序列运行手机应用程序,扫描手机应用程序的内存,并从内存中定位水印,再提取水印进行验证。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈恺赵险峰张颖君
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1