qwe7612205 qwe7612205
关注数: 56 粉丝数: 49 发帖数: 753 关注贴吧数: 4
一个遍历句柄关闭互斥句柄达到双开游戏的程序,一直出错。注... RT!这段代码是写一个关闭互斥句柄的,用的是遍历当前程序所有句柄。开始没用DLL测试的时候还好,一改用DLL注入程序就程序报错 wchar_t Mutex[]= L"MutexDragonNest"; DWORD dwSize = 0; PSYSTEM_HANDLE_INFORMATION pmodule = NULL; POBJECT_NAME_INFORMATION pNameInfo; POBJECT_NAME_INFORMATION pNameType; PVOID pbuffer = NULL; NTSTATUS Status; int nIndex = 0; DWORD dwFlags = 0; char szType[128] = {0}; char szName[512] = {0}; if(ZwQuerySystemInformation==NULL) { AfxMessageBox("ZwQuerySystemInformation失败!"); exit(0); } pbuffer = VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE); if(pbuffer==NULL) { AfxMessageBox("pbuffer 0x1000失败!"); exit(0); } Status = ZwQuerySystemInformation(SystemHandleInformation, pbuffer, 0x1000, &dwSize); if(NT_SUCCESS(Status)==NULL) { if (STATUS_INFO_LENGTH_MISMATCH != Status) { AfxMessageBox("Status失败!"); exit(0); } else { // 这里大家可以保证程序的正确性使用循环分配稍好 if (NULL != pbuffer) { VirtualFree(pbuffer, 0, MEM_RELEASE); } if (dwSize*2 > 0x4000000) // MAXSIZE { AfxMessageBox("dwSize溢出!"); exit(0); } pbuffer = VirtualAlloc(NULL, dwSize*2, MEM_COMMIT, PAGE_READWRITE); if(pbuffer==NULL) { AfxMessageBox("pbuffer dwSize失败!"); exit(0); } Status = ZwQuerySystemInformation(SystemHandleInformation, pbuffer, dwSize*2, NULL); if(NT_SUCCESS(Status)==NULL) { AfxMessageBox("pbuffer dwSize失败!"); exit(0); } } } pmodule = (PSYSTEM_HANDLE_INFORMATION)((PULONG)pbuffer+1); dwSize = *((PULONG)pbuffer); for(nIndex = 0; nIndex < dwSize; nIndex++) { Status = NtQueryObject((HANDLE)pmodule[nIndex].Handle, ObjectNameInformation, szName, 512, &dwFlags); if (NT_SUCCESS(Status)==NULL) { AfxMessageBox("Status name失败!"); exit(0); } Status = NtQueryObject((HANDLE)pmodule[nIndex].Handle, ObjectTypeInformation, szType, 128, &dwFlags); if (NT_SUCCESS(Status)==NULL) { AfxMessageBox("Status type失败!"); exit(0); } pNameInfo = (POBJECT_NAME_INFORMATION)szName; pNameType = (POBJECT_NAME_INFORMATION)szType; GetDlgItem(IDC_EDIT1)->SetWindowText(szType); GetDlgItem(IDC_EDIT2)->SetWindowText(szName); if (0 == wcscmp((wchar_t *)pNameType->Name.Buffer, L"Mutant")) { if (wcsstr((wchar_t *)pNameInfo->Name.Buffer, Mutex)) { CloseHandle((HANDLE)pmodule[nIndex].Handle); AfxMessageBox("已经可以再开启游戏!"); break; } } } if(nIndex == dwSize) AfxMessageBox("关闭互斥句柄失败!"); if (NULL != pbuffer) { VirtualFree(pbuffer, 0, MEM_RELEASE); }
祭祀的PVP。 纯个人见解 勿喷勿转 很多祭祀一提到PVP就会很蛋疼。其实我看来祭祀在PVP中依然有一定的地位。<不管是暴力还是奶爸都以大部分人加点来说> 先说下辅助系的祭祀PVP:在一开始决定走辅助系的祭祀,想必是找把PVP看淡啦。所以一定不能逞强搞什么1V1,2V2,辅助就是以辅助为主,攻击限制为辅的,所以在PVP一定要选择4V4以上,而且在队伍搭配上要有输出和限制职业<祭祀的技能大家都很清楚,丢出技能要=一会才有效果,丢完技能又要=一会才能移动或侧滑,而且很多技能在技能没出来前没有霸体,逃生技能又是少得可怜>,辅助系PK可以说是最简单的,走位很少。一般现在群P都会关掉物品,所以辅助系在群P中的地位就明显啦不少,2个+血技能全+一般的平民法师都能上2000+,对于群P中绝对能让对手抓狂。另外由于没物品,所以魔是一重大问题,攻击技能就少放点,X和冲击波就够啦,群O的时候尽量走位,找队友掩护不要成为目标。只求不死能胜。 下面说下最有争议的暴力祭祀:先说下4V4上群P,因为群P暴力也不需要太多的走位,更多的要意识,就只是跟上ZS步伐跟技能,尽量多用限制技能。队友搭配上限制职业多于输出职业,而且配合和技术都要比辅助系的要求高。很多人都会觉得暴力祭祀群P没用,但是你们问下其它职业的被暴力祭祀的电触点和风暴打中有什么感觉,破技能不说伤害也不低,电棒,冲击波和X更是令人头疼。但是暴力的魔也是一大问题,多个输出限制技能烧魔觉对不比FS少,所以有固定队的建议搞回合<公会战>。我搞过几次公会间4V4,对面的都是用辅助系祭祀,全职业,不过都没+到几次BUFF和奶水我们就赢啦,我们2战神1艺人+我偏暴力祭祀。下面说1V1<2V2基本也是1V1房>,祭祀1V1想必大家都会觉得是悲剧,让人最蛋疼的,不是因为祭祀技能不强,而是祭祀的技能丢不出去就被破啦,所以对走位和意识方面是PVP中要求最高的,不知道大家在创号的时候有没有注意到角色介绍,上面的推荐操作玩家为高端玩家,这点便能说明。如果大家说这说的只是贤者,那我也办法。反正我是觉得祭祀PK不像大家说的那样纯属被虐。只要走位好,意识佳,一样能胜。这是我和朋友开4人1V1<回合>房对面一个战神和一个剑圣说的,虽然我没虐他们,但也没让他们虐,而且杀人数比死亡数多2.只可惜没录视频,一大悲哀。
1 下一页