2012-11-05 58 views
1

我的目標:我正在嘗試將.js文件加密到.jse中,並且只在運行時解密(objuscate nodejs code)。有效的nodejs代碼字符串到JavaScript對象

 
var ffi = require('ffi'); 

//libpcrypt.so is a library to encrypt and decrypt files 
var crypt = ffi.Library('./libpcrypt', { 
    'decrypt' : [ 'string', ['string', 'string']] 
}); 

require.extensions[".jse"] = function (module) { 
    module.exports = (crypt.decrypt(module.filename, 'out')); 
}; 

console.log(require('./routes.jse')); 

我知道,用cosole.log()的源代碼可以打印出來。

問題:解密代碼是一個純字符串,我無法將其轉換爲導出的有效javascript對象。有沒有辦法導出我解密的代碼字符串?

回答

1

這裏是您的解決方案(未測試):

require.extensions['.jse'] = function(module, filename) { 
    var content = crypt.decrypt(fs.readFileSync(filename), 'out') 
    return module._compile(content, filename); 
}; 

得不快樂gging加密模塊;)

+0

謝謝。我也看到了這個http://stackoverflow.com/a/9163557/458816。但是我得到'SyntaxError:意外的標記ILLEGAL'。我認爲這是編碼問題,並轉換爲utf-8。但沒用。 – rda3mon

+1

此代碼應該工作,因爲這個代碼從工作庫中被盜。檢查你想要編譯的源代碼。 – Anatoliy

+0

好的。試着再次感謝..至少我知道什麼是正確的代碼.. – rda3mon

0

module.exports是一個對象,你可以分配給(即:module.exports.newFunc = someFunction;)

JSON.parse(crypt.decrypt(module.filename, 'out')); 

編輯所以,你應該讓你的加密文件中的JSON類或看看這個回答過類似的問題Load "Vanilla" Javascript Libraries into Node.js

+0

它沒有工作。因爲該字符串是純文本而不是JSON.stringify生成的。 解析錯誤:'SyntaxError:Unexpected token e' – rda3mon

+2

@ mv945 - 所以你應該讓你的加密文件成爲一個JSON類或檢查出這個答案類似的問題http://stackoverflow.com/questions/5171213/load-vanilla- javascript-libraries-into-node-js –

+0

你指給我正確的方向。謝謝..但我不能接受你的答案,除非你編輯它:) – rda3mon