查看原文可搜索【极安御信安全研究院】公众号查看原文!
·前言
虽然网上已经有帖子写160个CrackMe,我个人还是以正向的思路来逆向一部分的crackme,还有一些 代码还原的小技巧,挑选出这160个CrackMe中由c,c++,汇编编写的程序来来写。vb,delphi现在用 的少些了就不拿来写了。
·思路分析
先判断该程序是啥语言写的用工具查看一下
是vc6的mfc编写的现在先运行下程序 寻
找按钮Check的按钮事件 该程序是mfc编写的,我自己写个例子,来找按钮事件 vs2019创建mfc工程后增加个按钮事件
双击Button1 写一个弹出对话框的代码
mfc是怎么知道这个按钮事件的呢,实际是通过映射消息,代码为
这些都是宏定义,按下F12进去看
·把这些宏代码展开为
· __pragma和#pragma之间有什么区别
·去掉不要的宏定义与代码
现在替换ON_BN_CLICKED宏
·替换后的代码
·OnBnClickedButton1地址写在了_messageEntries数组这个结构体中,现在看看这个结构体定义
·那我的按钮事件就为
·用x64dbg打开该程序,内存搜索
·一定要用鼠标左键点击 开始的00280000地址,这样搜索就会从00280000开始查找,如果你从00c94000开始的话,00280000至00c94000这段内存就不会搜索 了
跟过去看看
00CA07FB就是OnBnClickedButton1函数地址