使用IDA对MFC寻找按钮处理事件

由于我练习的都是MFC程序,在寻找按钮事件的时候,费了老鼻子劲了,当初说的,根据DispatchMessage,TranslateMessage,下条件断点神马的,笔者,试了又试,在里面消

息转了又转,就是出不来,放下了一段时间,但是不甘心,最后找到了一篇很好的文章点击打开链接,让我有了很好的启发,对于自己做的小程序而言,已经足够了,现在说下,

我自己写的这篇水平实在有些哇,高手不要见笑啊,好了不说废话了,现在开始,

我的MFC界面如下


现在需要做下说明,确定和取消是由向导自动生成的,所以在GetMessageMap中是不会有的,现在我们要找的是Check按钮事件,现在IDA已经能够识别GetMessageMap函数

了,所以看下具有GetMessageMap函数

会看到,如下

.text:00401560 ; AFX_MSGMAP *__thiscall CTMPDlg__GetMessageMap(CTMPDlg *this)
.text:00401560 protected: virtual struct AFX_MSGMAP const * __thiscall CTMPDlg::GetMessageMap(void)const proc near
.text:00401560                                         ; DATA XREF: .rdata:00403A24o
.text:00401560 this = ecx
.text:00401560                 mov     eax, offset off_4039D0
.text:00401565                 retn
.text:00401565 protected: virtual struct AFX_MSGMAP const * __thiscall CTMPDlg::GetMessageMap(void)const endp	

所以GetMessageMap的处理函数,是在偏移量是 offset off_4039D0中,只需要轻轻点击一下,便能进入MessageMap下的函数


rdata:004039D0 off_4039D0      dd offset CDialogEx::GetThisMessageMap(void)
.rdata:004039D0                                         ; DATA XREF: CTMPDlg::GetMessageMap(void)o
.rdata:004039D4                 dd offset unk_403940
.rdata:004039D8 aDsada:                                 ; DATA XREF: CTMPDlg::OnBnClickedButton1(void)+54o
.rdata:004039D8                 unicode 0, 
  
  
   
   ,0
.rdata:004039E4 ; const wchar_t Text
.rdata:004039E4 Text            db '搹eQ',9,'g飲',0     ; DATA XREF: CTMPDlg::OnBnClickedButton1(void)+69o
.rdata:004039ED                 align 10h
.rdata:004039F0                 dd offset const CTMPDlg::`RTTI Complete Object Locator'

  
  

然后再点击下unk_403940,就看到下面的各个函数列表了,唉,我越来越觉得,真是鸡肋啊...

.text:006BEEEE protected: virtual struct AFX_MSGMAP const * __thiscall CCoolCheckRadio::GetMessageMap(void)const proc near
.text:006BEEEE                                         ; DATA XREF: .rdata:007305CCo
.text:006BEEEE                 jmp     ds:CCoolCheckRadio::GetMessageMap(void)
.text:006BEEEE protected: virtual struct AFX_MSGMAP const * __thiscall CCoolCheckRadio::GetMessageMap(void)const endp

对于这样的我想,应该是在某一个dll文件中了怎么继续寻找,还希望哪位路过的大神告知一下,下一步的学习,嗯,就到这儿了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值