xxxx (一):PC端多开原理和破解方法
防止多开的方法又很多种,比如:
- 遍历进程,如果目标进程已经存在就认为正在运行,现在的进程退出
- 互斥体,也就是mutex,本质是生成一个全局变量。如果检测到这个变量已经存在,现在进程就退出
xxxx PC端用的是mutex。可以用OD打开xxxx的exe,然后CTRL+G查找CreateMutex函数,能找到两个:CreateMutexA和CreateMutexW;A是Ascii版本的,W是unicode版本的。xxxx这种全球月活用户破10亿的客户端,肯定是unicode版本的,避免遇到不同国家用户不兼容的情况,所以这里选择CreateMutexW,然后下个断点,继续运行,直到断下,如下:这里已经能看到CreateMutexW传入的参数了;
继续单步执行,直到xor eax,eax这行,再看ebp和下面对应的栈:
- ebp指向createMutexW调用前的ebp;
- ebp+4是createMutexW调用前的下一行地址,也就是返回地址;
- ebp+8开始是3个参数:分别是0、0和mutex的名称;不知道有没有小伙伴留意到:mutex的名字好长,为啥要这么长了?字符多了就容易被找到啊,而且还明显带有xxxx、app、install、identity、mutex等含义分明的字眼,明眼人一眼就能看出这些字符的业务意义,xxxx的开发人员是怎么想的了? 我个人猜测:mutex名称是全局的,也就是操作系统层面所有进程都共享。如果名称太短,容易和其他进程已经创建的mutex重名,导致xxxx无法打开。而名称中带有这些明显意义关键字符的作用也类似,可以和其他进程创建的mutex却分开来,避免影响xxxx进程的创建!
这里需要把名称改成其他的,所以继续在左边的内存窗口,跳转到0x64ED28位置,随便选个字符,比如第一个W,原本是57,现在改成00,直接放过运行:
过几秒钟就能看到弹出的xxxx登陆窗口,此时再点击xxxx.exe,又弹出一个窗口,效果如下:
多开的效果已经达到。此时如果还要继续生成xxxx实例,可以用CE附件第二个xxxx进程,找到mutex继续改名即可;
后续会继续分享hook的方法拦截CreateMuteX函数,改变第三个参数的名称,把xxxx多开做成补丁一样的功能,方便使用;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)