问题标签 [copy-protection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
licensing - 独特的虚拟机
我正在研究某种方法来使用许可证保护我的软件。执行一些 wmi 调用以唯一区分计算机并确保无法加载应用程序的多个实例。
我开始想到,当应用程序安装在虚拟机(MS Virtual PC、VMWare、Virtual Box 等)上并获得许可时 - 是否可以克隆虚拟 PC,然后在其上启动虚拟 PC 的多个实例同一台物理 PC 并且仍然将虚拟 PC 的硬件(或其他不同)信息彼此区分开来?
到目前为止,我已经查看了很多 wmi call 的信息差异,并且它们似乎完全相同(我已经使用 Microsoft Virtual PC 检查了同一 pc 映像的两个克隆)。
flash - Securing a Flash EXE
My client has a Flash projector EXE and he wants to set-up an on-line serial number control system so he can sell it on-line.
The key problem in this project, as far as i see, that the exe is required to run on only one computer.
My current plan is below:
- Request the serial number from user before the installment and check whether it is okay.
- If it is okay, generate a hash from a number of unique hardware constants. Match it with server and see if the application was installed on this machine before.
- If not, or it is the same machine as before, allow the installer to continue.
- After installment, put the hardware hash into the registry.
- Create a loader EXE, place the Flash EXE into it as a resource.
- In loader EXE, check if the registry has the hardware hash and it is the correct hardware we're running on.
- If the hardware hash is correct, extract he resource (Flash Exe) to a hidden path and execute it with CreateProcess.
Now, i'm aware of that there is a serious security flaw in this workflow. When i extract the resource exe and execute it. It would be visible to any user looking to the Task Manager. So he/she could reach his hand and grab it!
How can i improve my approach? At least to an acceptable point?
Thanks.
P.S. This application has similar functionality: http://www.increditools.com/flash_exe_builder/index.php in terms of protection and serial-number.
android - Android 应用复制保护和数据文件
在我的应用程序中,我在代码中的以下硬编码位置访问我的 sqlite 数据库:
/data/data/com.mydomain.appname/databases/database.db _
如果我在 Market Place 中打开复制保护,我的应用是否仍可以访问此位置?
还是我必须将其更改为:
/data-private/data/com.mydomain.appname/databases/database.db _
(或类似的东西)
因为我只有一部开发手机,所以我无法测试我的应用在打开复制保护后是否仍然正常运行。
谢谢!
[编辑:为了清楚起见,这个问题被改写]
protection - 如何保护您的软件代码?
可能的重复:
您如何保护您的软件免受非法分发?
防止软件复制的最佳实践
假设情况:
假设我从头开始构建了一个软件产品,它做了很多很棒的事情。唯一的问题是,一旦有人看过代码,他们就会很容易理解它,并且他们可以很容易地自己构建它。
现在,问题是我 100% 从头开始构建代码并混合使用 API 调用。没有其他人参与代码的开发。
如果我想卖这个产品,有什么保证比我聪明得多的人会对整个事情进行逆向工程并提出更好的产品?
现在我正在考虑分割整个代码。添加大量冗余代码和大量注释。
是否有任何加密软件代码的软件,这将使调试、故障排除和理解代码的工作原理几乎不可能?还照常运行?让开发者高枕无忧?
vb.net - 保护软件仅在 vb.net 中的一台计算机上运行
我开发了一个小应用程序,现在我想保护它。
我只想在我自己的计算机上运行它,并且我已经为自己开发了它。
我怎样才能做到这一点?
java - Jar Store - 防止复制
我们将按照 App Store 的工作方式创建 Jar Store,但面向 Java 开发人员。
每个人都可以提交和销售自定义的 .jar 库,这解决了一些小问题,但很好地解决了其他开发人员的工作时间。
唯一未定的问题是如何防止 .jar 复制或将购买的 .jar 发布到网络。
编辑:这可能可以通过使用强大的版权政策来实现?请建议!
编辑 2:我想史蒂夫乔布斯会问:
android - 在 Android 上将游戏资源下载到 SD 卡
我正在开发一款Android 游戏,它必须将一些资产下载到SD 卡中,以使应用程序的大小尽可能小。我正在考虑使用未压缩的 zip文件来捆绑所有资产。
客户的要求是尽可能保护这些资产。作为 apk 的一部分被认为是足够的保护,但如果我这样做,apk 的大小将是巨大的。如果我只是在 SD 卡中放了一个压缩包,那么任何人都可以解压缩它并探索它的内容。
有没有一种简单的方法可以做到这一点而无需反驳可怕的 DRM?
显然,如果有人真的想查看 Android 游戏的资源,他们可以。我只是在寻找一个简单的解决方案来避免使这变得非常容易。
android - 以编程方式前向锁定 Android APK
做一些预先研究,并坚持标题中总结的观点。即,有没有办法从另一个应用程序中向前锁定以编程方式安装的 APK?除了以下帖子中的提示外,我没有遇到任何其他内容: http ://groups.google.com/group/android-developers/msg/e39941389d4a4cf8
我在 PackageManager 的文档中看不到任何关于前向锁定的内容,但我很乐意承认这是我不熟悉的 SDK 领域。
[与 Android-Developers Google 小组交叉发布]
javascript - 用于图像的 Javascript 上下文菜单
我有一个网站,很多人从上面复制图像,这很好。然而,我确实想做的是帮助他们将其嵌入到他们要去的目标网站上。
理想情况下,这将采用以下形式:当用户右键单击图像时,将出现上下文菜单,为他们提供嵌入或共享图像的简单选项。
做这个的最好方式是什么?
Ps 我根本不关心他们的盗链,或者保存图片,我想做的只是为用户提供一种更简单的方式来分享图片!
licensing - 关于通过电话回家的版权保护/软件许可的意见/讨论
我正在开发一些我最终要出售的软件。我一直在考虑不同的复制保护机制,包括自定义和第 3 方。我知道没有任何复制保护是 100% 完全证明的,但我至少需要尝试一下。所以我正在寻找一些关于我正在考虑的方法的意见:
我正在考虑的一种方法是让我的软件在启动时连接到远程服务器,以便根据以太网端口的 MAC 地址验证许可证。
- 我不确定服务器是否会运行检索许可证信息的 MySQL 数据库,或者什么...有更简单的方法吗?也许某种类型的加密文件被读取?
- 如果软件无法连接到服务器,我会让它仍然工作。我不想仅仅因为他们当时无法访问互联网而将他们拒之门外。如果您想知道,我正在开发的软件非常依赖互联网/网络。因此,用户在使用它时实际上不太可能无法访问互联网。实际上,如果没有互联网/网络访问,它就毫无用处。
- 任何人都知道我会如何处理具有多个 MAC 地址的计算机?现在很多主板都有 2 个以太网端口。大多数笔记本电脑都有 1 个以太网、1 个 wifi 和蓝牙 MAC 地址。我想我可以选择一个 MAC 端口并使用它运行。不确定这是否真的重要
- 聪明而狡猾的用户可以确定软件正在连接的服务器,并可能将其添加到他们的主机文件中,以便它始终尝试连接到 localhost。你认为这种可能性有多大?你认为软件是否可以检查这是否正在完成?我想解析主机文件总是可以的。在那里寻找您的服务器地址,看看它是否连接到本地主机或其他东西。
- 我考虑过加密狗,但我试图避免它们只是因为我知道使用它们很痛苦。让他们保持更新并可能要求客户运行他们自己的许可证服务器对我来说有点太多了。我经历过,我不想让我的客户经历这有点痛苦。此外,我试图避免使用 3rd 方加密狗的额外开销成本。
- 此外,我倾向于连接到远程服务器以验证身份验证,而不是仅仅向用户发送某种许可证文件,因为当用户购买新计算机时会发生什么?我必须向他们发送一个可以在他们的新计算机上使用的替换许可证文件,但他们仍然可以在他们的旧计算机上使用它。我无法在不要求他们在其上运行某些程序或其他东西的情况下“取消授权”他们的旧计算机。
- 另外,重要的一点是,对于该软件,我会向 EULA 中的用户明确说明该软件连接到远程服务器以验证许可,并且不会发送任何个人信息。我知道我不太喜欢在我不知道的情况下做那种事情的软件。
无论如何,只是为可能走这条路的人寻找一些意见。
看起来依赖远程服务器的软件将是最有效的复制保护机制之一,不仅因为难以规避,而且在开发人员端管理许可证也很容易。