有效的nodejs字符串到javascript对象的代码

时间:2012-11-05 15:16:57

标签: javascript node.js

我的目标:我正在尝试将.js文件加密为.jse并仅在其运行时解密(obfuscate nodejs code)。

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对象。有没有办法导出我解密的代码字符串?

2 个答案:

答案 0 :(得分:1)

这是您的解决方案(未经测试):

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

快乐调试加密模块;)

答案 1 :(得分:0)

module.exports是一个你可以分配的对象(即:module.exports.newFunc = someFunction;)

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

编辑因此,您应该将加密文件设为JSON类或查看类似问题的答案Load "Vanilla" Javascript Libraries into Node.js