本帖最后由 我用了公式 于 2023-3-6 12:57 编辑
脱壳+破验证+心跳 过程请看上一篇 上次程序逆向完成之后,程序界面有个按钮,点击按钮之后会打开对话框展示广告,比较烦人,这次就研究如何把这个按钮给Ban掉,做个简单记录。
要阻止这个对话框广告,可以有两个思路: 1、 找到获取广告的请求地址,换成百度或者其他页面;
2、 找到按钮事件,禁止触发;
由于前一篇帖子写过获取过类似改IP地址的内容,自己又想 学习点新知识,就选择了第二种方法,找到按钮事件的CALL,ban掉它!
程序是MFC程序,搜索MFC 按钮等关键词,找到相关资料进行学习研究。
内容参考:快速定位MFC程序事件的回调函数地址
以下内容根据原作者的内容整理:
原作者通过分析,在没有刻意改动的情况下,MFC编译后的数据一定会存在这样几种组合:
12 01 00 00 00 00 00 00 00 00 00 00 00 0000 00 1f 00 00 00 xx xx xx xx --映射表起始地址
0f 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 13 00 00 00 xx xx xx xx
37 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 29 00 00 00 xx xx xx xx
因此只需要在OD内存区段搜索三条中的一条就能找到所以消息事件函数的地址。
对于按钮事件 == > 更快的内存搜索方法
对于按钮的单击事件, 我们只要知道按钮的资源ID就可以快速搜索到其按钮事件的地址。
根据AFX_MSGMAP_ENTRY的结构计算前20个字节。
nMessage=0x0111,nCode=0,nID=按钮ID,nLastID=按钮ID,nSig=58,
可以得到:
11010000 00000000 IDIDIDIDIDIDIDID 3a000000
以下内容是我自己的尝试:
因此我们尝试去OD里面找按钮的ID
将程序载入OD后,让程序正常运行起来,点击 查看==>窗口,找到对应的按钮,就能看到按钮ID
本程序按钮ID是0x044C,因此应当搜索:
11 01 00 00 00 00 00 00 4C 04 00 00 4C 0400 00 3a 00 00 00
转到内存映射窗口alt+m 或者OD菜单栏,点击M
找到程序的起始段
按ctrl+b 进行搜索上面的字节内容
下图箭头指向部分就是我们刚才搜索的字节内容,而后面的D0 69 B3 00 就是对应的函数地址了,即0xB369D0
回到汇编CPU窗口,按下ctrl+g 转到这个地址
直接跳转到了这个对应的函数头,我这里不希望他生效,因此直接在头部ret掉,再保存就OK了。
|