小甲鱼OD学习第18讲

这次我们的任务是破解这个需要注册的软件,如下图所示,如果没有注册,关闭软件的时候他会弹出一个对话框提示注册

 

这次我们不从字符串入手而从对话框入手,我们把程序放进查看资源的软件,观察对话框资源,如下图所示,我们发现了关闭窗口弹出提示对话框的资源

 

对话框的句柄为十进制的103,在这里得查查关于对话框的知识点

创建模态对话框是由调用DialogBoxParam 函数实现的,而创建非模态对话框是调用CreateDialogParam函数实现。
它们的原型分别是:
HWND DialogBoxParam (HINSTANCE hlnstance, LPCTSTR IpTemplateName, HWND hWndParent, DLGPROC IPDialogFunc, LPARAM dwlnitParam);
HWND CreateDialogParam (HINSTANCE hlnstancem, LPCTSTR IpTemplateName, HWND hWndParent, DLGPROCIpDialogFunc,  LPARAM dwlniParam);

于是我们可以知道通过查找push 0x67,0x67也就是十六进制的103,去查找这个对话框,如下图所示

 

如下图所示,找到了这条命令

 

在这整个函数下断点,如下图所示,然后我们重新运行程序,

 

 

单步调试一步步下来,我们注意观察右下角的堆栈,如下图所示,因为我们要从那里寻找出调用这个函数的代码,从而看看是否能找出判断注册的代码,我们 右击,然后点击 反汇编窗口中跟随

 

于是我们来到了调用这个函数的代码处,观察代码,我们发现了004023B1  JNZ SHORT Urlegal.004023F6,于是我们初步判断004023AA 地址处的代码是判断注册的代码,我们下断点,如下图所示

 

 

再次运行程序,程序在004023AA处断下,进入程序内部,修改eax的值,这样就能够跳过注册提示的窗口,观察如下图所示的代码,发现了赋值给eax的语句

 

 

我们把语句修改成mov eax,1,如下图所示

 

 

然后用所有修改保存,运行程序,发现已经破解成功!如下图所示

 

 

posted on 2018-02-22 12:08  孙悟空son_ku_kong  阅读(156)  评论(0编辑  收藏  举报

导航