禁止运行某个程序,以QQ游戏为例------QQ游戏杀手(VC6.0)

原创 2007年10月15日 23:30:00

昨天晚上花了3个小时,写了一个程序 --- QQ游戏杀手~~ 呵呵 有点像病毒~ 

起因是因为近一段时间女朋友太能玩游戏了~~ 天天晚上占用我的电脑2~3个小时玩QQ游戏,我倒是不反对她玩游戏但是天天玩就不好了吗?所以约法3张,只需周末玩,同样为了防止偷食,呵呵,就开发了这个程序~。事先声明,我对QQ没有恶意哦~

这个小程序因该应该具有的几个功能

1。查找进程

2。杀掉进程

3。隐藏自身

以上需要的资料我都是网上找的,有些地方还没有详细地分析~所以今天坐在这里整理分析~ 提高一下;

1。查找进程,我用的是下面 

// FindProcess
// 这个函数唯一的参数是你指定的进程名,如:你的目标进程
// 是 "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。杀掉进程用下面的函数

VOID CQGkillerDlg::KillProcess()
...{
    
/**//*
    // 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)

BOOL CQGkillerDlg::GetDebugPriv()
...{
    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版本总结结束)

ros 如何禁止qq

qq的服务器很多,我自己收集了300多个
  • zhangxiangzhong
  • zhangxiangzhong
  • 2014年07月13日 21:03
  • 1461

QQ游戏大厅的你画我猜游戏白屏问题解决

QQ游戏大厅的"你画我猜"游戏白屏问题解决
  • grapefruitTea
  • grapefruitTea
  • 2017年03月06日 16:50
  • 1849

如何用VC++6.0编写一个游戏

如何用VC++6.0编写一个游戏大部分同学在大学中学了面向过程的C语言,想迈向面向对象的C++,却不知如何下手。下面教大家如何用传统的VC++6.0零基础编写一个属于自己的游戏程序,过一把写游戏的瘾。...
  • lusongno1
  • lusongno1
  • 2015年12月27日 12:25
  • 3691

C# 开发Windows服务 附简单实例实现禁止QQ运行

  本实例主要实现下面三个基本功能 1、C#开发windows服务 2、禁止QQ等程序运行 3、为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一、C...
  • andyliulin
  • andyliulin
  • 2016年07月25日 21:59
  • 551

从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则

http://blog.itpub.net/17007506/viewspace-616852/  腾讯QQGame游戏同时在线的玩家数量极其庞大,为了方便组织玩家组队游戏,腾讯设置了大量游戏室(房...
  • yaoxiaokui
  • yaoxiaokui
  • 2015年11月01日 09:38
  • 1794

搞定QQ游戏系列驱动保护TesSafe.sys

1.用RKU看一下SSDT和SSDTShadow,发现SSDT并没有被HOOK,SSDTShadow HOOK了5个调用: NtUserBuildHwndList NtUserFindWind...
  • ccx_john
  • ccx_john
  • 2014年01月07日 11:51
  • 1290

曾被拒绝的游戏小程序,为何时隔一年终又上线?

2016年12月28日,“微信之父”张小龙在发布微信小程序后以“十问十答”的形式,阐释了小程序初期发展的标准。在“小程序能不能开发游戏?”一问中,张小龙的回答简单直接:“现在不能。”短短的一句回答扼杀...
  • age12v
  • age12v
  • 2017年12月30日 00:00
  • 513

QQ游戏大厅产品体验报告

一、文档概览和分析目的 体验设备:Windows10 软件名称:QQ游戏大厅 软件版本:2.0版本 支持Windows xp sp3及以上,发布时间:2017-05-24 体验时间:2017年6月1...
  • lasebella
  • lasebella
  • 2017年06月16日 19:03
  • 698

一些常用软件的网络端口协议分类介绍

各种软件网络端口的分类:   即时通讯类:   1、腾讯QQ通讯协议及端口范围   QQ 默认采用UDP 通讯方式,端口8000,8001。如果UDP 的两个端口不通,会自动转...
  • abcd1f2
  • abcd1f2
  • 2015年06月19日 09:56
  • 619

获取窗口句柄

使用FindWindow函数获取窗口句柄 使用EnumWindows和EnumChildWindows函数 使用GetDesktopWindow和GetNextWindow函数得到所有的子窗口使用Fi...
  • XscKernel
  • XscKernel
  • 2016年09月06日 14:36
  • 474
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:禁止运行某个程序,以QQ游戏为例------QQ游戏杀手(VC6.0)
举报原因:
原因补充:

(最多只允许输入30个字)