

两个实用的调试技巧
source link: http://www.cnblogs.com/xiaoyuxy/p/12449389.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

逆向找脚本
平常我们开发的时候,想调试功能流程或者定位某个状态下的一些值的变化,我们可以使用 debugger
关键字,或者直接在浏览器控制台里打断点,像这样:
不过,如果我们遇到传说级别的,动则几万、几十万行的代码,并且分布非常混乱上面的方法或许不是很方便。
对于这类业务代码,其实更多是更新迭代小功能,那么有没有办法能够帮助我们快速定位到我们要想修改的地方呢?
谷歌为我们提供了dom上的断点,可以检测三种情况:
- Subtree modifications: 在移除或添加当前所选节点的子级,或更改子级内容的时候触发该断点。
- Attributes modifications:在当前所选节点上添加或移除属性的时候会触发
- Node Removal: 在移除当前节点的时候触发
'偷'资源
这里说的'偷'是阅读别人的代码,下载一些图片、视频资源等操作,不用做商业用途自己用用还是没问题的。
这个会面对的问题学名叫做:前端反调试。
为什么会有这个东西呢?因为浏览器环境太不安全了,以至于我们的代码无时无刻都有可能被别人窃取、篡改,我们的辛辛苦苦创作的资源也很容易被别人利用,所以我们有代码混淆、压缩,反调试等等方法,来过滤部分人,反与被反的斗争持续至今。
这里我们是'被反'者。
有段时间很喜欢看热血动漫,但是资源或不好找或付费,很是烦恼,所以就去某网站去爬取资源并下载下来,但是当我打开控制台的时候,我发现我无法使用dom选择器选中dom,因为有个断点在不断地循环:
通过查看源代码,发现它是一段乱糟糟的代码:
虽然我们看到很多_xxxxx的代码,但是不难发现一个规律,这些是由下划线 加 16进制数字组成的js合法变量名,这就是第一步混淆、压缩(图片已解压)。然后我们还看到了几个明显的debugger,这就是阻止我选中dom的主要根源,一个死循环断点,我们可以换一个清晰地代码进行演示:
function loop() { setTimeout(function() { loop(); }, 100); debugger; } loop();
这段代码有两个坏处:
- 一个空的无任何作用的死循环断点。再打开控制台后会一直执行
- 会产生无数个定时器计数器,并且没有被回收,会造成内存泄漏(内存泄漏详见>>>)
第二点会很快造成你的浏览器卡顿,让你想操作都操作都操作不了。
对于这种比较常见的反调试我们有两种选择:
- 可以直接禁止掉浏览器的断点功能
- 用同样的函数名去覆盖他的反前端函数
当然方法不只这两种,如果你有更好的方法,欢迎下面评论。
这就是这次的全部内容了,最近会比较忙,所以更新内容不会很长,请谅解。
如果你能看到这里,不妨点个关注、评个论支持一下,大家的热情就是我的动力。
参考链接
Recommend
-
42
写在前面的话在此之前,我一直都在研究JavaScript相关的反调试技巧。但是当我在网上搜索相关资料时,我发现网上并没有多少关于这方面的文章,而且
-
15
安卓APP动态调试-IDA实用攻略 netwind
-
21
1.ping 命令 ping 是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用...
-
40
调试是一项非常重要的技能,熟练掌握调试技巧有助于我们快速解决问题。 vs 是我们平时编写代码时的首选工具,相信也是大多数小伙伴儿的首选调试工具,因为实际操作起来太方便了,代码编写完,一个 F5 就可以愉...
-
18
两个实用功能 1.复制粘贴功能 2.react锚点处理北京奇观技术有限责任公司 软件开发工程师效果看gif
-
5
接地气:产品日常沟通的两个实用小技巧...
-
6
你需要知道的 19 个 console 实用调试技巧 众所周知,浏览器的开发者工具为我们提供了强大的调试系统,可以用来查看DOM树结构、CSS样式调试、动画调试、JavaScript代码断点调试等。今天我们就来看看console调试的那些实用的调试技巧。 如...
-
6
你需要知道的 19 个 Console 实用调试技巧!-51CTO.COM 你需要知道的 19 个 Console 实用调试技巧! 作者:CUGGZ 2022-07-06 15:51:48 浏览器的开发者工具为我们提供了强大的调试系...
-
2
1. 讲故事 用惯了宇宙第一的 Visual Studio 再用其他的开发工具还是有一点不习惯,不习惯在于想用的命令或者面板找不到,总的来说还是各有千秋吧,今天我们来聊一下几个在调试中比较实用的命令: 虚拟内存布局
-
5
V2EX › Java Cool Request 更新啦, IDEA 里面免费、实用的接口调试插件
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK