能力值:
(RANK:680 )
|
-
-
2 楼
不明白LZ的问题.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
比如有个函数x, 现在程序call x, 然后我F7步入进去就有一段代码无限循环,
但是我如果不进去这个函数直接F8步过,这个函数可以正常返回.....
|
能力值:
(RANK:680 )
|
-
-
4 楼
如果x的代码不多, 你可以贴上来看看~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
可能循环了1000次,你一步步跟当然觉得是无穷循环,F8一下当然又正常返回~~
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
绝对不是有穷循环, 我用自动跟踪了5分钟还循环, 而且一直在重复固定的几个数字, 现在贴不了代码...
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
贴下代码看看比较好。
|
能力值:
(RANK:260 )
|
-
-
8 楼
自动跟踪说明不了问题。
CPU执行一条指令花费的时间在ns级别,而跟踪一条指令至少要慢上几个数量级。
OLLY1中的跟踪功能,实现为自动单步运行程序。因此,每执行一条指令,CPU至少要进入单步异常的处理,进入内核,最后由内核调度调试器进程运行,最后调试器还要执行很多分析记录的工作。假设跟踪一条指令所花的时间在us级别,也相差了3个数量级。按这样的时间算,假设1秒能执行完的程序,跟踪的话需要数十分钟!在很多数值计算的场合,一个算法运行数百毫秒甚至数秒是很常见的事。
似乎OLLY2中的跟踪功能使用指令级模拟技术(可能我记错了,不过至少与OLLY1不一样的),可以让跟踪的速度快许多。然而OLLY2目前还没有正式发布。
分析循环,一种可能的方法是用ollyflow插件,或IDA,生成这段代码的流程图,然后从流程图中就可以找到循环的出口附近的代码。
注:程序利用SEH及单步异常,可以实现这样的功能:程序正常运行时不循环,而当调试器单步运行时执行无限循环。选择OD不忽略单步异常,F9运行程序,看看会不会有单步异常发生。如果有的话,就是SEH
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
谢LS老大, 长知识了, 应该是你说的"数量级"问题, 看来还要更加努力 谢谢大家!
|
|
|