【问题标题】:jxcore can't protect source codejxcore 无法保护源代码
【发布时间】:2018-02-25 21:20:57
【问题描述】:

我从blog看到jxcore可以创建基于js代码的可执行文件(作为命令行应用程序运行)并保护源代码不被轻易看到。

但是当我尝试以下操作时,我看到可执行文件(在 Ubuntu 中)仍然包含源代码

# jx package test1.js
# change library and extract attribute in file test1.jxp to be false
# jx compile test1.jxp
# grep "this is test1" test1 
  Binary file test1 matches

小JS文件test1.js

console.log("this is test1");

我知道没有完美的方法可以保护应用程序不被逆转。但我只是希望没有简单的方法(如“字符串”命令)从可执行文件中获取源代码。

【问题讨论】:

  • 看看你能不能用 grep 搜索console.log。如果不是,则字符串的编码方式与在二进制文件中的编码方式相同,并且实际代码仍处于隐藏状态。
  • 如果是这种情况并且隐藏字符串对您来说真的很重要,您可以尝试对它们进行编码,即:var test1 = atob('this is test1')
  • @jdgregson 您的atob() 示例不起作用。一方面,源字符串仍然可能出现在二进制文件中。此外,atob() 仅适用于 Base64 数据。例如,btoa(atob('hello world')) == 'helloworlQ=='
  • @duskwuff 这或多或少是一个例子,可以使用任何其他编码方法。但是,如果源字符串的编码版本是 ASCII 可表示的,则源字符串并不总是必须在文件中。例如,您可以使用二进制并说var test1 = '01110100 01100101 01110011 01110100';,然后只需调用console.log(decode(test1));(其中decode 是您自己的专用解码器)。
  • 不错的尝试@jdgregson :-) 就像@duskwuff 指出的那样,无论您的js 源代码可以很容易地提取(通过strings 之类的东西) :-) 但是您对使用专用解码器的建议是确实很有趣。愿意举个例子吗?

标签: javascript jxcore


【解决方案1】:

简而言之,您阅读的博客文章已过时且错误。 The "protection" features provided by JXCore were severely flawed,并在项目的后续版本中大部分被删除。

不要使用 JXCore。 Development on the project was halted in March 2016;它已大大落后于 node.js 平台,并且与 pkg 等开放解决方案相比没有真正的优势。

【讨论】:

  • 这是有道理的。我下载了 JXCore 并试图继续重现该问题,但我“编译”的任何内容都只会发出乱码并导致 bash 崩溃。我当然不会相信其中一个程序可以在客户的机器上运行,即使我曾经有一个可以在我的开发机器上编译。
  • 感谢@duskwuff 的评论。我确实尝试过pkg,但它也没有提供一些保护。想知道是否有办法将 js 文件编译成某种字节码并将其包含在可执行文件中。
猜你喜欢
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 2017-09-03
  • 2011-05-08
  • 2012-06-26
  • 1970-01-01
  • 2019-01-27
相关资源
最近更新 更多