日期:2014-05-17  浏览次数:20776 次

关于office和winrar的密码破解
如果我想破解office和winrar的密码的话,怎样才能找到试探的入口?谢谢

------解决方案--------------------
记得以前visual studio有个spy++工具可以获得窗口的句柄,下面是网上高手指点的步骤:
[1]FindWindow()取得Office窗口句柄
[2]使用Spy++得到密码输入框ID,登陆按钮ID
[3]调用GetDlgItem()得到密码输入框句柄
[4]::SendMessage(密码输入框句柄, WM_SETTEXT, wparam, lParam);
[5]向窗口发送按钮消息::SendMessage(窗口句柄, WM_COMMAND, MAKEWPARAM(BN_CLICKED, 登陆按钮ID), 0);
[6]判断是否登陆成功,如果失败,得到消息对话框句柄使用
[5]的方法发送消息,激发确定按钮。
------解决方案--------------------
转载:

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

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

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++的工具方便的进行查看。