详解VB6按钮事件,摆脱特征码
微机课,学校里的机器有Visual Studio 6.0全套,不玩点什么真真是有负机房之造化。没事来仔细研究一下VB6的按钮事件。
我这篇文章一半是在学校微机课写的,一半是在家里写的。两个系统装的VB6运行库版本不一样,所以分发代码的地址也不一样。我以家里的版本号较高的版本完成后面写的一个VB6事件监控程序。
编译出来,打开OD调试之。
按工具栏上面的W,在按钮上面下消息断点。
按确定,切换到程序,点击按钮,成功中断在此处。
我们在头部写下断点,按F9运行。
等Windows处理这个左键消息后,发回WM_COMMAND消息。也就是看堆栈窗口,我选中的那一项,出现111。
现在我们在VB6的运行库里面,找到程序的代码段下一个访问断点试试看(删除之前写入的F2断点)。
F9运行起来,中断在这里。
我们来到它访问的地址看看。
按Ctrl+G,输入
熟悉的跳转地址,我们跟踪这个JMP。
这里就是事件地址了,我们记录下
6605218C|.FF3418 |push dword ptr ;!!!!!
这里应该就是所有事件执行的经过了,记录一下RVA地址。
基址是0x66000000,RVA是0x5218C。以后调试的时候,只要转到这个基址加RVA的VA地址下断点就可以监控所有事件了。
值得注意的是
6605218C|.FF3418 |push dword ptr ;!!!!!
我发现,很多时候都会经过这里,判断是否为需要事件的方法就是,看看dword ptr的值是否为0。
如果在OD里面调试,加条件断点dword ptr!=0就可以了。
我写代码的思路是这样的。
------------------------------分割线------------------------------此乃上半段------------------------------
现在,家里电脑上装的VB6运行库,MSVBVM6.0的版本是6.00.9802,比学校的版本号要高,而且那句push指令(分发代码)的RVA地址不同。后半段的地址是0x51EBC!!!!!!
**** Hidden Message ***** 感谢楼主分享 没看懂上面的,回复一下看看下面的
一点都看不懂,但是我就是喜爱楼主的作品,如此的闪闪发光,照亮了我人生的道路{:6_205:} 看一下下半段的内容 虽然很详细,但还是不太懂,基础太差 看一下下半段的内容 感谢分享{:5_117:} 分享精神,是最值得尊敬的 写得很详细,膜拜