禁止运行某个程序,以QQ游戏为例------QQ游戏杀手(VC6.0)
来源:互联网 发布:公安部交管局 数据 编辑:程序博客网 时间:2024/04/29 03:44
昨天晚上花了3个小时,写了一个程序 --- QQ游戏杀手~~ 呵呵 有点像病毒~
起因是因为近一段时间女朋友太能玩游戏了~~ 天天晚上占用我的电脑2~3个小时玩QQ游戏,我倒是不反对她玩游戏但是天天玩就不好了吗?所以约法3张,只需周末玩,同样为了防止偷食,呵呵,就开发了这个程序~。事先声明,我对QQ没有恶意哦~
这个小程序因该应该具有的几个功能
1。查找进程
2。杀掉进程
3。隐藏自身
以上需要的资料我都是网上找的,有些地方还没有详细地分析~所以今天坐在这里整理分析~ 提高一下;
1。查找进程,我用的是下面
// 这个函数唯一的参数是你指定的进程名,如:你的目标进程
// 是 "Notepad.exe",返回值是该进程的ID,失败返回0
//
DWORD CQGkillerDlg::FindProcess(char *strProcessName)
...{
DWORD aProcesses[1024], cbNeeded, cbMNeeded;
HMODULE hMods[1024];
HANDLE hProcess;
char szProcessName[MAX_PATH];
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return 0;
for(int i=0; i< (int) (cbNeeded / sizeof(DWORD)); i++)
...{
//_tprintf(_T("%d "), aProcesses[i]);
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);
EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbMNeeded);
GetModuleFileNameEx( hProcess, hMods[0], szProcessName,sizeof(szProcessName));
if(strstr(szProcessName, strProcessName))
...{
//_tprintf(_T("%s;"), szProcessName);
return(aProcesses[i]);
}
//_tprintf(_T(" "));
}
return 0;
}
2。杀掉进程用下面的函数
...{
/**//*
// When the all operation fail this function terminate the "winlogon" Process for force exit the system.
HANDLE hYourTargetProcess = OpenProcess(PROCESS_QUERY_INFORMATION | // Required by Alpha
PROCESS_CREATE_THREAD | // For CreateRemoteThread
PROCESS_VM_OPERATION | // For VirtualAllocEx/VirtualFreeEx
PROCESS_VM_WRITE, // For WriteProcessMemory
FALSE, FindProcess("QQGame.exe"));
*/
HANDLE hYourTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, FindProcess("QQGame.exe"));
if(hYourTargetProcess == NULL)
...{
return;
}
GetDebugPriv();//提高权限(xp/nt)
TerminateProcess(hYourTargetProcess,0);
//ShowWindow(SW_SHOW);
MessageBox("本电脑没有苯苯允许禁止运行QQ游戏-.-","小猪监控---明俊制作",MB_ICONEXCLAMATION|MB_OK); // 发现QQ游戏时提示
//ShowWindow(SW_HIDE);
//SetWindowPos(&CWnd::wndNoTopMost,0,0,100,100,SWP_SHOWWINDOW);
return;
}
杀掉进程,怕权限不够, 用了 GetDebugPriv();//提高权限(xp/nt)
...{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
...{
return FALSE;
}
if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) )
...{
CloseHandle( hToken );
return FALSE;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
...{
CloseHandle( hToken );
return FALSE;
}
return TRUE;
}
在我的电脑上好像又没有都一样,可能自己是以administrator运行的原因~ 其他电脑没有测试过。到这里基本上就可以杀掉QQ游戏进程了(上边的程序编译需要PSAPI.HPSAPI.lib文件在网上搜吧~~)
设定一个定时器,10秒一次监视进程发现QQ游戏进程就关闭它~~呵呵,基本上功能部分就结束了~
但是,我们的程序也要保护自己啊~
所以我就对话框程序进行了小小的改动,app框架初始化的时候dlg.DoModal();改成Create(IDD_QGKILLER_DIALOG);方式,以便用 ShowWindow(SW_HIDE);ShowWindow(SW_SHOW)隐藏和现实程序
当然我是不会让我的程序显示出来的,只是隐藏而已~
CQGkillerDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
*/
//添加的部分
CQGkillerDlg *dlg = new CQGkillerDlg;
m_pMainWnd = dlg;
return dlg->Create(IDD_QGKILLER_DIALOG);
基本到这里就需要的主要代理都在这里了~ 其他的都是基本的东西~慢慢琢磨好了~
我也是一个新的vc++MFC的学习者,之前是VB/DELPHI/VC.net/C#等,呵呵什么都学了一点,但是老是没有进步,这次为了能开发外挂研究了VC++以后才对电脑的知识开始整合起来~这个简单的程序我也找了好多代码,比较后抄袭完成的,但是基本上能使用代码了,但是为什么这么用,呵呵,以后慢慢研究吧~ 有点看不明白~
进程那里顺序是得到进程进程ID ,然后根据进程ID得到进程,然后,关掉进程。涉及查找指定进程,进程关闭,隐藏对话框,时钟控制,弹出对话框等知识点~呵呵
程序的不足点~ 这种方法只能QQ游戏的原型,不能杀掉变形~~如果我把“QQ游戏“改成“QQ 游戏2“ 就没有把法杀掉了~
还有程序的自我保护,没有做到进程的隐藏,防杀
启动也是依靠,启动文件夹,呵呵(对于女朋友9流的电脑使用者呵呵,还是很好用的)
下一个版本,
做到注册表启动,呵呵不知道说得对不对,,隐藏进程,通过Hook监视进程,KIllQQ~~
还有就是防止被一般高手杀掉~~呵呵(1.0版本总结结束)
- 禁止运行某个程序,以QQ游戏为例------QQ游戏杀手(VC6.0)
- 如何禁止qq等程序运行
- 检查手机是否按照某个应用,这里以QQ为例,取QQ的bundID
- QQ游戏基本通信机制(QQ游戏外挂编写)
- QQ游戏破解QQ密码
- qq游戏四团记牌器‖qq游戏四团记牌器
- QQ游戏服务器架构
- qq游戏网络架构
- QQ游戏登录效果
- 白痴QQ游戏
- 封掉QQ游戏
- qq游戏外挂
- 输入法注入QQ游戏
- qq游戏中的bug
- QQ游戏找茬
- QQ游戏服务器架构
- QQ游戏连连看
- QQ游戏连连看
- 算法:如何投资才能获利最大
- 加班加班再加班,下辈子还做人,但是别做程序员。
- 装机记
- JDBC连接数据库经验技巧集萃(转载、绝对的转载)
- 实验三 栈的基本运算
- 禁止运行某个程序,以QQ游戏为例------QQ游戏杀手(VC6.0)
- 看看要实现主动管理技术需要哪些硬件的支持!
- 一个时钟程序'
- UEFI结构
- 鸟哥的 Linux 与 ADSL 私房菜
- EJB的存根和骨架的工作原理
- 成为一名程序员的四个阶段!!!
- UEFI应用程序接口
- UEFI 开放源