小小黑客从鼠标钩子开始,密码看看看

引论

什么是黑客,不同于骇客黑客一词来源于“Hacker”,意思是劈,斩,对于黑客来说学会入侵和破解是提升自己和学习的过程,最重要的是编程能力,因为依赖大多数工具是体现不出自己水平的,所以这样说来很多安全软件公司的程序猿本身就是高明的黑客。
但是,骇客就不是这样了,骇客本身不需要学习如此多的语言,他们追求的是入侵的快感,盗取人家的私密,看现在网上大量艳照的流出,基本都是骇客干的好事,他们不一定会编程,也不一定有高深的技术,也不知道入侵具体细节,就是利用现有的工具来达到他们的目的,骇客的入门门槛很低,所以社会上出现了越来越多的骇客,给社会造成巨大的损失。
而对于黑客来说,黑客是有原则的我们看下黑客守则:
1. 不恶意破坏任何的系统, 这样作只会给你带来麻烦。恶意破坏它人的软件将黑客守则
黑客守则
导致法律责任, 如果你只是使用电脑, 那仅为非法使用。 注意:千万不要破坏别人的文件或数据。

  1. 不修改任何系统文件, 如果你是为了要进入系统而修改它, 请在达到目的后将它还原;如果为了隐藏自己的侵入而作的修改, 仍须维持原来系统的安全性, 不得因得到系统的控制权而破坏原有的安全性。

  2. 不要轻易的将你要 Hack 的站点告诉你不信任的朋友。

  3. 不要在 bbs/论坛上谈论关于你 Hack 的任何事情。

  4. 在 Post 文章的时候不要使用真名。

  5. 入侵期间, 不要随意离开你的电脑。

  6. 不要入侵或攻击电信/政府机关的主机。

  7. 不在电话中谈论关于你 Hack 的任何事情。

  8. 将你的笔记放在安全的地方。

  9. 已侵入电脑中的帐号不得删除或修改。
  10. 不将你已破解的帐号分享与你的朋友
  11. 不会编程的黑客不是好黑客,读遍所有有关系统安全或系统漏洞的文件。

话就说到这里现在开始学习我们的鼠标钩子:首先大家准备好VS2008,2010,VS2012,新建一个空的–windows应用程序–win32项目–项目名称Spy,意思是间谍。为该项目添加一个对话框资源,对着新建项目点击鼠标右键–添加–资源–Dialog,然后拖拉控件,做成如下UI:
用户界面
然后开始对每个控件ID进行修改,修改ID是为了之后代码更好调用。
我们目前5个控件:
1.Dialog ID:IDD_DIALOG
2.Static Text ID:IDC_STATIC
3.Edit Control ID:IDC_EDIT
4.Button ID:IDCOK
5.Button ID:IDCCANCEL
修改ID值需要右键控件,属性–修改ID

接下来是进入代码部分了右键项目创建一个cpp文件,文件名为“PswSpy”意思是 password spy 键盘监听器。代码如下:

#include "resource.h"
#include <Windows.h>
#include<iostream>
using namespace std;

//全局钩子句柄
HHOOK hHook=NULL;

/////////////////////////////
//函数声明部分
/////////////////////////////
//鼠标钩子过程
LRESULT CALLBACK HookProc(int code,WPARAM wparam,LPARAM lparam);
//窗口过程
int CALLBACK DlgProc(HWND hDlg,UINT uMmsg,WPARAM wParam,LPARAM lParam );


//主函数
int   APIENTRY  WinMain(__in HINSTANCE hInstance,__in_opt HINSTANCE hPrevIntance,__in_opt LPSTR  lpCmdLine,__in int nShowCmd){

    return
        DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG),NULL,DlgProc);//绑定ID,方法,类似于安卓findviewByID
    //根据对话框模板资源创建一个模态对话框

}
//窗口过程处理函数,处理消息事件
/*
HWND  待接收消息的窗口句柄
UINT  指定被发送的消息
WPARAM指定附加的消息参数
LPARAM指定附加的消息参数


*/
int CALLBACK DlgProc(HWND hDlg,UINT uMmsg,WPARAM wParam,LPARAM lParam )//这里wParam低16位表示控件ID号,高16位表示消息通知码
{
    switch (uMmsg)
    {//控件给父窗口发送通知
    case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
            case IDCCANCEL:
                {
                    UnhookWindowsHookEx(hHook);
                    EndDialog(hDlg,wParam);//关闭窗口,hDLG表示要清除的窗口句柄
                }
                break;
            case IDCOK:
                {    //调用鼠标钩子过程函数

                    hHook=SetWindowsHookEx(WH_JOURNALRECORD,HookProc,GetModuleHandle(NULL),0);
                }
                break;
            }
        }
        break;
    case WM_CLOSE:
        {
        EndDialog(hDlg,0);
          }
        break;
    }
    return 0;

}
//调用鼠标钩子函数
LRESULT CALLBACK HookProc(int code,WPARAM wparam,LPARAM lparam){
    HWND hwnd;
    POINT point;
    //获得鼠标位置
    GetCursorPos(&point);
    //得到鼠标的窗口句柄;
    hwnd=WindowFromPoint(point);
    //得到窗口风格
    long nStyle=GetWindowLong(hwnd,GWL_STYLE);
    EVENTMSG * event=(EVENTMSG * )lparam;
    //是否为密码左键
    if(event->message==WM_LBUTTONDOWN){
       //判断是否为密码框
        if(nStyle&ES_PASSWORD){
            PostMessage(hwnd,EM_SETPASSWORDCHAR,0,0);
        }

    }


    return CallNextHookEx(hHook,code,wparam,lparam);

}

我们来测试一下效果,ctrl+F5组合键运行代码:
在对话框输入密码:
这里写图片描述

鼠标点击查看后将鼠标移到密码框点击鼠标左键,发现密码显示出来了
这里写图片描述

这个过程可能杀毒软件,360会提示你键盘被监控了,这里一个小小的星号密码查看器级别还是较低,刚刚浮出水面就被发现了,我们再随意找几个自己编的软件试试,发现成功破译了,但是当我打开QQ或者是较为熟知的软件,我的鼠标钩子就不起作用了,原因是人家的软件早就防你这手啦,那么做到这里相信大家对鼠标钩子是什么感到好奇吧。
Windows将Edit Control的Password属性设为true来提高用户输入密码安全性,但是这种窗口密码并不安全,在windows2000以前,可以向远程进程密码编辑框发送WM_GWTTEXT来获取密码,于是windows学聪明了,之后的版本已经不允许跨进程密码读取了,但是高端的方法又出来了,黑客可以讲代码注入到远程进程的方法来获取密码。

然而我们的密码查看器就比较简单了,主要就是通过改变远程窗口密码编辑框password属性直接显示密码
流程:
当前进程通过响应WM_MOUSEMOVE获取鼠标指针位置,根据坐标获取窗口句柄,得到窗口名称和风格,判断是不是密码框,然后发送PostMessage(hwnd,EM_SETPASSWORDCHAR,0,0);,取消密码框password属性,这样密码就以明文方式显示出来了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值