关于如何利用eval hook添加sourceURL调试eval代码
比如现在有一个代码```js
eval(`
function add(a,b){
return a + b
}
console.log(add(1,2))
`)
```
关于如何调试可能就束手无测了
这个时候可以对eval进行hook
添加一个sourceURL
就会在source里生成一个js文件片段
然后打上断点刷新即可
我们加一个hook
```js
const oldEval=window.eval
window.eval=function(str){
return oldEval.call(this,str+'//# sourceURL=test.js')
}
eval(`
function add(a,b){
return a + b
}
console.log(add(1,2))
`)
```
可以发现多了一个test.js的代码片段
进行下断点后刷新即可正常断下
![图片.png](data/attachment/forum/202301/12/214528ko9dy9vhd2h1oz1g.png)
# 结语
撒花~ 本帖最后由 steven026 于 2023-1-12 21:55 编辑
!(data/attachment/forum/202301/12/215311nl22kt24v500v5g9.png)
![](https://d.ifengimg.com/q100/img1.ugc.ifeng.com/newugc/20210510/19/wemedia/ce208d5053320606599bccb2641e1a4568578c25_size2572_w485_h645.gif) steven026 发表于 2023-1-12 21:54
!(data/attachment/forum/202301/12/215311nl22kt24v500v5g9.png)
![](https://d.ifengimg.com/q100/im ...
{:4_86:}也是...一种思路! 李恒道 发表于 2023-1-12 22:13
也是...一种思路!
使用场景不同,快反驳 不能一天丢两次脸 steven026 发表于 2023-1-12 21:54
!(data/attachment/forum/202301/12/215311nl22kt24v500v5g9.png)
![](https://d.ifengimg.com/q100/im ...
这种eval方式主要用于源码使用大量的eval进行构建
如果使用debugger难以做精准化的注入
而且调试在多文件的情况下也不方便
如果使用引用文件的方式
我们可以直接利用浏览器的搜索功能 王一之 发表于 2023-1-12 23:45
使用场景不同,快反驳 不能一天丢两次脸
我编造了一个场景堵回去了! 本帖最后由 steven026 于 2023-1-13 09:04 编辑
> [李恒道 发表于 2023-1-12 23:58](forum.php?mod=redirect&goto=findpost&pid=50145&ptid=3999)
> > 这种eval方式主要用于源码使用大量的eval进行构建
如果使用debugger难以做精准化的注入
而且调试在多文件 ...
!(data/attachment/forum/202301/13/090213c1aaw173t5ct1535.png)
那就直接在开头加debugger 然后手动打断点😘
页:
[1]