-
-
[分享]关于制作crackme时,让按钮等控件禁用的方法
-
发表于:
2010-5-28 21:13
8580
-
[分享]关于制作crackme时,让按钮等控件禁用的方法
使按钮无效的三种方法。
我一只小菜鸟,一个二本院校的软件工程专业,说实话,进大学以前根本不知道c语言是哪国的语言,就这样浑浑噩噩的度过了大一,进入大二,也就是09年的十月,无意中对逆向有了浓厚的兴趣,然后就知道了看雪学院,出来看雪,发现里面真是高手云集,发现大牛们讨论的东西我根本就不知道是怎么一回事,然后开始潜水,渐渐的也就荒废了对逆向的学习。
大二寒假,终于有重新拾起了逆向,当时还是看雪的临时用户,那时候最大的愿望就是成为看雪的初级会员,于是我跑到群里去问,如何才能成为初级会员,热狗兄对我说,将自己的学习笔记整理一下,然后发表,就有可能得到邀请码,于是我就这样做了,花了一晚上的时间写了一篇笔记,这样持续了几天,终于10年3月2日,我如愿以偿得到了邀请码,然后我开始混迹在crackme专区,开始逆向各种各样的crackme,很多crackme我是束手无策的,那是的狂热让我自己都感到不可思议,早上开机后开始OD载入crackme,然后开始看算法,整天那张纸在哪里算来算去,每天都这样重复,终于能看懂一些简单的算法了。呵呵,开始尝试自己写crackme,融入自己的算法,这对我来说又是个挑战(虽然是学软件的,但学院的学习氛围几乎没有,整天都在游戏中度过,编程功底很弱,学院里真正搞学问的人太少了),这条路充满了艰辛,但我会坚持下去。很喜欢一句话:既然选择了远方,便只顾风雨兼程。
一些crackme按钮是灰色不可用的,昨天学了一晚上,有了点收获,写了下来,使按钮无效的三种方法,这里以vc为例。
初始化时使按钮禁用,用到了EnableWindow这个函数,这个函数的原型是BOOL EnableWindow(HWND hWnd,BOOL bEnable);这也就是说,要使某个控件不可用,就要获得这个控件的句柄。第一种方法是使用成员变量的方法,首先在要禁用的控件(设控件名为注册)上右击选择add variable,选择类型及变量的名字(这里设变量的名字为m_OkButton),这样这个变量就与这个控件联系在一起了,然后在你的初始化函数处添加这样的代码,m_OkButton.EnableWindow(FALSE);这样的话,注册按钮就禁用了。
第二种方法是获取控件的指针(也就是获取窗口的句柄),首先通过调用cwnd*GetDlgItem(int nID)获取窗口的句柄,这里假设控件的句柄为IDC_OK,当GetDlgItem(IDC_OK)时,我们就获得了指向这个控件的指针,然后通过这样的代码 GetDlgItem(IDC_OK)->EnableWindow(FALSE);就实现了控件的禁用了。这个方法适合于想禁用的空间比较多的情况。
第三种方法是封装成员函数的方法,就是在类中自己写一个成员函数调用EnableWindow()。首先在头文件中声明一下成员函数BOOL EnableWindow(UINT uID,BOOL bEnable=TRUE),然后再在cpp文件中实现函数的功能,添加下列代码
BOOL EnableWindow(UINT uID, BOOL bEnable)
{
return GetDlgItem(uID)->EnableWindow(bEnable);
}
然后就可以在功能函数区调用这个函数去实现控件禁用的效果了,比如说控件名为注册,ID为IDC_OkButton,则EnableWindow(IDC_OkButton,FALSE);就能实现这个功能了,这样的话实现多个控件的禁用就会方便很多了。
我是个菜鸟希望能够得到大家的指点,逆向是个力气活,也是个技术活。我现在正在尝试自己写一些crackme,然后自己调试,分析算法,希望这样能够对逆向有所帮助,在论坛上看到过一些crackme,加了一些很复杂的东西,这个我还不会,但我会继续努力的,呵呵,废话不多说,抓紧时间学习吧,时光匆匆,大学生活不知不觉已经过了一半了。
ps:如有错误请大家指正,欢迎大家拍砖,谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课