前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序断点

程序断点

作者头像
狼啸风云
修改2022-09-03 22:18:03
2.2K0
修改2022-09-03 22:18:03
举报

程序断点是指由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。所谓断点就是程序被中断的地方,这个词对于解密者来说是再熟悉不过了。那么什么又是中断呢?中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打电话告诉你他从外地坐火车过来,要你去火车站接他。然后你就向老板临时请假,赶往火车站去接同学,接着将他安顿好,随后你又返回公司继续上班,这就是一个中断过程。我们解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程序,找到正确的注册码。所以我们需要为被解密的程序设置断点,在适当的时候切入程序内部,追踪到程序的注册码,从而达到crack的目的。

2、源码调试/debugger方法

1、控制台调试按钮介绍

Resume script execution恢复断点调试、常用在一个方法调用多个js文件(适用冗长js代码使用)、点击这个会直接跳转到下一个断点(逐过程执行)

Pause script execution停止断点调试

step over next function call逐语句执行,每点击它一次,js语句就会往后执行一句,快捷键-F10

step into next function call进入函数内部、单步执行下一个函数调用

step out of current function call跳出当前函数调用

Step快捷F9

停用断点Deactive breakpoints

暂停断点Pause on exceptions 彩蛋:在控制台中输入$(this),即可得到我们所点击的对象——加载更多按钮元素。 注:进入jquery、vue这样的文件时,用加速跳出,同时注意到最好慢点点击。不然出来之后点快了容易跳过要进入的函数。跳出来之后应继续使用进入函数按钮跳进函数内部看信息。

2、逐过程执行和逐语句执行区别详解

假设上图我只在227行打了个断点,然后一直点击逐语句执行”按钮到229行,这时如果再点击一次“逐语句执行” 则会进入下图的js里:

我们不可能一直使用“逐语句执行”按钮,这样你会发现你按了大半天还在库文件里面绕,那就该用“逐过程执行”按钮。

我除了在227行打了一个断点,同时还在237行打了一个断点,当我们运行到229行时,直接单击“逐过程执行”按钮, js直接跳过了库文件,运行到了237行。

3、打断点的情况调试

1、操作方法

1.在谷歌浏览器中用Command+option+F打开全局搜索,然后搜索对应页面/事件。 技巧:要看某个函数首先找到这个函数的入口,最好先找入口事件,从页面最初渲染的函数进去才好一步步往下走。打断点时在函数内部打,不要在外部打断点! 初始化函数常为生成一个DOM...

全局搜索对应函数之后,直接点进去

2.在合适的地方打断点后,即可刷新页面了。注意是 状态下

3.1会自动跳到函数内部,然后通过 按钮不断按函数顺序执行,每次执行函数之后都能看到相应函数的含义,直到函数执行结束。 3.2有时候刷新无效,本质是断点没有触发事件,那个事件可以是鼠标移入移出点击或点击事件等,所有要在界面中进行对应操作就会跳入断点调试阶段。当然也可能上一个函数有错误,导致程序不能执行到断点位置。 4.执行到最底层时:执行栏显示为灰色无法点击

2、断点调试过程的收益

1.具体看某个变量的系数就把鼠标放在上面

2.可看每次过程执行之后对应的提示

3、断点调试案例

法一 1.在227行打上断点 2.点击加载更多按钮 3.单击一次“逐语句执行“按钮,js代码执行到228行 4.用鼠标选中i++ 5.选中以后,鼠标悬浮在目标上方,你就看到上图的结果。

法二、在控制台输出i的值 1.按照第一种方法执行到第三步 2.打开和sources同一级栏目的console 3.在console下方的输入栏里输入i 4.按enter回车键即可

4、不打断点调试

1.没打断点的情况下,点击入口函数,再点击 按钮进入了函数内部。 2.通过 按钮不断按函数顺序执行,每次执行函数之后都能看到相应函数的含义,直到函数执行结束。

5、总结

1.没打断点时在console输入i,i只是一个局部变量,浏览器会把所有的js全部解析完成,console并不能访问到局部变量,只能访问到全局变量,所以console会报错i未定义。 2.当js打上断点时,console解析到了局部变量i所在的函数内,这时i能够被访问。

6、断点调试实战

小程序断点调试实例(重点介绍--打断点的思路) 1.首先看动态效果图、发现一个规律:第一次点击的新闻详情没问题,控制台正常输出对应的index,但是点击的第二个却会报错 。VM207:1 Setting data field "collected" to undefined is invalid. 2.全局搜索找到collected相关的代码片段 3.通过打断点找问题的方法很重要

4.分别在三处不同地点打断点看效果 第一处:页面初始化onLoad函数中(制作步骤效果、分析效果)

第二处:(制作步骤效果、分析效果)

进入调试发现postCollected=undefined,这就是问题所在。

第三处:收藏按钮函数中(制作步骤效果、分析效果)

4.分析问题: postsCollected是一个缓存数组,其中每一个新闻的index数据在缓存状态中是独立的 使用if(postsCollected)会导致第一次点击后缓存里面就被加入一个index的数值了,那么点击另外一条新闻之前postsCollected就已经为真了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2、源码调试/debugger方法
    • 1、控制台调试按钮介绍
      • 2、逐过程执行和逐语句执行区别详解
      • 3、打断点的情况调试
        • 1、操作方法
          • 2、断点调试过程的收益
            • 3、断点调试案例
            • 4、不打断点调试
            • 5、总结
            • 6、断点调试实战
            相关产品与服务
            云开发 CloudBase
            云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档