VS竞技游戏平台辅助外挂制作实例
来源:互联网 发布:c语言源代码 编辑:程序博客网 时间:2024/04/29 18:43
实行文件下载地址:
http://download.csdn.net/source/743789
运行实例图:
访问其他进程的头文件:
- //---------------------------------------------------------------------------
- #ifndef MemoryCtrH
- #define MemoryCtrH
- #include <windows.h>
- //---------------------------------------------------------------------------
- void* AllocMemInForeignProcess(HANDLE process, unsigned long size);
- void FreeMemInForeignProcess(HANDLE process, void* ptr);
- void ReadFromForeignProcessMemory(HANDLE process, void* ptr, void* target, unsigned long size);
- void WriteToForeignProcessMemory(HANDLE process, void* ptr, void* src, unsigned long size);
- //---------------------------------------------------------------------------
- #endif
访问其他进程内存的cpp文件:
- //---------------------------------------------------------------------------
- #pragma hdrstop
- #include "MemoryCtr.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- //---------------------------------------------------------------------------
- /*
- * Allocated memory in a foreign process. Windows NT only!!!
- */
- void* AllocMemInForeignProcess(HANDLE process, unsigned long size)
- {
- void *ptr = VirtualAllocEx(process, NULL, size, MEM_COMMIT, PAGE_READWRITE);
- if(ptr == NULL) throw(GetLastError());
- else return ptr;
- }
- //---------------------------------------------------------------------------
- /*
- * Frees previously allocated memory in a foreign process. Windows NT only!!!
- */
- void FreeMemInForeignProcess(HANDLE process, void* ptr)
- {
- if(VirtualFreeEx(process, ptr, 0, MEM_RELEASE) == 0) throw(GetLastError());
- }
- //---------------------------------------------------------------------------
- /*
- * Reads from memory we previously allocated in a foreign process.
- */
- void ReadFromForeignProcessMemory(HANDLE process, void* ptr, void* target, unsigned long size)
- {
- if(ReadProcessMemory(process, ptr, target, size, NULL) == 0) throw(GetLastError());
- }
- //---------------------------------------------------------------------------
- /*
- * Writes to memory we previously allocated in a foreign process.
- */
- void WriteToForeignProcessMemory(HANDLE process, void* ptr, void* src, unsigned long size)
- {
- if(WriteProcessMemory(process, ptr, src, size, NULL) == 0) throw(GetLastError());
- }
- //---------------------------------------------------------------------------
主程序的头文件:
- //---------------------------------------------------------------------------
- #ifndef TVSEnterH
- #define TVSEnterH
- //---------------------------------------------------------------------------
- #include <Classes.hpp>
- #include <Controls.hpp>
- #include <StdCtrls.hpp>
- #include <Forms.hpp>
- #include "AdvAppStyler.hpp"
- #include "AdvAlertWindow.hpp"
- #include "AdvCircularProgress.hpp"
- #include "AdvGlassButton.hpp"
- #include "AdvListV.hpp"
- #include "ExeInfo.hpp"
- #include <ComCtrls.hpp>
- #include "FormSize.hpp"
- #include "AdvMenus.hpp"
- #include "trayicon.h"
- #include <ImgList.hpp>
- #include <Menus.hpp>
- #include "AdvOfficeStatusBar.hpp"
- #include <ExtCtrls.hpp>
- //---------------------------------------------------------------------------
- class TVSEnterForm : public TForm
- {
- __published: // IDE-managed Components
- TAdvListView *Roomlist;
- TAdvGlassButton *btnOK;
- TAdvCircularProgress *AdvCircularProgress1;
- TAdvAlertWindow *AdvAlertWindow1;
- TFormSize *vsInfo;
- TTrayIcon *TrayIcon1;
- TAdvPopupMenu *AdvPopupMenu1;
- TMenuItem *popRestore;
- TMenuItem *popStop;
- TMenuItem *popGoOn;
- TMenuItem *popExit;
- TImageList *ImageList1;
- TAdvOfficeStatusBar *AdvOfficeStatusBar1;
- TAdvGlassButton *btnAllSelect;
- TAdvGlassButton *btnAllCancel;
- TTimer *EnterRoomTimer;
- TAdvGlassButton *btnUpdateRoomList;
- void __fastcall btnAllSelectClick(TObject *Sender);
- void __fastcall RoomlistColumnRClick(TObject *Sender, int Column);
- void __fastcall btnOKClick(TObject *Sender);
- void __fastcall popRestoreClick(TObject *Sender);
- void __fastcall popStopClick(TObject *Sender);
- void __fastcall popGoOnClick(TObject *Sender);
- void __fastcall popExitClick(TObject *Sender);
- void __fastcall EnterRoomTimerTimer(TObject *Sender);
- void __fastcall btnUpdateRoomListClick(TObject *Sender);
- private: // User declarations
- int StartHotKeyId;
- int StopHotKeyId;
- int ExitHotKeyId;
- void __fastcall SetRoomList(void);
- HWND __fastcall GetVsRoomListHandle(void);
- void __fastcall SaveInfo(void);
- void __fastcall LoadInfo(void);
- void __fastcall SetRegKey(void);
- void __fastcall CancelRegKey(void);
- void __fastcall HotKeyDown(TMessage &Msg);
- void __fastcall Init(void);
- public: // User declarations
- __fastcall TVSEnterForm(TComponent* Owner);
- void __fastcall EnterRoom(void);
- BEGIN_MESSAGE_MAP
- VCL_MESSAGE_HANDLER(WM_HOTKEY, TMessage, HotKeyDown);
- END_MESSAGE_MAP(TForm);
- };
- //---------------------------------------------------------------------------
- extern PACKAGE TVSEnterForm *VSEnterForm;
- //---------------------------------------------------------------------------
- #endif
主程序的cpp文件:
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "TVSEnter.h"
- #include "commctrl.h"
- #include "MemoryCtr.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "AdvAppStyler"
- #pragma link "AdvAlertWindow"
- #pragma link "AdvCircularProgress"
- #pragma link "AdvGlassButton"
- #pragma link "AdvListV"
- #pragma link "ExeInfo"
- #pragma link "FormSize"
- #pragma link "AdvMenus"
- #pragma link "trayicon"
- #pragma link "AdvOfficeStatusBar"
- #pragma resource "*.dfm"
- //---------------------------------------------------------------------------
- BOOL CALLBACK FindVSMainWinProc(HWND hWnd,LPARAM lParam);
- BOOL CALLBACK FindRoomListWinProc(HWND hWnd,LPARAM lParam);
- VOID CALLBACK VSEnterSendAsyncProc(HWND hwnd,UINT uMsg,DWORD dwData,LRESULT lResult);
- //---------------------------------------------------------------------------
- TVSEnterForm *VSEnterForm;
- //---------------------------------------------------------------------------
- HWND VSMainWin = NULL;
- HWND VSRoomList = NULL;
- TList *VSWinListParent = NULL;
- TList *VSWinListChild = NULL;
- //TStringList *StrList = NULL;
- //---------------------------------------------------------------------------
- const int WinCount = 5;
- // 窗口类名数组
- char *WinClassName[WinCount] =
- {
- "#32770",
- "Static",
- "Static",
- "Static",
- "SysListView32"
- };
- // 窗口标题数组
- char *WinName[WinCount] =
- {
- "VS竞技游戏平台",
- "Static",
- "Static",
- "Static",
- "List1"
- };
- //---------------------------------------------------------------------------
- __fastcall TVSEnterForm::TVSEnterForm(TComponent* Owner)
- : TForm(Owner)
- {
- Init();
- //状态栏时间日期设定
- AdvOfficeStatusBar1->Panels->Items[2]->Text = TDateTime::CurrentDateTime().DateTimeString();
- AdvOfficeStatusBar1->Panels->Items[3]->Text = TDateTime::CurrentDateTime().DateTimeString();
- VSMainWin = NULL;
- VSWinListParent = new TList;
- VSWinListChild = new TList;
- //StrList = new TStringList;
- SetRoomList();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::SetRoomList(void)
- {
- VSRoomList =GetVsRoomListHandle();
- //找到VS进程号
- DWORD vspid;
- HANDLE vsproc;
- int rowcount = 0;
- void* vsroomitemdes = NULL;
- char* itemtext = NULL;
- bool error = false;
- LRESULT msg_result = 0;
- LVITEM iconlabel;
- char buffer[sizeof(char)*(MAX_PATH+1)];
- TListItem * item;
- try
- {
- //得到当前大厅的房间数
- rowcount = static_cast<int>(SendMessage(VSRoomList, LVM_GETITEMCOUNT, 0, 0));
- if(rowcount == 0) return;
- //打开VS进程,创建通信内存区域
- GetWindowThreadProcessId(VSMainWin, &vspid);
- vsproc = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, vspid);
- if(vsproc == NULL)throw(GetLastError());
- vsroomitemdes = AllocMemInForeignProcess(vsproc, sizeof(LVITEM));
- itemtext = static_cast<char*>(AllocMemInForeignProcess(vsproc, sizeof(sizeof(char)*(MAX_PATH+1))));
- //逐个房间查询,得到房间的信息
- for(int loop = 0; loop < rowcount; loop++){
- //设置要得到的信息
- iconlabel.iSubItem = 0;
- iconlabel.cchTextMax = MAX_PATH;
- iconlabel.mask = LVIF_TEXT;
- iconlabel.pszText = (LPTSTR)itemtext;
- WriteToForeignProcessMemory(vsproc, vsroomitemdes, &iconlabel, sizeof(LVITEM));
- msg_result = SendMessage(VSRoomList, LVM_GETITEMTEXT, loop, (LPARAM)vsroomitemdes);
- if(msg_result < 0){
- MessageBox(NULL, "无法取得房间信息", "VS挤房间", MB_OK|MB_ICONERROR);
- error = true;
- break;
- }
- ReadFromForeignProcessMemory(vsproc, itemtext, &buffer, sizeof(buffer));
- item = Roomlist->Items->Add();
- item->Caption = buffer;
- //设置要得到的信息
- iconlabel.iSubItem = 2;
- iconlabel.cchTextMax = MAX_PATH;
- iconlabel.mask = LVIF_TEXT;
- iconlabel.pszText = (LPTSTR)itemtext;
- WriteToForeignProcessMemory(vsproc, vsroomitemdes, &iconlabel, sizeof(LVITEM));
- msg_result = SendMessage(VSRoomList, LVM_GETITEMTEXT, loop, (LPARAM)vsroomitemdes);
- if(msg_result < 0){
- MessageBox(NULL, "无法取得房间信息", "VS挤房间", MB_OK|MB_ICONERROR);
- error = true;
- break;
- }
- ReadFromForeignProcessMemory(vsproc, itemtext, &buffer, sizeof(buffer));
- item->SubItems->Add(buffer);
- //设置要得到的信息
- iconlabel.iSubItem = 3;
- iconlabel.cchTextMax = MAX_PATH;
- iconlabel.mask = LVIF_TEXT;
- iconlabel.pszText = (LPTSTR)itemtext;
- WriteToForeignProcessMemory(vsproc, vsroomitemdes, &iconlabel, sizeof(LVITEM));
- msg_result = SendMessage(VSRoomList, LVM_GETITEMTEXT, loop, (LPARAM)vsroomitemdes);
- if(msg_result < 0)
- {
- MessageBox(NULL, "无法取得房间信息", "VS挤房间", MB_OK|MB_ICONERROR);
- error = true;
- break;
- }
- ReadFromForeignProcessMemory(vsproc, itemtext, &buffer, sizeof(buffer));
- item->SubItems->Add(buffer);
- }
- //如果出错,清空所有的东西
- if(error){
- Roomlist->Items->BeginUpdate();
- Roomlist->Items->Clear();
- Roomlist->Items->EndUpdate();
- }
- //清空所有的东西
- FreeMemInForeignProcess(vsproc, vsroomitemdes);
- FreeMemInForeignProcess(vsproc, itemtext);
- CloseHandle(vsproc);
- }
- catch(DWORD error)
- {
- //清空所有的东西
- delete itemtext;
- if(vsproc)
- {
- if(vsroomitemdes) FreeMemInForeignProcess(vsproc, vsroomitemdes);
- if(itemtext) FreeMemInForeignProcess(vsproc, itemtext);
- CloseHandle(vsproc);
- }
- //Rethrow the original error.
- throw error;
- }
- }
- //---------------------------------------------------------------------------
- HWND __fastcall TVSEnterForm::GetVsRoomListHandle(void)
- {
- EnumWindows((WNDENUMPROC)FindVSMainWinProc,0);
- VSWinListParent->Add(VSMainWin);
- for(int i = 1; i < WinCount ; i++){
- for(int j = 0 ; j < VSWinListParent->Count ; j++){
- EnumChildWindows((HWND)(VSWinListParent->Items[j]),(WNDENUMPROC)FindRoomListWinProc,i);
- }
- VSWinListParent->Clear();
- VSWinListParent->Assign(VSWinListChild,laCopy);
- VSWinListChild->Clear();
- }
- if(VSWinListParent->Count == 1){
- return (HWND)(VSWinListParent->Items[0]);
- }
- //StrList->SaveToFile("d://1.txt");
- }
- //---------------------------------------------------------------------------
- BOOL CALLBACK FindRoomListWinProc(HWND hWnd,LPARAM lParam)
- {
- char windclassname[MAX_PATH];
- GetWindowText(hWnd,windclassname,MAX_PATH);
- if(windclassname[0] != 0 && strstr(windclassname , WinName[(int)lParam])){
- VSWinListChild->Add(hWnd);
- //StrList->Add(AnsiString(IntToHex((int)hWnd,8))+":"+AnsiString(lParam));
- }
- return true;
- }
- //---------------------------------------------------------------------------
- BOOL CALLBACK FindVSMainWinProc(HWND hWnd,LPARAM lParam)
- {
- char windclassname[MAX_PATH];
- GetWindowText(hWnd,windclassname,MAX_PATH);
- if(windclassname[0] != 0 && strstr(windclassname , WinName[0])){
- VSMainWin = hWnd;
- //StrList->Add(AnsiString(IntToHex((int)hWnd,8)));
- return false;
- }
- return true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::SaveInfo(void)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::LoadInfo(void)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::SetRegKey(void)
- {
- StopHotKeyId = GlobalAddAtom("StopVSLoader")-0xC000;
- StartHotKeyId = GlobalAddAtom("StartVSLoader")-0xC000;
- ExitHotKeyId = GlobalAddAtom("ExitVSLoader")-0xC000;
- RegisterHotKey(Handle , StartHotKeyId , MOD_CONTROL ,VK_F1);
- RegisterHotKey(Handle , StopHotKeyId , MOD_CONTROL ,VK_F2);
- RegisterHotKey(Handle , ExitHotKeyId , MOD_CONTROL ,VK_F3);
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::CancelRegKey(void)
- {
- UnregisterHotKey(Handle , StartHotKeyId);
- UnregisterHotKey(Handle , StopHotKeyId);
- UnregisterHotKey(Handle , ExitHotKeyId);
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::HotKeyDown(TMessage &Msg)
- {
- if( (Msg.LParamLo == MOD_CONTROL)&& (Msg.LParamHi == VK_F1) ){
- EnterRoomTimer->Enabled = false;
- TrayIcon1->Animate = false;
- AdvCircularProgress1->Enabled = false;
- }
- if( (Msg.LParamLo == MOD_CONTROL)&& (Msg.LParamHi == VK_F2) ){
- EnterRoomTimer->Enabled = true;
- TrayIcon1->Animate = true;
- AdvCircularProgress1->Enabled = true;
- }
- if( (Msg.LParamLo == MOD_CONTROL)&& (Msg.LParamHi == VK_F3) ){
- EnterRoomTimer->Enabled = false;
- TrayIcon1->Animate = false;
- AdvCircularProgress1->Enabled = false;
- Close();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::btnAllSelectClick(TObject *Sender)
- {
- bool flag = true;
- if((TAdvGlassButton *)Sender == btnAllCancel){
- flag = false;
- }
- for(int i = 0 ; i < Roomlist->Items->Count ; i++){
- Roomlist->Items->Item[i]->Checked = flag;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::RoomlistColumnRClick(TObject *Sender,
- int Column)
- {
- Roomlist->ShowFilter(true);
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::btnOKClick(TObject *Sender)
- {
- Application->ShowMainForm = false;
- TrayIcon1->Minimize();
- TrayIcon1->Animate = true;
- EnterRoomTimer->Enabled = true;
- EnterRoom();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::popRestoreClick(TObject *Sender)
- {
- Application->ShowMainForm = true;
- TrayIcon1->Restore();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::popStopClick(TObject *Sender)
- {
- EnterRoomTimer->Enabled = false;
- TrayIcon1->Animate = false;
- AdvCircularProgress1->Enabled = false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::popGoOnClick(TObject *Sender)
- {
- EnterRoomTimer->Enabled = true;
- TrayIcon1->Animate = true;
- AdvCircularProgress1->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::popExitClick(TObject *Sender)
- {
- EnterRoomTimer->Enabled = false;
- TrayIcon1->Animate = false;
- AdvCircularProgress1->Enabled = false;
- Close();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::EnterRoomTimerTimer(TObject *Sender)
- {
- EnterRoomTimer->Enabled = false;
- HWND win = NULL;
- win =FindWindow(NULL, "VS竞技游戏平台");
- if(win){
- HWND activewin = GetActiveWindow();
- SetActiveWindow(win);
- keybd_event(VK_ESCAPE ,0,KEYEVENTF_EXTENDEDKEY | 0,0 );
- keybd_event(VK_ESCAPE ,0,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);
- SetActiveWindow(activewin);
- }
- win =FindWindow(NULL, "VSClient");
- if(win){
- HWND activewin = GetActiveWindow();
- SetActiveWindow(win);
- keybd_event(VK_ESCAPE ,0,KEYEVENTF_EXTENDEDKEY | 0,0 );
- keybd_event(VK_ESCAPE ,0,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);
- SetActiveWindow(activewin);
- }
- EnterRoomTimer->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::btnUpdateRoomListClick(TObject *Sender)
- {
- Init();
- Roomlist->Items->BeginUpdate();
- Roomlist->Items->Clear();
- SetRoomList();
- Roomlist->Items->EndUpdate();
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::Init(void)
- {
- EnterRoomTimer->Enabled = false;
- TrayIcon1->Animate = false;
- AdvCircularProgress1->Enabled = false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TVSEnterForm::EnterRoom(void)
- {
- //找到VS进程号
- static int roomindex = 0;
- DWORD vspid;
- HANDLE vsproc;
- LRESULT msg_result = 0;
- POINT itempos;
- void* itempospt = NULL;
- void* vsroomitemdes = NULL;
- LVITEM iconlabel;
- try{
- //打开VS进程,创建通信内存区域
- bool find = false;
- GetWindowThreadProcessId(VSMainWin, &vspid);
- vsproc = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, vspid);
- if(vsproc == NULL)throw(GetLastError());
- itempospt = AllocMemInForeignProcess(vsproc, sizeof(POINT));
- vsroomitemdes = AllocMemInForeignProcess(vsproc, sizeof(LVITEM));
- for(int i = roomindex ; i < Roomlist->Items->Count ; i++){
- if(Roomlist->Items->Item[i]->Checked){
- find = true;
- iconlabel.state = LVIS_SELECTED|LVIS_FOCUSED;
- iconlabel.mask = LVIF_STATE;
- WriteToForeignProcessMemory(vsproc, vsroomitemdes, &iconlabel, sizeof(LVITEM));
- msg_result = SendMessage(VSRoomList, LVM_SETITEMSTATE, i, (LPARAM)vsroomitemdes);
- if(msg_result < 0){
- break;
- }
- msg_result = SendMessage(VSRoomList, LVM_GETITEMPOSITION, i, reinterpret_cast<LPARAM>(itempospt));
- if(msg_result != TRUE){
- break;
- }
- ReadFromForeignProcessMemory(vsproc, itempospt, &itempos, sizeof(POINT));
- roomindex = i+1;
- ::ClientToScreen(VSRoomList,&itempos);
- SetCursorPos(itempos.x+10,itempos.y+5);
- mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
- mouse_event(MOUSEEVENTF_LEFTUP ,0,0,0,0);
- Sleep(10);
- SendMessageCallback(VSRoomList,WM_LBUTTONDBLCLK,MK_LBUTTON,MAKELPARAM(itempos.x,itempos.y),(SENDASYNCPROC)VSEnterSendAsyncProc,0);
- break;
- }
- }
- if(!find){
- roomindex = 0;
- for(int i = roomindex ; i < Roomlist->Items->Count ; i++){
- if(Roomlist->Items->Item[i]->Checked){
- find = true;
- iconlabel.state = LVIS_SELECTED|LVIS_FOCUSED;
- iconlabel.mask = LVIF_STATE;
- WriteToForeignProcessMemory(vsproc, vsroomitemdes, &iconlabel, sizeof(LVITEM));
- msg_result = SendMessage(VSRoomList, LVM_SETITEMSTATE, i, (LPARAM)vsroomitemdes);
- if(msg_result < 0){
- break;
- }
- msg_result = SendMessage(VSRoomList, LVM_GETITEMPOSITION, i, reinterpret_cast<LPARAM>(itempospt));
- if(msg_result != TRUE){
- break;
- }
- ReadFromForeignProcessMemory(vsproc, itempospt, &itempos, sizeof(POINT));
- roomindex = i+1;
- ::ClientToScreen(VSRoomList,&itempos);
- SetCursorPos(itempos.x+10,itempos.y+5);
- mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
- mouse_event(MOUSEEVENTF_LEFTUP ,0,0,0,0);
- Sleep(10);
- SendMessageCallback(VSRoomList,WM_LBUTTONDBLCLK,MK_LBUTTON,MAKELPARAM(itempos.x,itempos.y),(SENDASYNCPROC)VSEnterSendAsyncProc,0);
- break;
- }
- }
- }
- //清空所有的东西
- if(itempospt) FreeMemInForeignProcess(vsproc, itempospt);
- CloseHandle(vsproc);
- }catch(DWORD error){
- //清空所有的东西
- delete itempospt;
- if(vsproc){
- if(itempospt) FreeMemInForeignProcess(vsproc, itempospt);
- CloseHandle(vsproc);
- }
- //Rethrow the original error.
- throw error;
- }
- }
- //---------------------------------------------------------------------------
- VOID CALLBACK VSEnterSendAsyncProc(HWND hwnd,UINT uMsg,DWORD dwData,LRESULT lResult)
- {
- VSEnterForm->EnterRoom();
- }
- VS竞技游戏平台辅助外挂制作实例
- vs竞技游戏平台去广告
- 游戏外挂制作实例1
- 浅析VS游戏竞技平台识别作弊软件的手段
- 时隔两年VS竞技游戏平台安全依然薄弱
- 游戏 辅助 外挂
- 2012软件下载排行榜最新版下载地址:flashfxp VS竞技游戏平台 酷我音乐
- 游戏外挂制作 VB
- 游戏外挂制作
- 从零开始制作游戏外挂
- 游戏外挂制作教材
- 游戏外挂制作原理
- VS竞技平台2.1版优化
- 关于游戏 生死狙击 辅助 外挂 这种
- 【游戏外挂、修改器、辅助研究1】认识外挂
- 游戏外挂制作 VB =
- 游戏外挂制作技术探讨
- 需找游戏外挂制作
- Hibernate基础知识
- AVS264_FAQ集锦
- 使用Jmagick压缩高质量图片
- 朋友们好!
- 求助一BCB的问题?
- VS竞技游戏平台辅助外挂制作实例
- 单链表的翻转
- Struts验证框架
- 拦截器
- 从一粒沙中看世界,一朵花里有天堂 08.11.2
- linux 如何自动运行程序
- input文本框文字垂直居中
- 用友通损益表模板改正
- C语言面试题-华为C语言面试题