黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 软件破解 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[组图]破解|利器|ollydbg|教学|Run trace
      ★★★★★

破解|利器|ollydbg|教学|Run trace

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-10-28 9:40:54

 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是你的实时调试器,你按"Debug",但是Disassembler窗口是空的!地址00620061不指向任何地方,而且你没有模糊的概念哪一条指令跳到这个位置。让我们从头开始按Ctrl+F2 (Restart),然后Ctrl+F11 (Trace into) 等一到两分钟。控制台仍然是空的。可能够某些代码花费太长时间执行,中断run trace用F12 (Pause)或者Esc。在可执行模块点击RTRACE并选择"View run trace profile":

 

    一条命令或者说一系列命令在地址00401191被执行超过24000次。从这里进入Disassembler:

 

    这个3条命令的短循环执行了F4240 (十进制1000000)次。按没秒5000条命令,OllyDbg将需要10分钟通过这个循环。注意到这个命令序列是准线性的,例如没有跳转到外部。从pop-up右键菜单,选择"Run trace|Skip selection when tracing"。红线在第四栏包括那几条命令被排除在run trace之外。当OllyDbg遇到被排出的命令序列,他在被排除命令块的下一条指令设置一个临时断点(在这个例子里是00401199)然后执行一次命令块。当然,任何返回或者向外部得跳转将导致正确的跟踪失效,因此OllyDbg检测你需要排除的代码块并要求你的确认。

[1] [2] 下一页

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886