过QQ游戏大厅的SX保护
早些时间看郁金香的教程,写过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保护相关推荐
- java如何开发游戏大厅_java仿qq游戏大厅的设计与实现
摘要:由于生活节奏的越来越快,人们越来越少的外出游玩.现在的人们为了生活,为了工作,为了家庭无时无刻不在紧张的环境中度过.而一些简单的小游戏则成为了人们放松的主要方式,本文用java语言开发了客户端/ ...
- qq游戏大厅2014 v3.4 官方正式版
qq游戏大厅2014 v3.4 官方正式版 软件大小:26.4MB 软件语言:简体中文 软件性质:常用软件 软件授权:官方版 更新时间:2014-05-23 应用平台:/Win8/Win7/WinXP ...
- qq游戏大厅 for linux,QQ游戏(wine)版邀请使用,提供QQGame-wine deb包下载
QQ游戏(wine)版邀请你测试使用,当前提供了com.qqgame.deepin_5.24deepin0_i386.deb包下载,从现在起,可以在Deepin等Linux系统上玩欢乐斗地主了.关于w ...
- swing QQ游戏大厅
教学小项目 2000 左右代码量 QQ游戏大厅,功能非常多,这里主要完成登录,大厅,游戏,等功能! 时间有限,没有把游戏的算法写法 不能赢 :)
- qq游戏不显示登陆服务器,win7系统登录qq游戏大厅不显示画面怎么解决
很多用户都喜欢在电脑中登录qq游戏大厅来玩各种qq游戏,但是有不少win7系统用户在登录qq游戏大厅的时候却不显示画面,遇到这样的问题该怎么办呢,接下来给大家讲解一下win7系统登录qq游戏大厅不显示 ...
- qq游戏大厅2015官方下载正式版 v3.6 免费版
qq游戏大厅2015官方下载正式版 v3.6 免费版 软件大小:27.4MB 软件语言:简体中文 软件类别:游戏大厅 软件授权:官方版 更新时间:2015-02-10 应用平台:/Win8/Win7/ ...
- qq游戏大厅 android,QQ游戏中心(android)(原创教程)
关键词:QQ游戏中心,android,原创教程 QQ游戏中心客户端(Android版)经过几个月的努力设计上终于告一段落,目前版本还在继续优化打磨中.团队对新版上花了大量的精力和心血,大家努力把新版做 ...
- 电脑qq游戏程序更改计算机,电脑默认把安装QQ游戏大厅的目录放在哪了?
2014-09-07 QQ游戏大厅里的网页游戏打开后没画面显 建议您试一下以下方法是否可以帮您的,1.登陆游戏前请先关闭您进程管理器中不必要的进程. 2.如果有优化软件,建议您优化一下系统配置.或者请 ...
- Java实战:仿QQ游戏大厅五子棋
本篇主要讲本科时学习Java时写的一个小游戏.五子棋对于锻炼Java初级编程很有帮助. 素材搜集与设计 棋盘 五子棋的游戏算法就不说了,当时写的比较一般.这里讲一讲游戏设计吧.首先是棋盘,我花了一早上 ...
- qq游戏大厅+android,android 类似qq游戏大厅这种启动问题
问题:进入程序后A,A又进入程序B(其实A,B就是两个不同的apk,已安装好的),在B中自由操作到任何Activity.操作过程中按了home键返回主界面后,再启动时候要求从A的初始化界面进去(即从启 ...
最新文章
- winform 界面设计
- python整理excel数据-python操作excel的技巧整理
- live联系人导出到CSV乱码
- 机器翻译pascal程序
- 记一次使用 removeEventListener 移除事件监听失败的经历
- RabbitMQ之呕心沥血的总结(图文并茂、万字级别、毕生所学)
- html 中的frameset标签
- mysql编程语法_MYSQL语法(一)
- 解题报告:hdu 1556 Color the ball(区间修改,单点查询)
- Unity工程3D和2D开发模式切换
- 10万量级30秒自动化配座,0现场故障:这届冬奥票务系统有点不一样
- 亚马逊“不香了”,高管为何频繁离职?
- 用动态规划解小朋友分糖问题
- 基于Python-turtle库绘制哆啦A梦和大雄在一起
- Android 强升逻辑和实现
- centos如何界面操作mysql_【mysql】centos7下mysql的安装以及基本操作
- OSEK网络管理入门
- 什么是 0day 漏洞,1day 漏洞和 nday 漏洞?
- win2008服务器系统玩红警,win8系统电脑下不能兼容红警2游戏的解决方法【图文】...
- 今年本人英语六级分数剖析
热门文章
- drain open 线与_整理:请教open drain应该怎么理解
- 扫地阿姨看完都学会了!写给即将正在找工作的Java攻城狮,砥砺前行!
- java实现别踩白块儿,jQuery实现别踩白块儿网页版小游戏
- iOS开发百度导航SDK的使用入门
- 地方棋牌为何一夜之间风靡大街小巷
- openoffice java_java代码实现开启openoffice服务和关闭sffice.exe进程
- CSDN为什么要办一场面向开发者的云计算大会?
- luogu P3369(Splay)
- Easy_CHM生成CHM时出现的目录和索引中文乱码脚本错误
- 如何一键下载或保存微博里面的短视频?