TraceMe---消息断点+Run跟踪

  • 标 题:TraceMe---消息断点+Run跟踪
  • 作 者:Gall
  • 时 间:2010-08-05 21:19:49
  • 链 接:http://bbs.pediy.com/showthread.php?t=118039

     

    【文章作者】: Gall
    【作者主页】: http://hi.baidu.com/8ohack
    【操作平台】: WindowsXP
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      很多新手朋友在这个问题上疑惑重重,今天以TraceMe.exe【加密与解密 第三版---调试片】为例说明一下消息断点+Run跟踪的使用.
      如果大家不知道消息机制的话,建议好好看看【罗云彬版Win32汇编】,当你熟练掌握里面提到的窗口编程时,消息机制的学习就没甚问题了!
     
      ollydbg载入TraceMe.exe,F9运行程序,输入下面的信息.但是不要点那个"Check"按钮.
      【用户名】:Gall_pediy
      【序列号】:123456
     
     
    【第一部分:消息断点的设置】
      1.选择View>>Windows,右键选择Actualize,显示下面的信息
      Windows
      Handle         Title                             Parent     WinProc    ID         Style      ExtStyle   Thread     ClsProc    Class
    0010028C TraceMe 动态分析技术 Topmost 021D00C5 94CE0844 00010100 Main 77D3E577 #32770
      K00090264      Default IME                       0010028C                         8C000000              Main       77D6C930   IME
      IE001201F6     M                                 00090264                         8C000000              Main       FFFF02E3   MSCTFIME UI
      K000B028A                                        0010028C              FFFFFFFF   50000007   00000004   Main       77D3B036   Button
      K000C027E      Exit                              0010028C              000003EA   50010000   00020004   Main       77D3B036   Button
      K000E01FA      ?                                 0010028C              000003F6   50010000   00020004   Main       77D3B036   Button
      K000E01FC      www.PEDIY.com                     0010028C              000003F8   58020001   00000004   Main       77D3E5BB   Static
      K000E0238                                        0010028C              000003E8   50030080   00000204   Main       77D3B3EC   Edit
      K000E0278                                        0010028C              0000006E   50030080   00000204   Main       77D3B3EC   Edit
      K0015023C      Check                             0010028C              000003F5   50010000   00020004   Main       77D3B036   Button
      K001B0234      序列号:                              0010028C              FFFFFFFF   50000007   00000004   Main       77D3B036   Button
      E001D026E      用户名:                              0010028C              FFFFFFFF   50000007   00000004   Main       77D3B036   Button
     
      我们这里的消息断点对象就是Check按钮,
      在Check处右键,选择Message breakpoint on ClassProc,在出现的新窗口中选择消息"202 WM_LBUTTONUP",意思就是对Check按钮下断点,当按下按钮,然后松开时,就被断下来.
     
      到此为止,消息断点的设置完成了,
      这个时候我们可以点击那个Check按钮.在下面的位置被断下来.
     
      77D3B036 >  8BFF            mov     edi, edi                         ; 在此处被断下
      77D3B038    55              push    ebp
      77D3B039    8BEC            mov     ebp, esp
      77D3B03B    8B4D 08         mov     ecx, dword ptr [ebp+8]
     
     
      2.返回到程序的领空
      然后选择View>>Memory,程序的关键信息如下:
      003F0000   0000E000                                       Map    RW        RW
      00400000   00001000   TraceMe               PE header     Imag   R         RWE
      00401000   00003000   TraceMe    .text      code          Imag   R         RWE
      00404000   00001000   TraceMe    .rdata     imports       Imag   R         RWE
      00405000   00001000   TraceMe    .data      data          Imag   R         RWE
      00406000   00001000   TraceMe    .rsrc      resources     Imag   R         RWE
     
      我们在00401000处设置断点,设置完断点后F9运行程序,程序庭在下面的位置
      004010D0   .  81EC F4000000 sub     esp, 0F4                         ;  程序停在这里【返回到程序领空是的位置】
      004010D6   .  56            push    esi
      004010D7   .  57            push    edi
      004010D8   .  B9 05000000   mov     ecx, 5
      004010DD   .  BE 60504000   mov     esi, 00405060
      004010E2   .  8D7C24 18     lea     edi, dword ptr [esp+18]
     
      接下来就是Run跟踪
     
     
     
      【第二部分:Run跟踪】
      1》分析代码
     
      接着上面的操作,程序此时停在004010D0这里,在Run跟踪钱,我们需要分析一下代码,快捷键是Ctrl+A【很多朋友无法Run跟踪,问题就在这里】
      -------------------------------------------------------------------------------
     
     
      2》 Run跟踪的大小设置
     
      选择Options>>Trace,设置大小为1M/45K
      其他的选项根据自己的要求设置.【按照自己的要求设置】
      -------------------------------------------------------------------------------
      
      3》 开始Run跟踪
      1.选择Debug>>Open or clear run trace,
      2.然后在004010D0右键,选择Run trace>>Add entries of all procudures
      3.F9运行程序,然后点击View>>Run trace查看跟踪记录,
      4.在记录处右键Profile module
     
      Profile of TraceMe
      Count      Address    First command                     Comment
      1.         004010D0   sub     esp, 0F4
      1.         00401340   push    ebp
      1.         00401360   xor     edx, edx
     
      双击00401360将来到关键位置.其他的分析打击自己完成吧
      ------------------------------------------------------------------------------
     
    --------------------------------------------------------------------------------
    【经验总结】
      消息断点+RUN跟踪
      【思路】
                1. 按钮按下后,系统会处理对应的消息WM_LBUTTONUP,这个时候被断下,程序挺在系统领空
                2  系统领空返回到程序领空,在刚进入程序领空时停下
                3  从程序领空停下的位置,开始记录
                4  分析记录,得到关键信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值