Larry Osterman系列--对"强制披露源代码"的奇葩回应
2022-1-13 00:0:0 Author: mp.weixin.qq.com(查看原文) 阅读量:10 收藏

Obfuscated code - [2004-05-28]

我想起一家公司对"强制披露源代码"的回应。

这家公司(将保持匿名)授权微软拥有它家的源码,以便集成到微软产品中。不,我不打算点名。事实上,买产品附赠源码是它们的销售卖点之一,任何购买它们产品的客户将被授权拥有相应的源码。这很重要,因为它们的某些客户是政府机构,这类客户要求拥有源码。提供源码,使得它家产品可以在大量不同的平台上运行,客户只需要一个编译器;当然这需要在客户平台上部署编译器,它们很乐意提供。

但是,你提供了产品源码,如何防止客户滥用它们呢?你如何继续赚钱?如何防止客户自行修补BUG?客户为什么需要继续为该产品付费?更重要的是,如何防止客户做些不兼容、不正确的修改?如果客户拥有源码,你无法保证修补质量。确保客户只进行厂商授权的修补,这点很重要。

好吧,这家公司用了一个奇葩的解决之道。起初为了提高平台无关性,它们源码中所有标识符没有超过6个字符,某些客户平台上的链接器有这种限制。现在它们更进一步,有意识地对整个源码进行了混淆处理。每个函数名都恰好是6个字符,所有的结构、局部变量也是这样,它们从源码中删掉了绝大多数注释。

同时,它们有本纸版字典,可以将混淆过的标识符转换成人类可读的形式,它家的工程支持人员、内部开发人员都拥有这本字典。客户严禁拥有,只有它家员工拥有。

于是,客户无法真正理解源码,他们唯一能做的就是呼叫这家公司提供支持。真是太聪明了,就是客户有点犯难。

哦,在你发问之前,不,微软向客户授权提供源码时不是这样干的。如果您被授权拥有微软源码,据我所知,您将获得真正的源码。


文章来源: http://mp.weixin.qq.com/s?__biz=MzUzMjQyMDE3Ng==&mid=2247485203&idx=1&sn=31265b9b2a6d9dc4f0bfa28aea4854b1&chksm=fab2c42ccdc54d3a891ffecab0b28e9d2495932b6b3fbaf96f3f5dca83fe6fb3e86921f60241#rd
如有侵权请联系:admin#unsafe.sh