我可以让ruby文件(例如script.rb)对用户不可读吗?
该文件位于Ubuntu(离线)计算机上。用户将使用将使用一些ruby文件的本地Sinatra应用程序。我不希望用户看到其中某些文件中的代码。
我该怎么做?
编辑: 我是否可以通过用户能够启动应用程序但无法访问其中的特定文件的方式设置项目?
由于
答案 0 :(得分:3)
这与您要搜索的内容相符吗?
chmod yourfile.rb 711
答案 1 :(得分:2)
正如我在评论中所说,几乎不可能隐藏ruby源文件的内容,许多人以许多不同的方式尝试这一点,但逆向工程几乎总是微不足道。有一些“建议”可以隐藏你的代码,但它们从来没有真正起作用,这里有一些;
混淆 - 使用像ProGuard for Java这样的工具(有大多数主要语言的工具)使代码可执行但不可读的过程会尝试使代码变得混乱,尽可能无法读取保持执行速度。通常,这包括重命名变量,使用奇怪的字符,通常在复杂的结构中隐藏,移动或包装函数。
打包解释器 - 您可以使用像ocra这样的工具将脚本打包到带有解释器和标准库的可执行文件中,但是任何在逆向工程方面都有一点经验的人都会能够在少量时间内轻松撕掉源代码
写一个自定义翻译 - 现在我们正在努力让它变得更难。编写自定义解释器将允许您将脚本编译为“字节码”,然后可以执行该字节码。当涉及到与其他代码库一起工作时,这当然是一个非常耗时,昂贵且不兼容的解决方案。
将大部分代码写在C中,然后通过扩展调用它 - 再次,这主要是移动问题,但它仍然存在。这将需要更多的时间,但任何人都可以轻松拆分您加载的C库的机器代码,鲍勃是您的叔叔,他们有源代码。
还有更多选择 - 这不是一份全面的清单,我可能会遗漏一些想法或建议。
如果代码不可读是 hard ,更好的解决方案可能只是考虑与您的代码提供许可协议。这样,有人会读取或修改源文件,您可以将它们带到法庭进行法律解决。
答案 2 :(得分:1)
将您的代码及其功能提取到外部API。然后将其作为服务提供。这样您就不必将源代码公开给“用户”。