- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我们都必须在某个时候考虑的问题。
经过多年和许多方法后,我倾向于总体上同意以下声明:
“对于任何几百人使用的 protected 软件,都可以找到破解版。到目前为止,每个保护方案都可以被篡改。”
Does your employer enforce the use of anti-piracy software?
此外,每次我发布有关此主题的信息时,都会有人提醒我;
“首先,无论你采用什么样的保护措施,一个真正敬业的 cookies 最终都会通过所有的保护屏障。”
What's the best value for money c# code protection for a single developer
因此,尽管有这两个广泛正确的免责声明,让我们谈谈“保护”!
我仍然觉得对于不太可能吸引熟练破解者的时间和注意力的小型应用程序,保护是一项值得的练习。
很明显,无论您做什么,如果破解者可以通过修补应用程序来切换 IF 语句 (jmp) 的结果,那么世界上所有的密码和加密狗都无济于事。
所以我的方法是使用以下产品通过虚拟化来混淆代码:
http://www.oreans.com/codevirtualizer.php
我对这个产品非常满意。据我所知,它从未被击败过。
我什至可以用 PEcompact 压缩可执行文件
其他人有这方面的经验吗?
除了 EXEcryptor 的问题之外什么都没有
http://www.strongbit.com/news.asp
甚至该网站使用起来也令人头疼。
编译的应用程序在执行任何 WMI 调用时都会崩溃。
这种方法允许您使用混淆来包围较小的代码部分,从而保护安全检查等。
我使用在线授权方法,因为应用程序需要定期从服务器获取数据,因此用户长时间离线使用它是没有意义的。根据定义,该应用程序在这一点上毫无值(value),即使它已被破解。
所以一个简单的加密握手就足够了。我只是偶尔在混淆保护中检查它。如果用户在另一台机器上安装应用程序,则在启动时会上传新 ID,服务器会禁用旧 ID 并返回新授权。
我还使用已编译应用程序的哈希值,并在启动时检查它是否有任何更改,然后从应用程序内将应用程序作为文件(带有读取锁)打开,以防止任何人在启动后更改它。
由于所有静态字符串在 .exe 文件中都清晰可见,因此我尝试使用通用的错误消息等。您不会在任何地方找到字符串“授权失败”。
为了防止内存转储,我使用了一种简单的文本混淆技术(例如 XOR 每个字符)这使得内存中的纯文本数据更难与变量等区分开来。
当然,对于任何真正敏感的数据都有 AES。我喜欢文本的计数器模式,因为这不会导致重复序列显示底层数据(如一系列空白)。
但是使用所有这些技术,如果可以从内存中转储 key 或初始化向量,或者绕过 IF 语句,那么一切都将被浪费。
我倾向于使用 switch 语句而不是条件语句。然后我创建了第二个函数,它基本上是一个死胡同,而不是实际执行所需任务的函数。
另一个想法是编写添加了变量的指针。变量是授权的结果(通常为零)。这将不可避免地在某个时候导致 GPF。
我只在一些较低级别的授权失败后才将其用作最后的手段,否则真正的用户可能会遇到它。然后,您的软件的声誉就会降低。
你使用什么技术?
(这不是一个讨论实现某事的优点的线程。它是为那些决定做某事的人设计的)
最佳答案
我不同意 xsl。
我们保护我们的代码,不是因为我们想保护我们的收入——我们接受那些如果没有许可证就使用的人可能永远不会为此付费。
相反,我们这样做是为了保护投资 我们的客户已在 我们的软件。我们相信,使用我们的软件使他们在市场上更具竞争力,如果其他公司无需付费就可以使用它,他们就有不公平的优势——即,他们在没有许可成本开销的情况下变得具有竞争力。
我们非常小心地确保保护 - 这是自产的 - 对有效用户尽可能不显眼,为此,我们永远不会考虑“购买”可能影响这一点的现成解决方案。
关于obfuscation - 小型供应商的软件保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343586/
前言 在进行Maven开发时,往往需要下载大量jar包,而由于网络不稳定等其他因素可能导致jar未下载完毕,然后保留了lastUpdated文件,导致无法更新失效的jar包。 本文分享 bat脚本,自
按字母顺序排序并不是我们花太多时间担心的事情。我们在很小的时候就学习了字母表,现在我们知道它(拉丁文)以 A 开头,然后是 B,然后是 C 等等,一直到 Z。 但是这个订单究竟存储在计算机系统中的什么
我尝试使用可分离为 2 个一维向量的二维矩阵来证明二维傅里叶变换的信号属性的可分离性。地点: f(x,y) = f(x)*f(y) 那么 F(u,v) = F(u)*F(v) 使用以下代码: % Se
我需要为几个小型sqlite数据库编写文档。想描述数据的使用方式,包括表和行说明以及示例数据。 是否可以使用MySQL Workbench?如果没有其他选择,或者我可以使用任何模板? TIA! 最佳答
我正在尝试使用旧版本(例如:1.4.5)安装 memcached,但我不知道该怎么做。 brew install memcached安装最新的。 我也试过 brew install memecache
背景 多年来,我一直使用自己的类似贝叶斯方法,根据大型且不断更新的训练数据集对来自外部来源的新项目进行分类。 每个项目都有三种类型的分类: 30 个类别,其中每个项目必须属于一个类别,且最多属于两个类
嗨,我需要确定 4 个数字是否相等。数字是 size(A,1)、size(B,1)、size(C,1) 和 size(D,1),其中,例如A = [1 2; 3 4], B=[1 2 3, 4 5 6
Wikipedia 中的文章似乎太冗长了。 我将框架理解为一组精心设计的库和工具。 Qt 框架为跨平台 GUI 提供了一组库/工具。 cocoa 框架为 Mac 做了同样的事情。 软件框架的实际定义是
我们的客户最近发现了这个网站: http://mydeco.com/3d-planner/ 它有一个非常非常奇特且组合良好的 3d CAD Web 应用程序,似乎是使用 jQuery 编写的,而不是
我们正在寻找一种独立的(非 cms)日历解决方案来显示在网络上。它可以是开源的或付费服务。 我们主要是在寻找一种在 Web 上显示日历的方法,其中包含事件发生的时间和事件的名称。如果它可以按周、月、年
我想知道与软件相关的“质量保证”和“质量科学”之间的区别。 我在Google上进行了研究,但未找到有关“质量科学”的任何信息。 最佳答案 Based on the link you have prov
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我有一个由 2 个方程和 2 个未知数组成的系统,我想使用 MATLAB 求解,但不知道如何编程。我得到了一些有关 Gamma 分布的信息(平均值为 1.86,90% 的间隔介于 1.61 和 2.1
给定一个矩阵,其中 1 是当前子集 test = 0 0 0 0 0 0 0 0 0 0 0 0
我在组合 Matlab“数据”变量的重复元素时遇到问题。我可以使用 unique 和 sort 轻松组合这些值。 [sorted,idx] = sort(data); [~,ij] = unique(
我在做的问题中有这么一段代码,如下图。定义部分只是为了向您展示数组的大小。下面我粘贴了矢量化版本 - 它慢了 2 倍以上。为什么会这样?我知道如果矢量化需要大的临时变量,我就会发生,但(看起来)这里不
我有一个 3D 矩阵,我想将它的每个 2D 分量存储在另一个 2D 矩阵的行中,该 2D 矩阵有许多行作为 3D 矩阵的第 3 维。 我该怎么做? 最佳答案 与 permute & reshape -
如果计算机能够使用纯 JavaScript(Google V8)、C++(Windows、Mac OS 和 Linux)运行程序/软件而没有任何性能问题,是否有任何好的方法可以通过要求尽可能少尽可能从
我的团队的任务是将用于播放媒体文件的全屏、信息亭式应用程序从 Windows 迁移到嵌入式 ARM Linux(瘦客户端)。我们需要在 sd/1080p 中支持 mpeg-2 播放以及 HTML、SW
我们有数以千计的具有白色或黑色或渐变背景的产品图片。我们正在寻找可以去除图片背景的软件或服务。我们需要一款能够很好地完成这项工作的智能软件。 最佳答案 在 photoshop 中,您可以记录 Acti
我是一名优秀的程序员,十分优秀!