2017-09-17 60 views
0

我從blog看到jxcore可以創建基於js代碼的可執行文件(作爲命令行應用程序運行)並保護源代碼不被輕易看到。jxcore無法保護源代碼

但是,當我嘗試以下,只見excutable文件(在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"); 

我知道沒人源完美的保護應用程序不被顛倒的方式。但我只是希望沒有簡單的方法(如「字符串」命令)從可執行文件中獲取源代碼。

+1

看看你是否可以grep for'console.log'。如果不是,那麼字符串的編碼方式與二進制文件中的編碼方式相同,實際的代碼仍然處於隱藏狀態。 – jdgregson

+0

如果是這種情況,隱藏字符串對你來說真的很重要,你可以嘗試編碼它們,例如:'var test1 = atob('this is test1')' – jdgregson

+0

@jdgregson你的'atob()'例子沒有工作。首先,源字符串仍然可能出現在二進制文件中。而且,'atob()'只適用於Base64數據。例如,'btoa(atob('hello world'))=='helloworlQ ==''。 – duskwuff

回答

0

您閱讀的博客文章簡單地說是過時的,並且是錯誤的。 The "protection" features provided by JXCore were severely flawed,並在項目的後續版本中大量刪除。

請勿使用JXCore。 Development on the project was halted in March 2016;它已經大大落後於node.js平臺,並且不提供像pkg這樣的開放式解決方案的真正優勢。

+0

這是有道理的。我下載了JXCore並試圖重現這個問題,但是任何我「編譯」的東西都只是簡單地發出了亂碼和崩潰的打擊。即使我有一個在我的開發機器上進行編譯,我當然也不會相信這些程序中的一個在客戶機上運行。 – jdgregson

+0

感謝@duskwuff的評論。我確實嘗試過'pkg',但它也不提供一些保護。不知道是否有辦法將js文件編譯成某種字節碼並將其包含在可執行文件中。 – packetie