用vc++穷举windows应用程序密码(上)
2009-04-09 20:04:20 来源:WEB开发网我们可以通过编程,利用Windows API 函数EnumWindows 和EnumChildWindows对当前运行的所有程序的所有窗口(包括子窗口即控件)进行遍历,通过窗口标题查找密码输入和出错确认重新输入窗口,通过按钮标题查找我们应该单击的按钮,通过ES_PASSWORD 查找我们需要键入的密码窗口。
我们可以通过向密码输入窗口发送WM_SETTEXT消息模拟输入密码,通过向按钮窗口发送WM_COMMAND消息模拟单击。所有这一切我们可以把它放在一个线程内运行,我们用户可以随时暂停、随时中断退出。我们可以在枚举密码的过程中,把密码保存在一个文件中,以便下次接着下一个序列的密码再次穷举。直到找到密码为止。找到密码后,由于不再出现密码输入窗口,程序虽然仍在继续枚举窗口,但由于找不到对应窗口,不会发送任何消息。我们打开记录文件推算前一个序列的密码即可找到对应的密码。
枚举密码的方法有多种,这跟密码的组成有关,如果你忘记了你的wps 2000 的文件密码,而且你确切知道密码由数字组成,你就可以采用数字穷举,当然程序还提供了其它穷举方法,包括大写字母、小写字母、大小写混合、字母数字、标点符号字母数字组合等等。每一种穷举方法都有进度记录保存,下次穷举不用从头开始,字符个数从一位到多位自动增长。你可以通过编辑配置文件setup.ini控制穷举进度,尤其是当你知道密码的某一位确切为某一个字符时,或者确切知道密码有几位时,通过修改当前密码(退出程序情况下),可以大大加快穷举速度,以便短时间内找回那根遗忘的神经,唤醒那存储密码的神经元细胞。
三、具体细节:
◆进程和线程
Windows应用程序有一个或多个进程组成。所谓进程,用最简单的术语说就是装入内存并准备运行的可执行的程序。进程是资源分配的独立单位。进程具有动态、并发、独立等特点。进程具有就绪、执行、堵塞三种基本状态,win 32中的每个进程都有自己的私有虚拟地址空间,进程有代码、数据和进程中的线程可用的其他系统资源组成,每个进程都由单线程开始,并可创建新的线程和其他进程。
更多精彩
赞助商链接