李恒道 发表于 2023-1-12 21:45:52

关于如何利用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:54:06

本帖最后由 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)

李恒道 发表于 2023-1-12 22:13:51

steven026 发表于 2023-1-12 21:54
!(data/attachment/forum/202301/12/215311nl22kt24v500v5g9.png)
![](https://d.ifengimg.com/q100/im ...

{:4_86:}也是...一种思路!

王一之 发表于 2023-1-12 23:45:31

李恒道 发表于 2023-1-12 22:13
也是...一种思路!
使用场景不同,快反驳 不能一天丢两次脸

李恒道 发表于 2023-1-12 23:58:44

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:58:58

王一之 发表于 2023-1-12 23:45
使用场景不同,快反驳 不能一天丢两次脸

我编造了一个场景堵回去了!

steven026 发表于 2023-1-13 09:02:48

本帖最后由 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]
查看完整版本: 关于如何利用eval hook添加sourceURL调试eval代码