• 5种语言的按钮事件 断点


    转载:https://blog.csdn.net/super_mimi/article/details/39834329

    调试软件,最重要的就是下断点,那么如何下断点,就是一门重要的技巧.
    比如:弹提示框,就下MessageBoxA,注册表的,就下RegOpenKeyA等等.
    当然,能直接下到按钮事件,当然更为方便,因为到了按钮事件后,很快就会到达核心代码,离你的破解也就不远了.
    本文就总结一下各类语言找按钮事件的方法,当然也可以借助工具,如VBexplorer,DEDE,ECE等等.


    一、VB程序
    其实,VB的按钮事件的找法是最为普遍的,也就是大家所谓的万能断点.其实也不仅仅是针对按钮事件,还有很多其他的用处,如取消NAG,启动框,灰色按钮或隐藏按钮,启动时的timer事件等等,具体的就自己去总结吧,这里只演示按钮事件!


    OD载入后,CTRL+B,816C24


    确定后,


    然后,就在下面的JMP处F2下断,下完后CTRL+L,如果还有,就继续下断点.


    下完断点后,运行程序,点击相应的按钮,OD就会断下来了


    下面的任务就是考验大家的耐心,F8跟踪吧,不再赘述了.


    当然,为了方便大家,可以写个简单的脚本,免的每次都去手动设置了,节省时间: 
    复制内容到剪贴板 
    代码:
    var Addr
    mov Addr,401000
    loop:
    find Addr,# 816C2404??000000#
    cmp $RESULT,0
    je Exit
    add $RESULT,08
    bp $RESULT
    add $RESULT,1
    mov Addr,$RESULT
    jmp loop
    Exit:
    eval "按钮事件查找完毕!"
    msg $RESULT
    ret
    二、Delphi和BC++程序


    Delphi和BC++都是同一公司开发的,故查找方法都一样,当然你也可以使用DEDE.


    OD载入后,CTRL+G,转到00401000处
    然后就CTRL+B,查找特征码 740E8BD38B83????????FF93????????


    然后就会找到下面的地方:


    然后就在下面的CALL处下断吧.


    下面的工作就是不断的CTRL+L继续查找和F2下断了.


    运行下看看效果吧:


    看,断下了吧,下面就F7跟进这个CALL吧,就来到这个按钮事件处了.


    同样写个脚本,方便大家操作: 
    复制内容到剪贴板 
    代码:
    var Addr
    mov Addr,401000
    loop:
    find Addr,#740E8BD38B83????????FF93????????#
    cmp $RESULT,0
    je Exit
    add $RESULT,0A
    bp $RESULT
    add $RESULT,1
    mov Addr,$RESULT
    jmp loop
    Exit:
    ret
    三、易语言
    易语言的这种查找方法,同样适合有壳的程序,其他的就必须脱壳后再继续操作了.


    OD载入后,就F9运行程序吧,当程序运行后,ALT+E
    选中易语言的 核心库krnln,双击进去

    然后CTRL+B,查找 FF 55 FC


    查找到的这个CALL就是了,F2下断吧


    现在输入必须的内容后,单击对应的按钮吧


    看,断下了吧,下面就F7跟进吧,就来到按钮事件处了


    同样,写个脚本,方便大家 

    gpa"GetProcessHeap","kernel32.dll"
    cmp $RESULT,0
    je err
    bp $RESULT
    run
    run
    run
    bc $RESULT
    rtu
    find 10001000,#FF55FC5F5E895D??8945#
    bp $RESULT


    find eip,#FFE0#
    cmp$RESULT,0
    je err
    bp $RESULT
    run
    bc $RESULT
    sto
    MSG "按钮事件查找完毕!"
    ret
    err:
    MSG "脚本运行错误!请检查错误后再继续运行脚本!"
    ret
    四、VC++程序(非MFC程序)


    OD载入后,单击鼠标右键,选择"查找",然后是"所有命令"
    在弹出的输入框里,写入特征代码" sub eax,0a"


    确定后,就来到下面的窗口


    在下面的sub eax,0A处,双击进去吧:


    来找这里后,在下面的je处跟随过去


    跟随来到的这个CALL,就是了,F2下断吧


    然后断下后,F7跟进,F8几次,就来到按钮事件了.


                                                五、MFC类程序


    当然判断MFC和非MFC的程序,靠大家自己去判断了

    OD载入后.ALT+E,来到可执行模块,找MFC的核心DLL:MFC42

    然后就双击进去

    然后就CTRL+F,查找特征代码:sub eax,0a

    同样,找到后,就在下面的je处跟随,跟随后看到的CALL,就是那个关键CALL了!

    断下后F7跟进,F8几次,就会来到按钮事件代码处了!




    方法就简单的介绍到这里了,当然只是抛砖引玉,其他的,还得多靠大家自己慢慢总结吧! 

  • 相关阅读:
    Spark 内核架构+宽依赖与窄依赖+基于Yarn的两种提交模式
    Spark RDD高级编程:基于排序机制的wordcount程序+二次排序+topn
    Spark RDD持久化原理+共享变量原理(Broadcast Variable和Accumulator)
    Spark RDD工作原理详解+RDD JAVA API编程
    Spark 程序设计详解
    剑指offer 39.知识迁移能力 平衡二叉树
    剑指offer 38.知识迁移能力 二叉树的深度
    ElasticSearch 倒排索引原理+document写入流程+数据恢复
    剑指offer 37.知识迁移能力 数字在排序数组中出现的次数
    剑指offer 36.时间空间效率的平衡 两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/jszyx/p/13783328.html
Copyright © 2020-2023  润新知