我希望避免我的程序很简单,从而删除许可证验证程序部分。
我不想使用商业混淆器,因为:
显然,我将保留一份未经混淆的副本以进行维护。
答案 0 :(得分:2)
我曾经不得不在客户可以修改的代码中隐藏许可证验证程序。可以想象,如果他们知道在哪里看,他们就可以删除它。以下是我当时使用的一些技巧。
我应该补充一点,所有这些都是可以解决的,并且可能导致严重的维护问题,但在我的特定情况下,它可以工作。
答案 1 :(得分:1)
如果您的目的是使其变得更难,但并非不可能,那么一种方法是使用多个代码点来检查您的许可证文件是否有效。
假设你有一个带有某些键的许可证文件
abc-def-fhi-asdf
所以,键的四个部分。然后,我们将创建四种不同的方法来检查密钥的各个部分。
通过这样做,并改变通过代码使用的方法(理想情况下,在运行时随机选择验证方法),您将使删除验证变得更加困难。
除此之外,一种方法是让发布过程内联您的验证方法,每次调用时都会巧妙地更改它。
例如:
*user clicks a common function
// [VALIDATION STUB]
*perform user action
新的发布过程贯穿代码,拉出// [VALIDATION STUB]并将其替换为验证代码(在编译代码之前),正如我所说,每次都应该尽可能多地改变。
从我的回答中得出的主要内容是混淆是困难的,但并非不可能。特别是如果你让自己屈服于恶意用户最终会破坏它的现实
答案 2 :(得分:0)
我有一些建议,你可能会觉得有用。
首先,您可以使用免费的混淆器,如VisualStudio附带的混淆器。它总比没有好。
其次,您可以编写许可证验证码,一旦工作正常,尽可能重构,将类名,成员变量,局部变量和方法更改为c1,v1,l1,m1等。这基本上就是混淆器所做的。
第三,完成上述所有工作。
第四,在非托管代码(C ++,Delphi)中编写许可证验证,并将其命名为一个名为core.dll,net.dll等重要内容的DLL。您还可以在其中放置一些不重要的诱饵方法。从代码的多个位置对该DLL进行多次调用,并假装您对这些调用的结果执行某些操作。