0

这是情况。我使用 nw.js 创建了一个应用程序,这很棒,因为我喜欢使用 html、css 和 javascript。但是现在我想出售这个应用程序。我想做的是在objective-c中制作一个小型包装应用程序,它将验证用户序列号并提供一定程度的复制保护。在我的脑海中,我想象有一个应用程序会在objective-c中。这将启动并验证用户,然后如果用户是合法的,它会将一些基本文件解压缩到 nw.js 包中并启动该应用程序。

现在 nw.js 可执行文件已经在一个应用程序包中,我想做的是将该包嵌套在 Objective-C 中,然后在适当的时间运行它。任何人都可以就这是否可能提出建议,如果不是,我还能如何解决问题以保护我的应用程序。

谢谢你的帮助。

4

3 回答 3

1

这没有问题,并且以这种方式嵌套应用程序在 OS X 上很常见(因为你说“.app”我假设这是 OS X,而不是 iOS。这在 iOS 上是不可能的)。我怀疑它作为一种复制保护机制会特别有效,但这是一个完全不同的问题(请参阅有关此主题的几个讨论的链接)。

对于“什么是高效的?”的问题。不幸的是,答案是“如果您必须在 Stack Overflow 上提问,那么您所做的任何事情都不会非常有效;做一些简单的事情并继续前进。” 这并不意味着你是一个糟糕的程序员或任何东西。只是复制保护是一种混淆游戏,如果您使用的是在 Stack Overflow 上找到的东西,它们可能没有那么混淆。你在一周内想出的任何东西都可能没有那么模糊。而且,如果您确实想出了一些非常好的东西,那么每次它被破坏时,您仍然需要定期更新它。苹果有一个完整的团队致力于此,他们控制着系统的每一个部分,包括硬件,仍然存在越狱。

同样,这并不意味着你不能做任何事情。也许你可以阻止一些人,特别是如果你的应用程序不是那么有趣。但是不要在上面浪费太多时间,因为它不会那么有效。(如果这对你的商业计划真的很重要,你应该研究商业解决方案。我没有建议,但希望花一些钱,并在它们被击败时更新到新版本。)

也就是说,嵌套应用程序并不难。

使“子应用程序”成为目标的依赖项。

在您的构建中添加一个新的“复制文件”阶段:

在此处输入图像描述

将目标设置为“可执行文件”并将应用程序包拖到此处:

在此处输入图像描述

当您要启动它时,只需使用 找到它NSBundle.pathForResource:...,然后使用NSTask.

于 2017-03-06T13:43:19.487 回答
0

其实我会推荐另一种方法。如果您想获得某种程度的复制保护,您应该使用 nwjc 将部分代码编译为二进制文件。我会向你解释的。

  1. 构建您的应用程序,使应用程序的某些部分可以使用 nwjc 进行保护。你不需要保护一切。只是难以复制的部分。请记住,使用该代码会导致 30% 的性能损失。通常这是无法识别的,但如果您有大量代码,则可能是这样。

  2. 缩小你的代码。我使用 yuicompressor。它会从您的代码中删除所有注释并将其缩小。这样,其他人即使不是不可能也很难阅读您的代码。它还可以提高代码的性能。

你可以在你的objective-c项目中添加一个应用程序作为目标(我在我的swift项目中做了)并进行安装。但请记住。一旦您的应用程序将代码加载到 nwjs 应用程序中,代码签名就会被破坏,并且其他人可以再次读取该代码。只要 nwjs 运行,您就无法完全保护代码。因此,您必须使用 nwjc 并缩小您的 js。您还可以丑化您的 js 以使其更加不可读。

另一个你必须问自己的问题。我的代码真的那么特别,没有人可以复制它。如果有人想从你那里偷东西,那主要是创新。他们将制作自己的框架并编写自己的代码。优秀的编码人员可以复制任何代码,无论它是否受到保护。他们只是分析输入和输出。因此,只要您没有任何疯狂的数学算法,我怀疑有人会想要窃取它,如果他们可以复制它。即使你有复杂的代码。用 nwjc 保护零件,缩小和丑化会使它无法阅读。有时我们在阅读自己的代码时遇到问题;)

于 2017-03-06T12:36:25.933 回答
0

不,您不能在 Objective C 应用程序中包含另一个 .app!
必须从头开始创建一个本地的。

于 2017-02-14T21:32:37.773 回答