在试用期满后禁用申请

Clo*_*oud 5 c c++ windows security

我正在为一个半可信客户编写一个简单的应用程序,并且对某些细节没有发言权.必须为客户端提供二进制文件的副本,该副本myTestApp使用外部库中的专有代码libsecrets.它是一个Windows应用程序,可以在几台独立的Windows 7笔记本电脑上运行.我被告知,在应用程序达到其目的后,它将被删除.我知道没有完美的解决方案,但是我希望在程序中实现一个到期日期,并阻碍对代码进行潜在逆向工程的努力,或者至少防止内容libsecrets过于暴露.

因此,我的第一步是静态链接myTestApp,libsecrets因此所有内容都包含在一个二进制文件中,因此只有libsecrets最终二进制文件中包含所需的部分,并且不再发布其接口.

其次,我想实施一些getTime不天真的机制.Windows中是否有任何"安全" getTime调用,因此不能通过更改系统托盘或BIOS中的时间来欺骗它?

第三,如果没有"安全" getTime呼叫,我也可以修改myTestApp使用NTP查询可信时间服务器,如果无法从中获取时间或试用期已过,则会失败.但是,除非有某种证书机制来验证时间服务器,否则这可能会被网关上的DNS搞乱所愚弄.我对此并不了解,并且需要一些关于如何实现它的建议.

接下来,有没有办法改变二进制文件,以便个人尝试通过查看汇编代码来对其进行逆向工程是不切实际的?也许是某种加密二进制文件并需要第三方认证工具的包装器?或者也许我创建的某种证书需要运行它并在以后过期?

最后,是否有任何软件(即:打包或发布软件)可以通过重新打包最终.exe或作为某种类型的Microsoft Visual Studio插件为我做到这一点?

谢谢大家.


编辑:这不是一个防弹系统,如果失败,那是可以接受的.我只是想让一个非技术人员试图破解它不方便.使用它的人是技术Luddites,软件破解的唯一方法是他们雇用某人来做.由于名称和公司名称被加水印到应用程序中,并且只有一个人可以从其使用中受益,因此他们不太可能重新分发它.

egu*_*gur 4

你不能让事情完全安全,但你可以让它变得困难(呃)。

使用UPX打包会给黑客增加一定程度的复杂性。

您可以在运行时检查您是否在多个位置的调试器下运行或者是否在虚拟机下运行。

您可以加密您正在使用的 DLL 并手动加载它(复杂)。

您可以编写一个加载程序来检查应用程序的哈希值,并且您的应用程序可以检查加载程序的哈希值。

您可以获取系统时间并将其与已写入磁盘的系统时间进行比较,并发现它是单调的。一切都取决于您想要的保护级别。

如果您访问 PirateBay 或任何其他 torrent 网站,如果黑客有兴趣,您会发现所有内容都已被黑客入侵。