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

本文通过实例演示如何利用消息断点结合Run跟踪技术进行软件逆向分析,重点介绍了设置消息断点的方法及Run跟踪的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【文章作者】: 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  分析记录,得到关键信息
 
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2010年08月05日 21:17:06

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值