jdists 对js文件加密或者对有参数函数加密
wuming-hero opened this issue · comments
wuming commented
您好 最近在研究您写的jdists 想使用jdists进行前端js进行混淆加密
demo大致都看了一下 一些基本的功能也可以进行加密了 可能由于对jdists理解还不是很深入 现在碰到一
个问题 没有看到合适的demo或者解决方法 想请教一下
问题是这样的 我看到jdists里都是对函数体内的代码进行加密,而一般js都是单独的文件,然后引入进来的
请问如何使用jdists对这个文件进行整体加密呢?
还是单独对这个js文件内的每个函数体内的代码进行加密吗?
我尝试直接在一个js文件中使用
/*<jdists encoding="aaencode">*/
var a = '1';
var b = 2;
/*</jdists>*/
在对函数体进行加密的时候无法获取到参数,第一种情况是undefined 第二种情况获得的
typeof arguments: object-----arguments: {"0":"_"}
function abc(params){
/*<jdists encoding="aaencode">*/
// 加密后 params is not defined
var a = params;
// or
var b = arguments[0];
.....
/*</jdists>*/
}
请教以上遇到的问题怎么解决呢 谢谢了
王集鹄 commented
推荐使用 jfogs
这是另一个项目:https://github.com/zswang/jfogs
- aaencode 和 jjencode 只是看上去难破解而已。劫持
new Function
构建过程,就能抓取到原文。 - 参见:http://div.io/topic/1220
- jfogs 则是分析语法树后重新组织属性访问的代码。
使用方法
jfogs 可以处理整个文件
npm install -g jfogs # 安装
jfogs /test/fixtures/angular.in.js -o /test/fixtures/angular.output.js
- jfogs 处理完后再用 uglify 压缩就很难阅读了。
如果配合 jdists 我会这样写:
/*<jdists encoding="aaencode">*/
/*<jdists encoding="jfogs,uglify">*/
function abc(params) {
var a = params;
// or
var b = arguments[0];
console.log(a, b);
}
window.abc = abc; // exports
/*</jdists>*/
abc('ue');
/*</jdists>*/
- 要注意代码会被再次封装一个函数中,形成闭包。对外保留的函数需要导出,如:
window.abc = abc; // exports
- jdists 支持嵌套,可以用 jfogs 加密(属性名变成函数参数),后用 uglify 压缩(混淆)
- jfogs, uglify 处理完后是这样:
!function(n,o,c,i){function a(n){var i=n,a=arguments[o];console[c](i,a)}""===n&&(window[i]=a)}("",0,"log","abc");
abc('ue');
感谢关注。
wuming commented
3Q very much
两种方法我都会去尝试下的
两次感谢您的回答