[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 求问批处理不影响程序本身批量多开窗口如何做?

游戏本身是有账号登录的,
因为本身我并没有影响游戏,就是为了多开窗口,方便做任务,不需要一个一个账号切换来点击做任务,因为某些不能跳过的动态时间很耗费时间,而这个时间我可以去做其他号任务,游戏叫以闪亮之名,结果我多开了窗口,但是提示我检测还是有窗口存在然后自动关闭,
  1. @echo off
  2. echo Starting QQ...
  3. start "" "C:\LifeMakeoverLauncher_ob_zh_20\LifeMakeoverGame_ob_zh_20\Azure\Binaries\Win64\Azure-Win64-Shipping.exe"
  4. echo Starting WangWang...
  5. reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\LifeMakeoverLauncher_ob_zh_20\LifeMakeoverGame_ob_zh_20\Azure\Binaries\Win64\Azure-Win64-Shipping.exe" /t REG_SZ /d RunAsInvoker
  6. start "" "C:\LifeMakeoverLauncher_ob_zh_20\LifeMakeoverGame_ob_zh_20\Azure\Binaries\Win64\Azure-Win64-Shipping.exe"
复制代码
求问,以上如何改?

我只是想绕过他的恶心事前检测,也并没有更改他的程序本身,毕竟这是联网的游戏,就是想多开两个窗口,毕竟她这里面动态不能跳过太耗费时间了,然后还占用我电脑,,因为是64位程序,互联网常见的甚至大佬分享的多开软件全部都不能使用

戏多开检测只是对游戏的进程数进行限制,分为事前检测、事中检测、和事后检测。

事中检测和事后检测往往没有提示,是游戏公司封号、处罚的手段,事前检测即禁止游戏多开
枚举进程的多开检测
基本原理就是枚举所有系统进程,如果发现游戏进程名已经存在则无法继续打开新的进程
————————————————
bool isMulOpenByProcess()
{
        HANDLE hProShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
        if (hProShot == INVALID_HANDLE_VALUE) return false;
        PROCESSENTRY32 pw{ sizeof(pw)};

        int count = 0;
        BOOL  bRet = Process32First(hProShot, &pw);
        if (!bRet) return false;
        do{

                _wcslwr_s(pw.szExeFile, wcslen(pw.szExeFile) + 1);
                if (wcscmp(pw.szExeFile, L"muldectection.exe") == 0) count++;
                //wprintf(L"%s\n", pw.szExeFile);
        } while (Process32Next(hProShot, &pw));

        if (count > 1) return true;

        return false;
}
参考破解方法—程序运行时修改进程名

互斥对象多开检测
互斥对象是内核对象,当创建带名称的互斥对象时,如果该互斥对象存在,则创建失败。可以利用这一点实现躲开检测。
bool isMulOpenByMutex()
{
        HANDLE hMutex = CreateMutexA(NULL, FALSE, "MulDectection");
        if (ERROR_ALREADY_EXISTS == GetLastError()) return true;
       
        return false;
}
考破解方法—可以在PE文件结构中删除互斥对象的句柄;hook CreateMutexA函数 等

信号量多开检测
信号量是内核对象,同互斥对象的原理类似,创建信号量时可以指定信号量的最大数量,程序运行时,可以让信号量加一,如果没法加一,说明信号量数量达到了设置最大值,以此来进行躲开检测
————————————————
bool isMulOpenBySemaphore()
{
        HANDLE hSema;
        hSema  = OpenSemaphoreA(SEMAPHORE_ALL_ACCESS, FALSE, "MulDectection");
        if (!hSema)
                hSema =  CreateSemaphoreA(NULL, 0, 3, "MulDectection");

        if (!ReleaseSemaphore(hSema, 1, 0)) return true;
        return false;
}
参考破解方案——可以调用WaitForSingleObject减少信号量数量

窗口多开检测
程序运行时寻找是否有同名窗口,如果已经存在则为程序多开。
HWND hWnd=FindWindowA(NULL,"ConsoleWindowClass");
        if (hWnd != NULL) return true;
考破解方案——修改窗口名

共享内存检测多开
通过进程间共享内存段的方式来检测多开
#pragma data_seg("_hdata")
int g_count = 0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:_hdata,RWS")

bool isMulOpenByMemory()
{
        g_count++;
        if (g_count > 1)return true;

        return false;
}
参考破解方案——修改共享内存段的变量的值

TOP

我只是想绕过他的恶心事前检测,也并没有更改他的程序本身,毕竟这是联网的,就是多开两个窗口,毕竟她这动态不能跳过太耗费时间了,然后还占用我电脑,,因为是64位程序,互联网常见的多开软件全部都不能使用

TOP

本帖最后由 qianjiaren 于 2024-3-13 12:06 编辑

回复 4# Batcher


    这个游戏和阴阳师一样的电脑桌面,等于我要先隔离安装一个新系统,然后再在这个新系统里面安装这占内存gpu超大的破游戏,然后等于我要切换新系统,在运行该游戏,,,,,然后原来桌面哪个游戏我又要切换系统运行游戏,,,,我的天,,,就没办法隔离软件操作吗?批量开窗口代码是能用,还没进登录界面就强制性的弹出窗口把窗口关闭,,,所以我就卡在这一步,不知道用批量处理如何绕过

TOP

还是虚拟机走起
czjt1234 发表于 2024-3-13 09:58




这是和阴阳师差不多的电脑桌面,而且他是64位,不能隔离软件开虚拟要隔离系统,切换起来特别麻烦,所以我才来求助的

TOP

回复 8# czjt1234


    不行啊,这里我无法发送图片什么鬼,打开另外一个窗口就自动弹出一个小窗口,说已存在请关闭

TOP

https://ibb.co/MsjfNQ2
查看https://ibb.co/MsjfNQ2

TOP

回复 11# Batcher
就是弹出这个我无法关闭,想知道如何关闭

TOP

返回列表