king51999 发表于 2021-3-16 17:52

请教各位老师,什么是跑飞?

学着用X64 debug调试程序,看到一篇文章说“此处程序跑飞,F7步入”,请问各位老师,如何能看出程序在何处跑飞?有什么特征吗?谢谢了!本人小白一个,刚刚学习不久,请不要见笑!

WangLuxiang 发表于 2021-3-16 19:16

程序跑飞是指系统受到某种干扰后,程序计数器PC的值偏离了给定的唯一变化历程,导致程序运行偏离正常的运行路径.程序跑飞因素及后果往往是不可预计的.在很多情况下,程序跑飞后系统会进入死循环而导致死机.
数组越界,中断服务程序缺失或者看门狗复位

fanvalen 发表于 2021-3-16 20:20

跑飞是说没有在你想要的地方停下,
比如说脱壳,需要在程序入口点停下,结果程序运行起来了,达不到脱壳的目的。
又或者需要在中间拦截注册码,结果一个call直接略过了,没拦截到。
跑飞并不一定是指程序运行了,没有走到你想要的那条路上去也算跑飞,
程序中有很多跳转,每次跳转都要增加岔路,你不知道此处是该跳还是不该跳,
需要多次跑路看能否得到需要结果,在这多次跑路中找到关键跳

董督秀 发表于 2021-3-16 19:55

可以简单粗暴地理解为,程序在此处单步后,直接运行起来了,无法再进一步进行跟踪或调试。
部分软件跑飞后仍然可以脱壳。

masterhei 发表于 2021-3-16 20:07

学习了,谢谢讲解

bester 发表于 2021-3-16 20:13

我通俗一点说吧,我们在x64dbg中运行的程序,当你单步F8走的时候,被调试程序其实是处于一个暂停状态,就是一步一个脚印,被X64dbg控制,我们想让他运行就运行,想让他到哪就到哪,那么所谓的跑飞就是,程序在我们单步走到某处的时候,我们没有按F9运行,程序就自己运行起来了,显示了界面,这个就是跑飞,一般跑飞的点都处于某个call

king51999 发表于 2021-3-16 21:35

感谢大家的详细解答,学习路上任重道远,我还需加倍努力!有没有老师能给发个图示的,让我感觉更直观一些,谢谢了!!

xwhat 发表于 2021-3-18 21:11

3楼讲的已经很通俗易懂了呀,上图没必要

成熟的美羊羊 发表于 2021-3-30 12:45

调试器在call的下一条指令下断点 , 但是这个 call 没有走到下一条指令 , 反而跑其他地方去了 , 调试器断不下来 , 似乎这个就是跑飞

king51999 发表于 2021-3-31 13:17

成熟的美羊羊 发表于 2021-3-30 12:45
调试器在call的下一条指令下断点 , 但是这个 call 没有走到下一条指令 , 反而跑其他地方去了 , 调试器断 ...

感谢老师解答
页: [1] 2
查看完整版本: 请教各位老师,什么是跑飞?