我的目标:我正在尝试将.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对象。有没有办法导出我解密的代码字符串?
答案 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