1

好吧,假设我们不希望 hexworkshop 或 hxd 打开我制作的可执行文件。我该怎么做呢?甚至可能吗?基本上我正在寻找的是防止其他程序能够打开我的程序,而无需当时打开我的程序。

注意:我确实知道如何杀死进程,但这仅在程序当前打开时才有效。我想要的是防止程序即使在程序没有运行时也能够打开/读取 .exe。

4

2 回答 2

3

除非 Windows 本身阻止您这样做,否则根本不可能阻止 Windows 应用程序打开任何类型的文件。例如通过文件权限等。这几乎是无用的。即,如果您可以执行应用程序,您可以打开并阅读它,因为您需要能够执行此操作才能运行它。基本上你的程序是一个文件,操作系统就是这样对待它的。


由于您的目标是防止盗版或窃取您的软件,我听说的一种选择是将常规程序有效性检查放入代码中。

大多数黑客只会规避早期检查以使其运行,但是如果您的检查分散在整个代码中,那么黑客就很难规避这些检查。

另一种选择是使用加密狗。据我了解,您的程序在运行时由软件或加密狗加密和解密。但是,在某些时候它在内存中,因此内存转储将获取软件。

你能做的最好的事情就是让你的代码变得非常困难。但这并非不可能。

不能轻易被盗的软件的终极版是不能在您的 PC 上运行的软件。例如基于网络的服务。

顺便说一句,您在评论中描述的自毁或擦除 HDD 的软件在大多数国家可能是非法的。

于 2013-04-12T00:17:02.550 回答
0

应该可以通过在 Windows 中配置审计进程跟踪来确定应用程序上次运行的时间。以下链接可能会帮助您入门:

审计过程跟踪

如何跟踪我的机器上来来去去的程序?

进程跟踪将在 Windows 事件日志中创建条目,然后您可以使用 C++、C# 和/或 VB.Net 访问这些条目。

通过这种方式,您可以轮询以查看程序是否正在运行(与您的程序冲突)并简单地退出您的应用程序。

编辑:

注意:我确实知道如何杀死进程,但这仅在程序当前打开时才有效。我想要的是防止程序能够打开/读取.exe,即使程序没有运行

您将需要使用诸如Salamander protector- .NET 保护器之类的工具,这是一种为您的 .NET 代码提供真正保护的技术。与通过符号重命名使反编译更加困难的混淆器相比,RemoteSofts 保护器完全停止 MSIL 反汇编和反编译。使用此工具,您可以放心,没有人能够窃取您的源代码。有了这个工具,你再也不用担心微软.NET平台的一个令人头疼的问题——反编译。

于 2013-04-12T01:38:04.597 回答