日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

过QQ游戏大厅的SX保护 - Evil0r's Blog - 博客频道 - CSDN_NET

發布時間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 过QQ游戏大厅的SX保护 - Evil0r's Blog - 博客频道 - CSDN_NET 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Evil0r's Blog

很久很久以前,天是藍的,水是清的,Virus是跑在Ring3的,AV是只做掃描的

  • 目錄視圖
  • 摘要視圖
  • 訂閱
【通知】3月21日21點至22點博客頻道服務暫停公告?????免費下載《SKC易云解決方案》???????下載頻道雙倍下載分返還活動震撼出擊!
CSDN 2011年度十大風云博客專欄評選火爆進行中!??????????????CSDN社區3月技術大分享百本IT圖書等你拿!

過QQ游戲大廳的SX保護

分類: VC/C/C++GAMEHACK137人閱讀評論(0)收藏舉報

? ? ? ?早些時間看郁金香的教程,寫過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"); } else printf("失敗!\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; }


上一篇:一個腦殘殼的框架設計與實現下一篇:由遠程線程注入代碼引出來的一些問題頂
1
0
查看評論* 以上用戶言論只代表其個人觀點,不代表CSDN網站的觀點或立場個人資料
evi10r
  • 訪問:20477次
  • 積分:1273分
  • 排名:第4601名
  • 原創:86篇
  • 轉載:13篇
  • 譯文:0篇
  • 評論:85條
文章搜索論壇VC驛站
看雪論壇
一蓑煙雨
第八個男人
卡飯論壇
ZeroBox
SoftRCE
吾愛破解友情鏈接Sphinx_翔
小平童鞋
何Leader
zz_1215文章分類
  • 逆向學習(13)
  • vc基礎(11)
  • VC/C/C++(32)
  • GAMEHACK(5)
  • 驅動內核(11)
  • LUA(0)
  • Python(1)
  • 算法與數據結構(2)
  • PE/Virus(6)
  • 操作系統(2)
  • 文字(4)
  • ActiveX編程(0)
  • 魔獸編程(4)
  • OpenCV(2)
  • 病毒分析(2)
  • 調試器(1)
  • 溢出學習(5)
  • Ruby(1)
  • 資源共享(2)
  • 信息隱藏(0)
文章存檔 2012年03月(5) 2012年02月(2) 2012年01月(4) 2011年12月(10) 2011年11月(13) 2011年10月(12) 2011年09月(15) 2011年08月(28) 2011年07月(1) 2010年08月(9)閱讀排行
  • PE結構導出表詳細解析 (1827)
  • 基于11平臺的全圖和迅游加速器破解版 (761)
  • 一步一步教你寫DOTA外掛 (518)
  • __declspec(naked) 生成... (415)
  • DOTA作弊地址,持續更新 (367)
  • 做了個隱藏進程跟保護進程的小工具 (360)
  • 寫了個魔獸爭霸輔助工具 (344)
  • 簡單實現了下SSDT SHADOW HO... (337)
  • Detour安裝及簡單使用實例 (330)
  • QQ連連看小外掛一個 (318)
推薦文章最新評論
  • 模仿LordPE寫了個PE解析工具

    ak47tt1: ak47tt1@qq.com非常感謝!!

  • 由遠程線程注入代碼引出來的一些問題

    evi10r: .bss段是未初始化的靜態變量和未初始化的全局變量的存放區一般RawData為0 表示在磁盤中不占...

  • 關于ImageRvaToVa與SEC_IMAGE的一些東東

    evi10r: @evi10r:可以理解為映射進去后的VA,但是貌似得不到PE頭的數據,返回的都是null

  • 關于ImageRvaToVa與SEC_IMAGE的一些東東

    evi10r: @Lactoferrin:謝謝明白了其實是view的base+offset啊結合LOADPE和代碼又...

  • 簡簡單單,做自己的視頻加密軟件

    evi10r: @wangjieest:視頻也是數據文件的呀

  • 簡簡單單,做自己的視頻加密軟件

    wangjieest:看起來是視頻加密...原來是文件加密...不明白有些WMV可以在內部加密的原理...

  • 模仿LordPE寫了個PE解析工具

    wangjieest: wangjieest@163.com

  • 關于VS2008調試時加載符號緩慢的問題

    evi10r: @evi10r:可以,lockresource是16位留下來的東西應該是沒啥用

  • 關于VS2008調試時加載符號緩慢的問題

    evi10r:大晚上突然想起個東西,資源的內存地址可以直接用loadresource的返回值?

  • VC釋放資源

    evi10r: http://www.vckbase.com/document/viewdoc/?id=1564

評論排行
  • 做了個隱藏進程跟保護進程的小工具 (10)
  • 模仿LordPE寫了個PE解析工具 (10)
  • 一步一步教你寫DOTA外掛 (7)
  • 關于ImageRvaToVa與SEC_I... (5)
  • 關于程序基址改變問題 (4)
  • 寫了個魔獸爭霸輔助工具 (4)
  • 窗口全屏,覆蓋任務欄 (3)
  • QQ連連看小外掛一個 (3)
  • 用戶界面線程簡單學習 (2)
  • 使用DLL_THREAD_ATTACH阻... (2)


通過 Wiz 發布

附件列表

?

轉載于:https://www.cnblogs.com/xe2011/archive/2012/05/30/2525939.html

總結

以上是生活随笔為你收集整理的过QQ游戏大厅的SX保护 - Evil0r's Blog - 博客频道 - CSDN_NET的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。