如何防止sdxkit拆开TCL源代码

如何防止sdxkit拆开TCL源代码,tcl,starkit,Tcl,Starkit,我正在使用sdxkit包装我的源代码 $ ./sdx wrap Project 但我可以很容易地把它拆开: $ ./sdx unwrap Project 这会把我所有的源代码都还给我。如何防止代码被反包?sdxkit提供的任何参数或选项?唯一建议用于防止提取的技术是“Tcl字节码编译器”,它是ActiveState商业产品的一部分。“编译器”源于TclPro代码库的其他一些派生版本,但据我所知,它们没有更新以支持TCL8.5及更高版本。结果通常被打包成一个starkit;您可以使用sdx来提

我正在使用sdxkit包装我的源代码

$ ./sdx wrap Project
但我可以很容易地把它拆开:

$ ./sdx unwrap Project

这会把我所有的源代码都还给我。如何防止代码被反包?sdxkit提供的任何参数或选项?

唯一建议用于防止提取的技术是“Tcl字节码编译器”,它是ActiveState商业产品的一部分。“编译器”源于TclPro代码库的其他一些派生版本,但据我所知,它们没有更新以支持TCL8.5及更高版本。结果通常被打包成一个starkit;您可以使用sdx来提取编译后的代码,但它实际上没有多大帮助

尽管被称为编译器,但它不是;它实际上是一个字节码序列化程序,使用了一种相当奇怪的格式,这种格式相对不易反汇编(而反向字节码加载器-
tbcload
-标记代码以防止一系列意外和故意的信息泄漏)。实际使用的编译器与Tcl中内置的编译器相同。事实上,从Tcl源代码编译字节码实际上比使用
tbcload
加载字节码要快


请注意,这段代码并没有真正的开源版本,也并没有真正的兴趣生成一个:对于开源代码——或者纯粹的内部部署——并没有必要更深入地隐藏;要么你应该希望代码是开放的(开源就是开源!),要么你只是为了便于部署和防止人们意外破坏东西而打包东西。唯一真正的价值是在部署不受信任的商业代码用户的情况下,然后应该在使用法律措施来防止问题的上下文中查看代码的屏蔽。简而言之,如果您不销售代码(或密切相关的服务),您可能不想要“编译器”;如果您不需要封装代码,打包在starkit(或starpack)中就足够了。如果您确实需要覆盖,您还可以证明商业工具的成本是合理的。

sdx无法做到这一点。试试这个。然而,这是一个商业产品。我没有从任何购买TDK的人那里获得任何经济利益,但我与购买TDK的人是朋友;ActiveState的人都是好人。