读书频道 > 网站 > 网页设计 > 软件加密与解密
1.7.3 软件“胎记”
12-08-25    叶孤城
收藏    我要投稿   

本文所属图书 > 软件加密与解密

本书介绍了如何利用混淆、水印和防篡改等技术,来保护软件免受盗版、篡改和恶意逆向工程的危害,主要内容包括攻击者和防御者用来分析程序的各种主流方法,如何使用代码混淆技术使程序更难以被分析和理解,如何在...立即去当当网订购
在之前讨论的案例中已经涉及了一些代码剽窃的内容,所谓“代码剽窃”就是你的竞争对手把你程序中的一个模块M复制到他自己的程序Q中,如图1-38所示。



图 1-38
代码混淆和水印技术都能使实施这类攻击变得很困难。攻击者很难从经过混淆技术处理的P中找到M。即使找到了,也很难从P中把它“干净的”剥离出来——你可以把M和程序中的其他模块混在一起,使得任何自动代码提取工具在提取M的代码时都要不得不拖泥带水地带上大量与M不相干的代码。

你也可以在M中嵌入一个水印或者指纹。比方说,M是一个由第三方(你)开发的图形显示加速模块。你把它卖给了Doris,允许她在其开发的游戏中使用它。要是哪天你在Axel的游戏中发现了Doris的指纹,你就可以断定Axel剽窃了你的代码,而且这些代码是复制自你卖给Doris的产品的。接下来你可以以代码剽窃的罪名把Axel送上法庭,也可以起诉Doris,因为她没有践行软件使用许可协议,使用有效的保护措施防止你的代码被他人剽窃。
可是,出于种种原因,你可能选择不对你的代码进行混淆处理,也不把水印嵌在它里面。比如,代码的执行效率是一个至关重要的指标,又或者使用混淆技术会让你调试程序或对软件进行质量评估变得非常困难。再或者你只是想知道一些很久之前编写的[1]老代码是否有人剽窃。除了混淆和水印技术之外,你还可以在攻击者的程序Q中搜索一下,看看你的模块M是否包含在Q里面。如图1-39所示。


图 1-39
这一招很管用,除非你的对手已经预计到你可能会使用这一方法,并且针锋相对的使用了一些代码转换技术——比如对M(或者Q中的所有代码)进行混淆处理,使你难以在Q中找到M。如图1-40所示。


图 1-40
经过一番复杂的代码转换之后,只是简单地搜索Q就不管用了。如图1-41所示。


图 1-41
于是利用软件“胎记”进行检测的方法就应运而生了。这一方法的基本思路是分别从Q和M中提取一些“特征”,然后把M的特征和Q的特征相比较,而不只是简单地在Q中寻找M。如图1-42所示。





图 1-42
图1-42中的f 是从程序或者模块中提取特征的函数,我把这些特征称为软件“胎记”。之所以把它们称为软件“胎记”,是因为这些特征是软件与生俱来的,即使软件经过了一些常见的代码转换(比如代码优化或者混淆)也能保持不变的东西。

仅就我所知就至少有一个利用软件“胎记”成功地证明代码剽窃的案例。20世纪80年代,IBM控告其竞争对手剽窃了PC-AT ROM上的代码[128]。IBM的人员作证道:对手程序往寄存器里存入和读取数据的顺序[2]以及有关指令所使用的寄存器与IBM开发的程序使用寄存器的方法是一致的。而读写寄存器的顺序以及所使用的寄存器实际上就是程序的“胎记”之一。同时他们也证明如果指令序列push R1; push R2; add 和push R2; push R1; add在语法上是等价的,那么如果一个程序使用了push R1; push R2; add这个序列的话,另一个程序也使用push R1; push R2; add这个序列的概率p就只有50%[3]。如果这个指令序列越长,使用的通用寄存器越多,那么等价的指令序列就会越多,进而概率p的值就会进一步降低。要是指令序列足够长,使用的通用寄存器足够多,p就会降低到一个几乎不可能发生的地步。


[1]那时大概还没有软件保护技术。
[2]意译,这种CPU不是我们在PC上常见的x86处理器,而是一种精简指令系统(RISC)的CPU。这类CPU中有多个通用寄存器R1、R2……读写寄存器中数据的方式也是不x86机器上的mov指令,而是使用push、pop指令来进行这些操作的。更多的信息可以参考计算机体系结构方面的教材。
[3]与你的直觉不同,概率学上说,第二个程序使用哪个指令序列与第一个程序选择使用的那个指令序列无关,只与可选择的指令序列的数量以及这些指令序列发生的概率有关。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站