查看原文可搜索【极安御信安全研究院】公众号查看原文!
·前言
虽然网上已经有帖子写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函数地址
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...