当前位置:文档之家› 密码破解编程方法

密码破解编程方法

对于一些没有对密码输入次数进行限制的程序,可以通过简单的重复尝试密码来进行暴力破解。更加优秀的方法是对其密码算法进行破解,当然这个方法的难度比较大。我在这里介绍的就是一种暴力破解的方法,实现也比较简单,为大家提供一些帮助。

这种破解方式一般有三个步骤:输入新密码、点击确定按钮和检测是否密码正确。

1)输入密码

查找密码校验的对话框,通过系统的FindWindow方法查找对应的窗口。

FindWindow("TForm4",NULL);

该API的第一个参数是需要查找的对话框的类名,第二个参数是对话框的标题。如果第二个参数为空,该API不对标题进行匹配。

然后通过GetWindow方法获取到密码的输入框。

GetWindow(MyHandle,GW_CHILD);

该API的第一个参数是原始窗口的句柄,第二个参数为需要找的窗口与原始窗口的关系,其值包括GW_CHILD,GW_HWNDFIRST,GW_HWNDLAST,GW_HWNDNEXT,GW_HWNDPREV,GW_OWNER 等。

最后我们就可以对该密码的输入框进行操作,可以通过向该句柄发送事件,输入新的密码和清除密码。

SendMessage(MyHandle1,WM_CHAR,0x8,0); //输入回退键,清楚密码字符

SendMessage(MyHandle1,WM_CHAR,’a’,0) ;//输入密码字符

通过循环调用SendMessage可以输入需要的字符串。

2)点击按钮

获取按钮的句柄的方法和获取密码输入框的方法相同。获取按钮的句柄后,我们需要重新定位鼠标,然后发送鼠标点击事件到该按钮

定位鼠标的API是SetCursorPos,它的两个参数就是你需要定位的鼠标的位置。

SetCursorPos(x,y);

当然这个位置是整个屏幕的位置,可以通过ClientToScreen把窗口的相对坐标转换为屏幕的坐标。

ClientToScreen(MyHandle,&aa);

第一个参数为窗口的句柄,第二个参数为LPPOINT类型的坐标,处理结果在该LPPOINT中返回。

然后发送点击按钮事件,点击按钮事件由两个事件组成。

SendMessage(MyHandle,WM_LBUTTONDOWN,MK_LBUTTON,param);

SendMessage(MyHandle,WM_LBUTTONUP,0,param);

其中param是鼠标的X和Y坐标的值。

param=(x<<16)+y;

3)检测结果

由于各个程序对密码正确的处理方式各不相同,大家可以根据事件情况来进行密码的正确性校验。

当然前面介绍的这些技巧我们也可以用来完成其他功能的程序,比如一个鼠标自动点击程序、文本自动输入等。

注:对于窗口的类名、相关信息和各个窗口间的关系,我们可以通过VC带的SPY++的工具方便的进行查看。

相关主题
文本预览
相关文档 最新文档