早些时间看郁金香的教程,写过qq游戏练练看的挂,那时候CE附加QQ游戏大厅的时候貌似是没有任何保护的,昨天舍友让做个斗地主的记牌器,但是,我用CE附加的时候,被检测到了,其实不附加也会被检测,所以猜测可能只是检测窗口进程或是模块名称啥的吧,被检测到的时候主程序会退出,但是那个对话框还在,就是那个SX什么什么的,所以如果是QQgame启动了某个线程来检测非法的话,在主程序退出其他线程对象都释放掉的时候,那个检测的线程对象还是存在的(提示SX非法的对话框别关掉!)。借助pt很容易就找到了这个线程。

未开CE前线程状态:

开了CE被检测到后的线程状态:

然后该怎么办就不用说了吧,干掉这个线程就OK了。

若是嫌麻烦每次都要开pt找线程的话,可以写个结束这个模块内线程的程序

#include "stdafx.h"
#include "windows.h"
#include "TlHelp32.h"
const TCHAR QQ_GAME[] = _T("QQGame.exe");
const TCHAR QQ_THREAD_DLL[] = _T("TenSLX.dll");typedef   enum   _THREADINFOCLASS   { ThreadBasicInformation, ThreadTimes, ThreadPriority, ThreadBasePriority, ThreadAffinityMask, ThreadImpersonationToken, ThreadDescriptorTableEntry, ThreadEnableAlignmentFaultFixup, ThreadEventPair_Reusable, ThreadQuerySetWin32StartAddress, ThreadZeroTlsCell, ThreadPerformanceCount, ThreadAmILastThread, ThreadIdealProcessor, ThreadPriorityBoost, ThreadSetTlsArrayAddress, ThreadIsIoPending, ThreadHideFromDebugger, ThreadBreakOnTermination, MaxThreadInfoClass
}   THREADINFOCLASS;typedef LONG (__stdcall *_pfnZwQueryInformationThread) (IN   HANDLE   ThreadHandle, IN   THREADINFOCLASS   ThreadInformationClass, OUT   PVOID   ThreadInformation, IN   ULONG   ThreadInformationLength, OUT   PULONG   ReturnLength   OPTIONAL );HANDLE m_GameProcessHandle;
//记录QQ_THREAD_DLL信息
BYTE  * m_pmodBaseAddr;
DWORD   m_dwmodBaseSize;
_pfnZwQueryInformationThread m_pfnZwQueryInformationThread;BOOL StartPatch();//PATCHQQ主函数
DWORD EnablePrivilege (LPCTSTR name);//提权函数
BOOL ListProcessModules(DWORD dwPID);//枚举指定进程的模块
BOOL ListProcessThreads( DWORD dwOwnerPID);//枚举指定进程创建的线程,并结束掉QQ保护线程
PVOID ShowThreadInfo(DWORD tid);//获取线程的起始地址int _tmain(int argc, _TCHAR* argv[])
{m_pfnZwQueryInformationThread =(_pfnZwQueryInformationThread)\GetProcAddress   (LoadLibrary(_T("ntdll.dll")),"ZwQueryInformationThread");if (StartPatch()){printf("可以CE附加QQ游戏大厅了\n");}elseprintf("失败!\n");return 0;
}BOOL StartPatch()
{if(0!=EnablePrivilege (SE_DEBUG_NAME))  {return FALSE;  }HANDLE hProcessSnap;PROCESSENTRY32 pe32;hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );if( hProcessSnap == INVALID_HANDLE_VALUE ){return FALSE;}pe32.dwSize = sizeof( PROCESSENTRY32 );if( !Process32First( hProcessSnap, &pe32 ) ){CloseHandle( hProcessSnap );return FALSE;}BOOL bStartGame = FALSE;do{if (_tcscmp(pe32.szExeFile, QQ_GAME) == 0){bStartGame = TRUE;m_GameProcessHandle = OpenProcess(PROCESS_VM_WRITE|PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION,\FALSE, pe32.th32ProcessID);if (m_GameProcessHandle == NULL){return FALSE;}for (int i=0; i<5;i++){if (!ListProcessModules(pe32.th32ProcessID)){return FALSE;}}if (!ListProcessThreads(pe32.th32ProcessID)){return FALSE;}}} while( Process32Next( hProcessSnap, &pe32 ) );if (!bStartGame){MessageBox(NULL,_T("运行QQ大厅后才能使用"),_T("提示"),MB_OK);return FALSE;}CloseHandle( hProcessSnap );return TRUE;
}
DWORD EnablePrivilege (LPCTSTR name)
{  HANDLE hToken;  BOOL rv;  //设置结构   TOKEN_PRIVILEGES priv = { 1, {0, 0, SE_PRIVILEGE_ENABLED} };  // 查找权限值   LookupPrivilegeValue (  0,  name,  &priv.Privileges[0].Luid  );  // 打开本进程Token   OpenProcessToken(  GetCurrentProcess (),  TOKEN_ADJUST_PRIVILEGES,  &hToken  );  // 提权   AdjustTokenPrivileges (  hToken,  FALSE,  &priv,  sizeof priv,  0,  0  );  // 返回值,错误信息,如果操作成功,则应为ERROR_SUCCESS,为O   rv = GetLastError();  // 关闭Token   CloseHandle (hToken);  return rv;
}
BOOL ListProcessModules(DWORD dwPID)
{HANDLE hModuleSnap = INVALID_HANDLE_VALUE;MODULEENTRY32 me32;hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );if( hModuleSnap == INVALID_HANDLE_VALUE ){return( FALSE );}me32.dwSize = sizeof( MODULEENTRY32 );if( !Module32First( hModuleSnap, &me32 ) ){CloseHandle( hModuleSnap );return( FALSE );}do{if (_tcscmp(me32.szModule, QQ_THREAD_DLL) == 0){m_pmodBaseAddr = me32.modBaseAddr;m_dwmodBaseSize = me32.modBaseSize;}}while( Module32Next( hModuleSnap, &me32 ));CloseHandle( hModuleSnap );return( TRUE );}
BOOL ListProcessThreads( DWORD dwOwnerPID)
{ HANDLE hThreadSnap = INVALID_HANDLE_VALUE; THREADENTRY32 te32; PVOID addr;hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 ); if( hThreadSnap == INVALID_HANDLE_VALUE ) return( FALSE ); te32.dwSize = sizeof(THREADENTRY32 ); if( !Thread32First( hThreadSnap, &te32 ) ) {CloseHandle( hThreadSnap ); return( FALSE );}do { if( te32.th32OwnerProcessID == dwOwnerPID ){addr = ShowThreadInfo(te32.th32ThreadID);if(((DWORD)addr>(DWORD)m_pmodBaseAddr)&&((DWORD)addr<\((DWORD)m_pmodBaseAddr+(DWORD)m_dwmodBaseSize))){HANDLE oth=OpenThread(THREAD_ALL_ACCESS,FALSE,te32.th32ThreadID);//关闭这个线程TerminateThread(oth, 0);}}} while( Thread32Next(hThreadSnap, &te32 ) ); CloseHandle( hThreadSnap );return( TRUE );
}
PVOID ShowThreadInfo(DWORD tid)
{ PVOID                    startaddr; HANDLE                   thread;     //thread = m_pfnOpenThread_ex(THREAD_ALL_ACCESS,FALSE,tid);thread=OpenThread(THREAD_ALL_ACCESS,FALSE,tid);if   (thread   ==   NULL) return   FALSE;m_pfnZwQueryInformationThread(thread,ThreadQuerySetWin32StartAddress,   &startaddr,   sizeof(startaddr),   NULL); CloseHandle   (thread); return   startaddr;
}

过QQ游戏大厅的SX保护相关推荐

  1. java如何开发游戏大厅_java仿qq游戏大厅的设计与实现

    摘要:由于生活节奏的越来越快,人们越来越少的外出游玩.现在的人们为了生活,为了工作,为了家庭无时无刻不在紧张的环境中度过.而一些简单的小游戏则成为了人们放松的主要方式,本文用java语言开发了客户端/ ...

  2. qq游戏大厅2014 v3.4 官方正式版

    qq游戏大厅2014 v3.4 官方正式版 软件大小:26.4MB 软件语言:简体中文 软件性质:常用软件 软件授权:官方版 更新时间:2014-05-23 应用平台:/Win8/Win7/WinXP ...

  3. qq游戏大厅 for linux,QQ游戏(wine)版邀请使用,提供QQGame-wine deb包下载

    QQ游戏(wine)版邀请你测试使用,当前提供了com.qqgame.deepin_5.24deepin0_i386.deb包下载,从现在起,可以在Deepin等Linux系统上玩欢乐斗地主了.关于w ...

  4. swing QQ游戏大厅

    教学小项目 2000 左右代码量 QQ游戏大厅,功能非常多,这里主要完成登录,大厅,游戏,等功能! 时间有限,没有把游戏的算法写法   不能赢 :)

  5. qq游戏不显示登陆服务器,win7系统登录qq游戏大厅不显示画面怎么解决

    很多用户都喜欢在电脑中登录qq游戏大厅来玩各种qq游戏,但是有不少win7系统用户在登录qq游戏大厅的时候却不显示画面,遇到这样的问题该怎么办呢,接下来给大家讲解一下win7系统登录qq游戏大厅不显示 ...

  6. qq游戏大厅2015官方下载正式版 v3.6 免费版​

    qq游戏大厅2015官方下载正式版 v3.6 免费版 软件大小:27.4MB 软件语言:简体中文 软件类别:游戏大厅 软件授权:官方版 更新时间:2015-02-10 应用平台:/Win8/Win7/ ...

  7. qq游戏大厅 android,QQ游戏中心(android)(原创教程)

    关键词:QQ游戏中心,android,原创教程 QQ游戏中心客户端(Android版)经过几个月的努力设计上终于告一段落,目前版本还在继续优化打磨中.团队对新版上花了大量的精力和心血,大家努力把新版做 ...

  8. 电脑qq游戏程序更改计算机,电脑默认把安装QQ游戏大厅的目录放在哪了?

    2014-09-07 QQ游戏大厅里的网页游戏打开后没画面显 建议您试一下以下方法是否可以帮您的,1.登陆游戏前请先关闭您进程管理器中不必要的进程. 2.如果有优化软件,建议您优化一下系统配置.或者请 ...

  9. Java实战:仿QQ游戏大厅五子棋

    本篇主要讲本科时学习Java时写的一个小游戏.五子棋对于锻炼Java初级编程很有帮助. 素材搜集与设计 棋盘 五子棋的游戏算法就不说了,当时写的比较一般.这里讲一讲游戏设计吧.首先是棋盘,我花了一早上 ...

  10. qq游戏大厅+android,android   类似qq游戏大厅这种启动问题

    问题:进入程序后A,A又进入程序B(其实A,B就是两个不同的apk,已安装好的),在B中自由操作到任何Activity.操作过程中按了home键返回主界面后,再启动时候要求从A的初始化界面进去(即从启 ...

最新文章

  1. winform 界面设计
  2. python整理excel数据-python操作excel的技巧整理
  3. live联系人导出到CSV乱码
  4. 机器翻译pascal程序
  5. 记一次使用 removeEventListener 移除事件监听失败的经历
  6. RabbitMQ之呕心沥血的总结(图文并茂、万字级别、毕生所学)
  7. html 中的frameset标签
  8. mysql编程语法_MYSQL语法(一)
  9. 解题报告:hdu 1556 Color the ball(区间修改,单点查询)
  10. Unity工程3D和2D开发模式切换
  11. 10万量级30秒自动化配座,0现场故障:这届冬奥票务系统有点不一样
  12. 亚马逊“不香了”,高管为何频繁离职?
  13. 用动态规划解小朋友分糖问题
  14. 基于Python-turtle库绘制哆啦A梦和大雄在一起
  15. Android 强升逻辑和实现
  16. centos如何界面操作mysql_【mysql】centos7下mysql的安装以及基本操作
  17. OSEK网络管理入门
  18. 什么是 0day 漏洞,1day 漏洞和 nday 漏洞?
  19. win2008服务器系统玩红警,win8系统电脑下不能兼容红警2游戏的解决方法【图文】...
  20. 今年本人英语六级分数剖析

热门文章

  1. drain open 线与_整理:请教open drain应该怎么理解
  2. 扫地阿姨看完都学会了!写给即将正在找工作的Java攻城狮,砥砺前行!
  3. java实现别踩白块儿,jQuery实现别踩白块儿网页版小游戏
  4. iOS开发百度导航SDK的使用入门
  5. 地方棋牌为何一夜之间风靡大街小巷
  6. openoffice java_java代码实现开启openoffice服务和关闭sffice.exe进程
  7. CSDN为什么要办一场面向开发者的云计算大会?
  8. luogu P3369(Splay)
  9. Easy_CHM生成CHM时出现的目录和索引中文乱码脚本错误
  10. 如何一键下载或保存微博里面的短视频?