基于动态不透明谓词的虚拟方法的Java程序水印
Watermarking Java Programs using Dummy Methods with Dynamically Opaque Predicates
摘要:
软件盗版,即非法使用、复制和转售应用程序,是任何软件开发人员都要关注的一个主要问题。软件开发人员还担心他们的应用程序被逆向工程,从应用程序中提取数据结构和算法,并将其并入竞争对手的代码中。防止软件盗版的一种方法是水印,即在封面软件中嵌入秘密消息的过程。水印是一种不旨在阻止盗版复制的方法,而是为了证明软件的所有权,甚至可能是软件中使用的数据结构和算法。Java语言被设计为编译成平台无关的字节码格式。源代码中包含的大部分信息都保留在字节码中,这意味着反编译比传统的本机代码更容易。在这篇论文中,我们提出了一种通过使用从不执行的虚拟方法(Monden et.al.,2000)结合不透明谓词(Collberg等人,1998; Arboit,2002),并通过动态不透明谓词进行改进(Palsberg等人,2000年)。本文提出了一种通过将两个或多个不透明谓词按预定义规则分组来构造动态不透明谓词的方法。任何软件水印技术都会在弹性、数据率、成本和隐蔽性之间表现出权衡。为了评估水印方案的质量,我们还必须知道它对不同类型的攻击的抵抗能力。理想情况下,我们希望我们的水印能够在翻译(编译,反编译和二进制翻译),优化和模糊处理中幸存下来。添加一个水印将增加源代码约3.854字节,其中虚拟方法覆盖多达15个字符,两个动态数据结构,两个线程和两个不透明谓词。应用程序加载时间增加约6108毫秒。
英文摘要:
Software piracy, the illegal using, copying, and resale of applications is a major concern for anyone develops software. Software developers also worry about their applications being reverse engineered by extracting data structures and algorithms from an application and incorporated into competitor's code. A defense against software piracy is watermarking, a process that embeds a secret message in a cover software. Watermarking is a method that does not aim to stop piracy copying, but to prove ownership of the software and possibly even the data structures and algorithms used in the software. The language Java was designed to be compiled into a platform independent bytecode format. Much of the information contained in the source code remains in the bytecode, which means that decompilation is easier than with traditional native codes. In this thesis, we present a technique for watermarking Java programs by using a never-executed dummy method (Monden et.al., 2000) combined with opaque predicates (Collberg et.al., 1998; Arboit, 2002) and improved with dynamically opaque predicates (Palsberg et.al., 2000). This work presents a method to construct a dynamic opaque predicates by grouping two or more opaque predicates according to predefined rules. Any software watermarking technique will exhibit a trade-off between resilience, data rate, cost, and stealth. To evaluate the quality of a watermarking scheme we must also know how well it stands up to different types of attacks. Ideally, we would like our watermarks to survive translation (compilation, decompilation, and binary translation), optimization, and obfuscation. Add a single watermark will increasing source code approximate 3.854 bytes with dummy method that cover up to 15 characters, two dynamic data structures, two threads and two opaque predicates. Application loading-time increase approximate 6108 milliseconds.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。