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

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 软件破解 >> 正文
·完美空间提供500M免费AS04-10·企业安全之YY内网准入以04-09
·企业安全之意识与策略04-09·剑走偏锋:IIS漏洞利用04-09
·我来免费网提供100M免费04-09·1122mb.com提供20G超大免04-08
·映像劫持与反劫持技术04-07·让所有"暴力删除工具"无04-07
·入侵88red系统的详细过程04-07·Sql Injection脚本注入终04-07
·vbs+delphi 反弹后门生成04-07·飞讯网提供100MB免费PHP04-07
·突破SQL注入攻击时输入框04-04·结合内核和病毒技术的最04-04
·Real Player rmoc3260.d04-04·亿万网络今月最后为您提04-04
·php+mysql 5 sql inject04-03·Real Player rmoc3260.d04-03
·oblog文件下载漏洞04-03·免费啦提供1G-2G免费全能04-03
·完全解析网页后门和挂马04-02·一句话开3389(只测试过04-02
·萧萧免费空间网提供100M04-02·谷道免费空间网提供1G免04-01
·从本地入手解决双线路由03-31·sablog 1.6 多个跨站漏洞03-31
·富文本编辑器的跨站脚本03-31·Cookie注入是怎样产生的03-31
[组图]破解|利器|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 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886