JSREI / ast-hook-for-js-RE

浏览器内存漫游解决方案(探索中...)
Other
1.5k stars 393 forks source link

eval hook 的问题 #7

Open genufish opened 3 years ago

genufish commented 3 years ago

eval代码并不一定是完整的,比如:

`(function(){

let a=1,b='a';

eval('console.info('+b+')');

//实际此处执行console.info(a)

})()`

如果把eval函数重写了,变量a就会无法获得。

建议代理动态修改源码为

`(function(){

let a=1,b='a';

eval(eval_hook('console.info('+b+')'));

//由额外的eval_hook对拼装的js代码进行处理返回,再交由eval执行

})()`

完毕

genufish commented 3 years ago

eval几乎无法在无副作用的情况下重写,Function没这个问题,不受上下文影响。