#吐槽

# 软件自由的边界: 调试与反调试

说起开源运动, 人们会第一时间想到自由(free)软件, 自由软件的软件开发者对用户或者客户授予对软件源代码完全的访问权限, 不同的开源许可证还会授予用户不同程度的修改分发甚至商业化的权利, 同时还包括对开发者责任的免除.
而对于访问源代码之后做的工作, 直接修改源代码是事实上的权利, 然而与非自由软件一对比, 这其中对用户授予使用权利的变化起点应该要开始于「调试」阶段. 调试是了解软件原理的自上而下的办法. 但是, 自上而下的办法, 一旦越过调试就会越接近到「渗透」和「逆向」阶段, 而这里开始就是非自由软件保留权利的红线, 因为用户不可能拥有自上而下访问非自由软件的源代码的权利, 开发者也有权利阻碍用户进行调试.
成熟的自由软件商业化模式一般就是功能扩展和技术支持, 即使是 GPL 许可, 对于源代码的授权范围也仅限于真正服务的客户的范围, 早些时候的 Red Hat 也利用了这个特点把 RHEL 的源代码访问权限合法地限制在了自己服务的客户范围里, 然后又对客户施加服务条款限制其传播源代码的行为. 而成熟的非自由软件商业化模式其中之一就是免费(free)再增值, 经常有人说 "免费是最贵的", 因为维持免费模式的方法核心即是用户数据和商业广告, 两者关系密不可分, 也一同构建起了所谓互联网冰山之下最大的那一部分. 这对于极其依赖在线网络的软件就是如此, 一旦选择 "上云" 或者说上网, 长期成本支出注定了真正的无偿免费不可能持续, 更不可能像自由软件一样交付一次服务就变成持续可用的 "成品软件" (Finished software), 比如: 著名游戏开发与发行商育碧会强制玩家游玩买断游戏时强制联网, 即使是实体游戏光盘. 而用户如何在无法访问源代码的时候行使自己使用软件权利, 在线网络的完整性是否包含在软件保留权利中的一部分? 使用防火墙屏蔽依赖于在线网络的软件是否合法? 使用广告拦截器拦截 DNS 和请求是否合法? 利用网络调试进行中间人解密和重写是否合法? 利用逆向工程剥离或替代网络依赖是否合法?

via Nostr@cxplay
 
 
Back to Top