防止程序在其他计算机上运行

时间:2014-08-07 11:28:57

标签: c linux

我在我的Ubuntu机器上运行了一个linux可执行文件。我想授予用户访问权限以执行程序,但我不希望复制此程序。

我正在考虑制作一个简单的crypter应用程序,它将在运行时解密程序并从内存运行它。

这可行吗?

3 个答案:

答案 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方法。

相关问题