试用期满后失效

试用期满后失效,第1张

概述试用期满失效

我正在为一个半可信的客户端写一个简单的应用程序,在某些细节上没有发言权。 必须为客户端提供一个二进制文件myTestApp的副本,该文件利用外部库中的专有代码libsecrets 。 这是一个windows应用程序,将在几个独立的windows 7笔记本电脑上运行。 我被告知,申请达到目的后,将被删除。 我知道没有完美的解决scheme,但是我希望在程序中实现一个失效date,并且阻止可能对代码进行反向工程的努力,或者至less防止libsecrets的内容。

所以,我的第一步是将myTestApp与libsecrets静态链接myTestApp ,这样一切都包含在一个二进制文件中,所以最终的二进制文件中只包含了所需的libsecrets ,并且不再发布它的接口。

其次,我想实现某种不是天真的getTime机制。 windows中是否有任何“安全的” getTime调用,所以不能通过更改系统托盘或BIOS中的时间来欺骗它?

第三,如果没有“安全的” getTime调用,我也可以修改myTestApp来使用NTP来查询一个可信的时间服务器,如果从它得到的时间或者试用期已过,就会失败。 但是这可能会被网关上的DNS弄乱,除非有一些证书机制来valIDation时间服务器。 对此我不太了解,需要就如何实施这方面提出一些build议。

处理需要数据库(@R_502_5605@)密码的脚本的安全方法是什么?

有没有办法查看谁在linux中查看/访问文件?

PHP mkdir:0777变成0755?

如何摆脱Batch / Powershell中的安全警告

linux缓冲区溢出环境variables

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

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

谢谢大家。

编辑:这不是一个防d系统,如果失败了,那是可以接受的。 我只是想让非技术人员试图破解而不方便。 使用它的人是技术Luddites,软件将被破解的唯一方法是如果他们雇人做的。 由于名称和公司名称被embedded到应用程序中,只有一个人可以从中受益,所以他们不太可能重新分配它。

沙盒AppDomain中的线程安全性

如何在linux内核级别限制特权用户访问?

在windows下的桌面之间共享剪贴板?

如何使用Java扫描根目录中的SUID文件并访问其属性?

如何search二进制文件,并用Rubyreplacestring?

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

用UPX打包给黑客增加了一些复杂程度。

你可以在运行时检查你在几个地方的调试器下运行,或者你正在虚拟机下运行。

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

您可以编写一个加载器来检查应用程序的散列,并且您的应用程序可以检查加载器的散列。

您可以获取系统时间,并将其与您已经写入磁盘的系统时间进行比较,看看它是单调的。 一切取决于你想要的保护水平。

如果你去PirateBay或任何其他洪流网站,你会看到,如果黑客有兴趣,一切都会被黑客入侵。

有一种方法可以让他们在到期后使用它真的很困难。 这个技巧的主要目的是让你的到期日期与系统时间无关,并且依赖于过去的时间,不管系统时间如何。

您将不得不创建一个单独的线程来执行此任务。

假设您希望应用程序在使用70小时后过期。

创建一个名为“记录”的二进制文件,并在其中存储任何数字,这应该是很难猜测(我会告诉你为什么你必须把这个数字在二进制文件)。

当你的应用程序启动的时候,它会检查这个数字是否存在,如果是的话,你的应用程序应该得到当前的时间,并将它与小时= 1(替换已经存在的数字)一起存储在该文件中,并且创建的线程应该保留在检查系统时间的小时是否已经改变,当它改变当前时间在该文件中的小时= 2。 小时= 70的时候到了。

在该线程内的两个位置和应用程序的开始处添加此代码

/*the purpose of storing current time is to find out later if hour has changed or not*/ /*read hour from file.*/ if(hour==70) { cout<<"Your trial period has expired"<<endl; return EXIT_SUCESS; }

现在每当有小时= 70的应用程序将无法正常工作。

之前我告诉过你在二进制文件中保留任何数字,当他们运行你的应用程序的时候,二进制文件将被读取,如果这个数字被找到,那么你的应用程序将用当前时间和小时= 1替换它,现在假设它们使用你的应用程序5个小时,并关闭它,并运行一段时间后,现在当你的应用程序将运行它将检查该二进制文件,如果这个数字已被替换为以前存储的时间和小时= 5这意味着现在你将不得不当前时间与小时=文件+1中的存储时间; 。 在这种情况下,即使他们改变时间或做别的事情,也不会影响到期。 因为现在你的到期检查不再是以系统时间为基础的,现在是以过去的时间为基础,不管时间如何。

没有这个数字表示文件没有被第一次访问,当前在文件中的当前时间应该增加,并使用二进制文件,以便客户端不能看到该数字。

最后一件事你的二进制文件的格式应该是这样的

current time,hour="any number",another_secret_number

another_secret_number将被放置,以便即使他们如何改变你的二进制文件,他们也不能把那个another_secret_number放在那里,因为他们不知道。 这意味着在读取二进制文件时,您必须确保二进制文件中任何条目的末尾都包含“another_secret_number”。

为了检查的目的,这两个隐藏的数字也将被硬编码在你的代码中,这肯定是他们看不到的,他们也不能读取二进制文件,所以他们无法知道它们。

我希望这会帮助你。

没有什么能阻止黑客! 你的问题就像在干草上寻找针。 大会是很大的回应空间。 你可能只有更好,没有,永远不会阻止“坏”的人。

对于UPX:众所周知,不要使用它!

总结

以上是内存溢出为你收集整理的试用期满后失效全部内容,希望文章能够帮你解决试用期满后失效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存