文章总结: 本文介绍JS调试中避免控制台卡死的技巧,重点分析使用条件断点替代日志断点的方法。通过将插桩日志保存至Map对象而非直接输出,可有效处理大量日志场景,并给出具体实现示例:在条件断点中执行日志存储逻辑后返回false避免中断。文章还提供了JSVMP分析和变量捕获的实际应用案例。 综合评分: 78 文章分类: WEB安全,逆向分析,安全工具,代码审计,漏洞分析
JS调试技巧:避免控制台卡死的日志断点使用技巧
原创
LLLibra146 LLLibra146
LLLibra146
2025年6月3日 08:02 北京
在小说阅读器读本章
去阅读
大家好,今天分享一个在分析 vmp 时不再卡死浏览器的小技巧。
jsvmp
在分析 jsvmp 的时候,一般会使用插桩的方式来输出对应位置的日志,但是有的时候日志量太大,可能会卡死控制台。
这个时候可以考虑在插桩的时候,将插桩的日志保存到一个 list 或者 map 对象中,不要将所有的日志都打印出来,可以缓解控制台的压力,并且方便后续将所有的日志复制出来进行分析。
日志断点
日志断点大家应该都知道了,但是如果想要将日志断点的结果保存到 list 或者 map 中的话,直接调用 push 或者 set 方法是不可以的,因为最终的表达式会被放到 console.log 方法中执行,即使是 push 到了 list 中,最终 console.log 还是会输出 push 方法的返回值。
image-20250602210511689
如图所示,我随意找了一个日志断点,最终执行的表达式是这样的,使用 console.log 进行输出的。
条件断点
那应该如何将插桩的日志保存到 list 或者 map 中,但是又不会往控制台输出大量日志呢?在反混淆逻辑表达式的时候突然想到逻辑表达式就是可以根据条件判断是否要继续往后执行的,那最起码要先执行一段表达式,在这个时候执行插桩日志的保存逻辑不就好了。
随便找一道题来尝试一下:
image-20250602212011909
在条件断点中写下如上表达式,别忘了最后要加上条件,这是为了让这个表达式的值永远为 false,这样条件断点就不会在这断下,但是会正常执行插桩的逻辑。
mapppp.set(Math.random(),JSON.stringify({'_220575':_220575},function(k, v) {if (v == window) {return 'window'} return v})) && false
注:此处插桩逻辑仅作为示例,可能无实际作用。
image-20250602212118102
别忘了提前定义一个名字叫 mapppp 的 map,可以看到条件断点正常生效并且输出了所需变量的值。
再来尝试一下输出 jsvmp 中的某个数组的值:
image-20250602212305273
image-20250602212403341
map 中使用随机数只是为了不让 key 相互覆盖,可以看到数组的值被正常的打印出来了。
总结
综上所述,使用条件断点代替日志断点可以更好的处理大量日志的情况,当然具体的插桩代码大家可以按需修改,我这里只提供思路。
且并不是说日志断点可以用条件断点代替,只能说在日志量特别大的情况下,可以替代使用,这样对于调试会更加方便。
最近一直有小伙伴问我有没有交流群,为了能让大家更好的交流,我组建了一个逆向交流群,想要进群的小伙伴可以在后台点击“联系我”菜单或者扫码,添加微信并且备注“交流群”,我会拉你进群。
推荐阅读:
0基础1分钟解密任何HTTPS加密流量
JS调试技巧:如何让时间和随机数“听你指挥”?升级版!
AST 技巧:模版(template)的高级用法
如何在浏览器中使用 AST 实时反混淆?(附AST模版可直接使用)
AST 使用技巧:如何快速分析混淆代码结构
在 JS逆向时如何 hook 属性?
如何 “正确” hook JS方法
无需登录,满血版DeepSeek R1,很强!
一日一技:反爬虫的极致手段,几行代码直接炸了爬虫服务器
JS调试技巧:如何让时间和随机数“听你指挥”?
AST 技巧:还在手动扣代码?AST技术帮你自动扣代码
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:LLLibra146 LLLibra146 LLLibra146《JS调试技巧:避免控制台卡死的日志断点使用技巧》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论