我想为单独的exe创建一个启动程序。我需要在启动器外部无法访问主程序(而不是启动程序)。
答案 0 :(得分:4)
根本不可能安全地做到这一点。发射器可以做的任何事情,用户也可以这样做。
通过使启动器将加密签名的时间戳传递给单独的程序,您可以使用户更难。但是,用户可以从启动器中提取私钥并手动签署时间戳。
您可以让程序检查其父PID,并确保启动器EXE使用您自己的私钥进行签名,但用户可以修改程序以删除该检查。
您也可以使用启动程序调用的方法将EXE转换为DLL,但用户可以编写自己的EXE并调用该方法。
答案 1 :(得分:1)
一种选择是在运行第二个程序时需要一个参数,尽管这很容易被利用。你没有真正说出这是为了什么,所以它可能已经足够了。
根据您的启动程序执行的操作,您可以检查这些操作是否已完成,如果没有,则退出程序。
如果您需要特别安全,您可以设置一些私钥 - 公钥系统,并加密动态信息(如时间戳)。老实说,我认为这将是更多的工作,而不是它的价值,如果要拆解的任何一个程序,它仍然可以被利用。
答案 2 :(得分:0)
您可能希望将主要功能实现为单独的 DLL 文件,并从启动应用程序调用它。 这是主要功能不完全是一个单独的应用程序,所以它可能不是你想要的,但它是分开的,需要运行另一个应用程序(一个启动器)。
答案 3 :(得分:0)
合适的解决方案取决于您要阻止的确切内容。
如果您的目标是“在任何情况下,熟练的黑客都不会通过A.exe发布B.exe”,这很难实现。
如果您的目标是“我不希望用户意外启动B.exe,因为A.exe是他们应该使用的”,那么有一些选项。例如,将命令行参数从A.exe传递给B.exe,普通用户不知道该传递参数。
答案 4 :(得分:0)
我有两个建议来实现你想要的目标。
第二个exe需要实际上是一个exe吗?你可以把它变成图书馆电话吗?将该功能作为在启动程序进程下运行的线程调用。
使用未发布的命令行参数。如果没有提供,则第二个exe终止。这不是完全安全的,但我相信这是现代游戏发射器的工作方式。
最终,如果没有“通过默默无闻的安全”,我认为没有办法做到这一点
答案 5 :(得分:0)
您可以在启动器中创建一个名为Guid的互斥锁作为名称。然后检查程序中的互斥锁。像其他人所说,这不是很安全,但会阻止大多数人直接启动该计划。