| ollydbg的教学-Runtrace |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:58:02
|
| Run trace 在OllyDbg 1.04中被引进。 这种debug技术的基础非常简单。代码一步步的执行,调试器把各种命令,寄存器和标志放在一个大的循环缓冲区。当异常发生,就可以回溯到前面几步甚至几百上千步,从而分析导致错误的原因。 OllyDbg 1.06极大的提高了run trace的可能性. Run trace显示被修改的寄存器值和保留重要的消息和已知函数的操作数。你可以设置条件中断run trace,概括被跟踪代码,把run trace写入磁盘避免超过内存上限或者比较两次运行,调试self-modified程序,找出上次什么时候命令在某个位置被执行等等。 请记住run trace是非常慢的.。在一个500-MHz的处理器上,OllyDbg没妙能够跟踪最多 2500 (Windows 95)或者5000 (NT)命令. 为了加速run trace,你可以把准线性的代码块(就是不包括调转指令的)标记为一次执行。另一个局限是:OllyDbg不保存可存取内存的内容。 为了让你熟悉run trace,让我们尝试调试一个简单的控制台应用程序(己编译好的rtrace.exe下载): - #include <stdio.h>
- void f1(void) { printf("a"); };
- void f2(void) { printf("b"); };
- void f3(void) { printf("c"); };
- void (*f[3])() = { f1,f2,f3 };
- void main(void) {
- int i,j,k;
- for (i=0; i<100; i++) {
- for (j=0; j<1000000; j++) ; // Long code
- k=i/33;
- if (k>3) continue;
- f[k](); // Here error (when i==99)!
- };
- printf("\n");
- };
函数f1, f2 and f3打印出a, b and c。主程序call每个函数33次,然后回车结束...至少理论上是这样。(你已经发现错误了?很好,但这里我们学习如何通过run trace得到一样的结果)。试运行rtrace.exe,几秒后他崩溃了:
哦不!(编者:好恶:)非常明显的错误!如果OllyDbg是你的实时调试器,你按"
[1] [2] [3] 下一页
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: 应用olldbg快速调试入门 下一篇文章: 爆破CHMUnpacker!! |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |