使用IDA定位基于MFC的CrackMe的按钮函数-----实践篇(二)

    接下来我将介绍另外两种方法来定位消息映射表

搜索控件ID

     如果控件的资源ID比较特殊,那么我们可以通过直接搜索立即数的方式来定位,什么叫比较特殊的资源ID呢,就是搜索后不会出现一大片的.rdata的数据~

     第一步依然是使用Resource Hacker找到对应按钮的资源ID

    然后将程序载入IDA,然后搜索立即数1000

    我们要找到.rdata中指令为数据,并且数值是1000(十六进制为0x3E8)的地址,注意这边只会显示一个字节db,所以是0x3E8的E8,双击跟进是不是一下子就到了消息映射表了?只要把当前的消息映射表用上一篇的方法转换下,很快就能定位到对应的按钮处理函数了~

找虚表

    怎么找类的虚表呢?很简单,随便找个虚函数,查看交叉引用就好了,由于所有的消息映射表只是整个程序的消息映射图的一个子节点,我们找到一个消息映射图,通过上一节找子类消息映射图的方法就能找到其他的消息映射表。

    我一般都是选择DoModel函数,因为这个函数离我们的消息映射表比较近,而且这个函数比较好找,在函数窗口找到DoModel函数,不是CDialog类的也无所谓,然后单击这个函数的交叉引用,就可以跳转到类的虚表了

    然后往下翻动,就能找到消息映射表结构了,然后通过交叉引用先找到CDialog类的消息映射表(消息映射表前面有些虚函数或者类名会提示这里应该是什么类的消息映射表的),然后再通过交叉引用找到子类的消息映射表。注意这边需要往下翻很久,前面虽然也有像消息映射的结构,但是你会发现有很多类名,所以这个是RTTI结构,并不是消息映射表。

   找到消息映射表,我们不仅可以知道按钮对应的处理函数,我们还可以知道CrackMe作者有没有处理其他的特殊消息~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值