干掉易语言时钟【另类方法】
本帖最后由 风动鸣 于 2015-11-13 15:33 编辑大家好!我是风动鸣{:5_121:}第一次发教程,请大家多多指教 多多包涵{:6_209:}
OD调试带有时钟的易语言程序时
要干掉时钟 我知道的有四种方法 (新增一种方法 请看后面){:6_210:}
1,使用工具 附上工具 恒大工具包地址:https://www.52hb.com/thread-1957-1-1.html
移除所有定时器
2,在 事件call 下条件断点
F9运行起来后 看图:
值得注意的是:如果程序不只一个时钟呢 那么要怎么写条件断点呢
举个相反的例子 在事件call 下条件断点 只让时钟函数断下来要做到这个效果 我先把两时钟都停下来 按界面的两个停止按钮即可
好了 以上两个方法 都是 恒大 教的 之前我根本就不懂的3,使用APIKillTimer 【干掉时钟】 (这个才是我真正要介绍的)它有两个参数 具体看图
要调用 KillTimer 函数 {:5_122:}首先要知道它的函数地址 看上图: 地址为 77D18C42两个参数:TimerID的值是固定的 0x3E8 【就是十进制的1000】那么时钟的句柄怎么找呢 看下图
函数地址:77D18C42两个时钟句柄:000F02A2和 0011028ATimerID : 0x3E8接下来就是使用KillTimer 函数了 还是看图吧{:5_121:}
004010D0/.55 push ebp004010D1|.8BEC mov ebp,esp004010D3|.68 E8030000 push 0x3E8004010D8|.68 A2020F00 push 0xF02A2004010DD|.E8 607B9177 call 77D18C42004010E2|.8BE5 mov esp,ebp004010E4|.5D pop ebp004010E5\.C3 retn禁用 事件call断点 F9 看效果
可能会有两种情况出现{:5_118:}a,你修改的时钟函数 写入的时钟句柄刚好是本时钟的句柄 那么停止后可能有问题 时钟自己停止自己b,你修改的时钟函数 写入的时钟句柄 是 另一个时钟的句柄 意思是这个时钟 停止另一个时钟总结:虽然调用API KillTimer 来干掉时钟 很麻烦 但是是一个不错的思路 {:5_117:}大家可以试试 使用 SetTimer 来改变时钟周期
4,作废SetTimer (开启时钟用的)还是直接上图{:6_206:}
作废SetTimer 来干掉时钟是最省事的 大家学到了没?{:5_124:}最后, 思路不只是针对这个程序 所以的程序都可能适用 恒大 说过 要灵活点 要懂得举一反三!!!{:5_116:}
附上恒大的免费公开教程 https://www.52hb.com/thread-13269-1-1.html
不知道以上有没有营养 谢谢观看。{:5_123:}
觉得对你有帮助,记得加“热心”哦!{:6_215:}
免币下载地址:**** Hidden Message *****
附上程序和源码:
第一次坐自己的 沙发{:5_116:} {:5_117:}板凳中,给个顶楼主
大半夜的不容易啊。支持下{:6_201:} 学习了,这个讲义很好!赞一个! 楼主第二种和第三种方法看图片没看懂 楼主讲的很好,很详细。 能断下来才是硬道理,哈哈
好 这个好 学习下干掉时钟 我想要那个工具 哪里有下载 分享下