我正在使用 sdxkit 来包装我的源代码
$ ./sdx wrap Project
但我可以很容易地把它拆开:
$ ./sdx unwrap Project
这将把我的整个源代码还给我。我怎样才能防止解开代码?sdxkit 提供的任何参数或选项?
唯一推荐用于防止提取的技术是“<strong>Tcl 字节码编译器”,它是TclDevKit的一部分,ActiveState 的商业产品。“编译器”来自 TclPro 代码库的其他一些衍生版本,但据我所知,它们并未更新为支持 Tcl 8.5 及更高版本。然后通常将结果打包到一个starkit中;您可以使用 sdx 来提取已编译的代码,但它并没有太大帮助。
尽管被称为编译器,但它不是;它实际上是一个字节码序列化器,它使用一种相当奇怪的格式,相对抗反汇编(以及相反的字节码加载器tbcload
——标记代码以防止一系列意外和故意的信息泄漏)。实际使用的编译器与 Tcl 中内置的编译器相同。事实上,从 Tcl 源代码编译字节码实际上比用……加载它要快tbcload
。</p>
请注意,此代码没有真正的开源版本,也没有真正的兴趣生产一个:对于开源代码 - 或纯粹的内部部署 - 没有必要更深入地隐藏;要么您应该希望代码是开放的(开源就是开源!),或者您只是为了方便部署而打包东西并阻止人们意外破坏东西。唯一真正的价值是在您部署商业代码不受信任的用户的情况下,然后应该在使用法律措施防止问题的背景下查看代码的覆盖。简而言之,如果您不销售代码(或密切相关的服务),您可能不想要“编译器”;如果您不需要隐藏代码,打包在一个starkit(或starpack)中就足够了。确实需要遮蔽,您也可以证明商业工具的成本是合理的。