1

我的目标:我正在尝试将 .js 文件加密为 .jse 并仅在它运行时解密(混淆 nodejs 代码)。

var ffi = 需要('ffi');

//libpcrypt.so 是一个用于加密和解密文件的库
var crypt = ffi.Library('./libpcrypt', {
  '解密':['字符串',['字符串','字符串']]
});

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

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

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

问题:解密代码是纯字符串,我无法将其转换为有效的 javascript 对象以进行导出。有没有办法导出我解密的代码字符串?

4

2 回答 2

1

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

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

愉快地调试加密模块;)

于 2012-11-05T18:08:12.960 回答
0

module.exports 是您可以分配给的对象(即:module.exports.newFunc = someFunction;)

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

编辑所以你应该让你的加密文件成为 JSON 类或查看类似问题的答案Load "Vanilla" Javascript Libraries into Node.js

于 2012-11-05T15:25:58.397 回答