随着经济大环境下行,空闲时间也多了,就玩起儿时的游戏,我发现这款传奇游戏只能单开,在点击客户端没反应,利用仅有的一点网络知识,一阵瞎鼓捣:
- 确定关键互斥体句柄
经过测试,只要关闭以下2个句柄,就可以突破多开限制,打开2个客户端。
- 编写关闭句柄
经测试,关闭其他程序句柄(比如微信)可以成功,单独游戏进程提示找不到相关句柄名,全部为空。
利用openark工具打开查看游戏进程句柄,是空的。
但是用pyark工具打开却是看的到的,关闭相应句柄,就能多开。
可能是GPK驱动保护的问题,那就换个思路,刷到过您的教程,利用IDA工具给客户端打补丁。从客户端程序mir.dat文件,拖入IDA,搜索字段CreateMutexA,找到了2处:
双击看了一下,没有发现教程中出现的流程图。
这里无论怎么修改(nop掉,改xor),运行客户端都会报内存错误。绝对新手,搞不懂,用OD跟一下。先打开一个客户端,然后OD再打开一个客户端,设置bp exitprocess断点,F9运行,程序断下:
反汇编跟随了一下,就在下面:
跟随了这个call 0042897c,发现了创建关键句柄名,直接填充掉
保存修改后,再次运行游戏,就可以双开了。为了防止客户端更新,用python做个登录器。
未明白的问题,请教大佬们:
1>.即使管理员权限运行脚本,提示找不到相应句柄?
2>既然不能关闭句柄,想到的是利用API hook拦截用于拦截 CreateMutexA
调用,并阻止创建特定的互斥体。
按照网上教程生成,先生成DLL,在启动游戏之前调用 inject_dll
函数,注入DLL文件,从而实现对 CreateMutexA
调用的拦截。还是提示:提示注入失败:argument 1:TypeError:Don’t know how to convert parameter 1。
能否给出具体解决办法?