zoukankan      html  css  js  c++  java
  • OllyDBG找到按钮的处理函数

    最近系统有点慢,就想优化一下,于是下了个XX大师。结果要注册才行,看来可以用来练练手了。OD一下,靠还加了壳,偶就是用一下,就不脱你了。开始在弹出窗口MessageBoxA下断,伊,结果不是用的这个函数,看来还有点麻烦。于是在折腾了半天后偶明白了(因为是新手,所以要折腾半天),要在“全部删除”按钮的处理函数下断,但是处理函数在哪里呢?自己又折腾了半天,愣是没找到,还是soso一下,找到一篇文章叫做《OllyDBG 入门系列(五)-消息断点及 RUN 跟踪》或者读下面这段 几种典型程序Button处理代码的定位 作者:木马帝国   来源: www.mmbest.com   发布时间:2006-1-5 8:58:02   发布人:trojan

    首先
    1 od 下运行程序,F12 暂停;
    2 View菜单中选击Windows项,在打开的窗口中可以从Title栏看到目标按钮,从而找到它的Handle(xxxxxxxx) ;

    对不同平台生成的程序,分别处理:

    一、VB, Delphi, CBuilder 程序:
    3 在CallWindowProcA入口下条件断点: [esp+8]==xxxxxxxx && [esp+0c]==202;直接在olldbg窗口下面的命令行,bp CallWindowProcA  [esp+8]==xxxxxxxx && [esp+0c]==202
    4 F9继续程序,点击目标按钮,程序中断;
    5 Alt+M 打开内存区,在代码段(.text)上下访问断点;
    6 F9执行程序,程序中断,
    1). VB程序中断在下面代码
    PUSH DWORD PTR DS:[EAX+EBX]              ; yyyyyyy
    上面[EAX+EBX]的值(yyyyyy)就是我们要找的位置。

       2). Delphi, CBuilder 的程序
    程序直接断在我们要找的位置。

    借moon一句,这姑妄称作CallWindowProcA条件断点加上code段内存断点法吧。

    二、VC程序
    又分MFC和Win32两种情况,二者相同之处:
    3 在IsDialogMessageW入口下条件断点: [[esp+8]]==xxxxxxxx && [[esp+8]+4]==202
    4 F9继续程序,点击目标按钮,程序中断;
    5 Alt+M 打开内存区,在代码段上下访问断点;
    6 F9执行程序,程序中断, 注意这里虽然中断在code段,但却不是处理Button点击事件的代码处
    这时:
    对Win32程序,只需要按几下F7,当回到User32.dll领空后再重复一次第 5、6步就可以了;
    而对于MFC程序,我们不得不多次重复这样的操作:单步回到MFC领空,再第 5、6步。好在已经看到大陆啦!

    类比,这就叫IsDialogMessageW条件断点加上code段内存断点法了。

  • 相关阅读:
    条件分支if与else的用法小结
    Pandas的loc,iloc与ix的用法及区别
    决策树参数介绍
    列表,元组,字典三种序列之浅谈
    今日浅谈循环 for与while
    电脑重生
    学而201105期蘑菇班学员成绩单(高级)
    悬赏公告
    学而201005期蘑菇学员成绩单
    学而201011期蘑菇班学员成绩单
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/6604653.html
Copyright © 2011-2022 走看看