我在我的Ubuntu机器上运行了一个linux可执行文件。我想授予用户访问权限以执行程序,但我不希望复制此程序。
我正在考虑制作一个简单的crypter应用程序,它将在运行时解密程序并从内存运行它。
这可行吗?
答案 0 :(得分:6)
你可以
chmod -r program
可执行文件仍然可以运行,但您无法复制它。
我只是在Ubuntu 14.04上测试了下载的eclipse二进制文件 - 它有效。
答案 1 :(得分:1)
这很大程度上取决于潜在用户能够做出的攻击类型,这种攻击通常与成功攻击的商业价值有关。
首先:
如果用户具有对存储的物理访问权限,则无法保护任何内容不被复制。只需通过启动另一个操作系统,所有系统内部保护毫无根据。对于受保护的程序以及所有执行某些模糊安全功能(如解密)的程序,情况都是如此。您可以从USB或任何其他媒体启动电脑。忘掉操作系统支持的权限管理之类的东西。
要破解PC上的mac地址,可以在几秒钟内完成。加载一个注册伪网卡的内核驱动程序,你会得到你想要的任何假mac。谁将保护pc以便运行修改后的内核?
接下来是,任何类型的解密都将产生一个内存映射,该内存映射在prog的运行时期间保存可执行文件。任何低权限黑客都可以获得此内存的副本,并可以创建一个应用程序以使该映像在任何其他计算机上运行。
正如您在现实世界许可模式中看到的那样,唯一的机会是使用完全安全的其他硬件,如加密usb棒或其他类型的加密代理。另一个技巧可能是某种在线密钥库。但所有这些都不能通过简单地实现一些加密算法来实现。
如果您的产品必须防止非法使用,您必须使用商业保护。
很抱歉,我无法从你的问题中看出你的意图。如果您只想在一台电脑上为“朋友”保留一个没有商业价值的简单应用程序,或者您必须确保您的业务收入: - )
答案 2 :(得分:0)
如果我理解,你有一个用户登录谁需要运行程序X而不是复制程序X?
一种方法,如果这是一个已编译的可执行文件,则是set execute only,而是double check your suid_dumpable
kernel setting。
如果它是一个脚本,或者你有配置文件和那些需要保护的配置文件,那么适用/etc/shadow
模式:用户需要能够读取该文件,但不能将其复制到别处攻击。对于此模式,解决方案是使用中介程序。具体来说,程序可以暂时增加其读取文件的权限,但不能强制提供对文件中任何内容的访问,超出了运行所需的范围。
The accepted answer to this question explains nicely多种选择。我个人喜欢sudo方法。