我要多开梦幻手游PC端(梦幻手游PC端多开的简单分析及实现办法)

前言:

每天工作都很无聊,总想找点乐子,但是毛乐子都没有。

找个游戏玩吧,挂机的游戏。

找到了,这游戏叫做。。。梦幻西游手游。丁三石的游戏。。。

由于我手机是个功能机,

所以,下载个模拟器来玩吧,

下载了之后,安装了之后,启动游戏之后,CPU巨卡,可能我得电脑有点老。

怎么办,看到手游官网上竟然写着有个PC端。

OK,弄下来玩玩。

PC端就是不一样,截面很细腻,也超级不卡,感觉不错,

但是我有2个号阿,怎么办,

再开一个客户端,

SB了,告诉我已经有了,问我怎么办,要不要杀了那个。

当然不能杀,不然还叫双开么,

OK,本文开始了。

正文:

墨迹了半天,终于开始了。

(我的目的不是干掉它,只是为了多开游戏,所以这里只作简单分析,我只需要一个IDA)

直接两次打开客户端,会提示这么个情况,

有提示,不错,先去找提示相关的字符串,然后再找字符串调用的位置。。。

但是察看了字符串资源之后,发现,字符串都不是ANSI的,IDA年老体衰,精力不足,查不到字符串,放弃

MessageBox,简单办法解决,直接去找MessageBox的调用就行了,多简单

一共就这么几处,玉皇大帝怜悯我啊。。。

前面两个,调用处,看起来就不像,到第三处调用的时候,就挺像的了

看一下参数2的字符串

第四处调用的字符串,是这样的,找到了,对吧。

好了,我们常规的解决办法就是,梳理分支,然后往里面写jnz jz 相关的跳转,避过这种类似的错误提示了吧,

但是,我不想直接修改游戏文件这么干,

我所担心的:

1:程序有签名,直接改程序,会破坏签名。

2:如果这个程序有自身的完整性校验,这不是白折腾么。

3:其他我可能意识不到的问题。

我想怎么干,那。。。当然是找到源头,看它是怎么工作的,然后想办法避过去。。。

继续分析,

其实,到这个弹窗这块,就已经注定是被检测出来已经多开了,

所以,慢慢往回找代码,还好这个游戏客户端是x86的,而IDA对x86的F5支持很好,

往前找源头,不远处会找到

这样一处位置,双击进入函数可以看到,

这,应该就是单实例判断,

第一个函数,是用一种古老的方法,创建进程列表快照的方法遍历进程,然后判断进程路径名字,如果找到指定的,就不调第二个函数了。。。

第二个函数,更奇葩,用枚举进程的方法,来遍历进程,判断路径名字。。。

只要安全越过这里的获取,再越过后面的判断,就可以实现多开了,真容易。。。

慢慢往后看,

有这么一块代码,这是在做什么,

看到这个字符串“NetEase(Hangzhou) Network Co. Ltd.”,我猜,就是在验证证书,

进入前面的那个函数里面,往深了查阿找啊,

会看到 CertFindCertificateInStore 这种相关的函数,OK,证书相关,

我得目的不是干掉它,所以我不关心这里,

继续往后看,

走到大函数的尽头,

这里就是真正启动游戏之前的步骤了

进入函数,激动人心的时刻到了

挺好笑的,

LoadLibrary GetProcAddress 然后 call

只是转接了一下参数,

原来这东西,这么低级阿。

从头到尾,分析结束。

最终结论,

可行的最简单的多开方法:

直接模拟exe 的功能,直接加载DLL,然后调用函数,直接可以解决问题。

后续处理:

其实,前面几步就完了?

确实完了,能用了,但是能保证不出问题么,这个真的不好说,

后续需要加几步处理,

怎么加处理呢,

根据观察,可以看到目标DLL的接口固定,并且参数极少,而且传递的信息几乎为无用信息,

所以可以想象,DLL有极低可能直接根据内存来判断当前进程为可信进程,

所以,如果DLL真的这么做了,那么很有可能是通过进程对应的本地文件来判断,

如何欺骗DLL呢,这里我们需要保证原有的exe文件存在,并且证书有效,

然后我们以某些方法进入目标exe,夺取控制权,

简单的方法有3种。

1,直接DLL劫持,进入目标进程,镜像替换或者给代码打热补丁。

2,断点注入,镜像替换或者给代码打热补丁。

3,调试注入,镜像替换或者给代码打热补丁。

其实,从start函数开始看的话,看得出来  sub_40A830  这个函数就是WinMain函数,

因为它的调用处是这样的

而 v7 是什么,

v7 就是 

命令行参数

WinMain的原型是什么样的。

int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);

就是这样的

好了,工作结束。

实际上分析这个东西,加上写出代码测试,大致用了我两个小时,毕竟我不算成手,而且我的代码是C的,

估计成手分析这个的话,也就半个来小时就完事了。

附记:

其实,如果有现成的工具,可以隐藏掉已经启动的进程的话,应该也行,

在中间,

这里,实际上还有一处mutex判断,但是它不影响是否可以多开,

它只会影响调用DLL的时候传的参数。

最简单的方法还是什么都不管,直接写代码调用DLL的函数,

不过,估计三石帮客户端有蜜罐功能,很多很多很多年以前,端游封外挂,就是钓鱼执法,然后封的。

时间: 2024-10-12 10:37:38

我要多开梦幻手游PC端(梦幻手游PC端多开的简单分析及实现办法)的相关文章

Unity手游之路<十三>手游代码更新策略探讨

这几个月公司项目非常忙,加上家里事情也多,所以blog更新一直搁置了.最近在项目开发上线过程中遇到了一些新问题,接下来的时间和大家多多探讨学习.大家在工作中遇到技术问题,或者有什么想分享的,欢迎多多探讨 [email protected] ----------------------------------------------------------------------------------------------------------------------------------

PC端变成手机端的时候,把特效去掉(把canvas标签去掉)

PC端变成手机端的时候,把特效去掉(把canvas标签去掉)<script> if (screen.width < 768){ $('canvas').remove(); }</script> /*if($('window').width()<768){ $('canvas').css('display','none'); }*/ jQuery这种方法获取不到

Unity手游之路&lt;二&gt;Java版服务端使用protostuff简化protobuf开发

http://blog.csdn.net/janeky/article/details/17151465 开发一款网络游戏,首先要考虑的是客户端服务端之间用何种编码格式进行通信.之前我们介绍了Unity游戏前端使用protobuf的方法.今天我们来谈谈服务端如何使protobuf.游戏服务端语言百花齐放,除了比较传统的c/c++外,Java,Erlang,Python都有很多团队在使用. 今天推荐一下Java作为服务端开发语言.国内很多出色的页游和手游都是采用Java作为服务端语言的.比如<神曲

支持pc和移动端的手写签批功能

由于之前的业务需要,要求在pc端(用鼠标写字).移动端(手写)实现会签功能,然后百度下载了个签字插件,经过一些修改和功能添加,实现了现有的功能插件,效果如图: 代码下载地址:https://github.com/leslieXieMei/handSign 原文地址:https://www.cnblogs.com/meixie-leslie/p/9640676.html

java端判断请求来自pc端还是手机端

记录是为了更好的成长! 在项目中遇到一个问题,需要判断请求是来自pc端还是手机端,如下直接贴代码: /** * 判断请求来自手机端还是电脑端 */ public static boolean isMobileDevice(String requestHeader) { /* * android :所有安卓设备 * mas os :iphone * windows phone :windows系统手机 */ String[] deviceArray = new String[] {"android

web端和手机端测试有什么不同

面试中经常被问到web端测试和手机端测试有什么相同点和区别呢?现在总结一下这个问题,如有不对敬请指正 web端和手机端测试有什么区别 1.相同点 不管是web测试还是手机App测试,都离不开测试的相关知识,测试用例设计方法和测试原理基本是相通的. 2.不同点 相对于web测试,手机APP测试,除了要考虑软件的功能.性能.系统稳定性测试外,还要考虑手机本身所具有的特性.具体表现在以下几个方面: ①中断测试 a.电话中断:来电接听.来电挂断.呼叫挂断/接听 b.短信中断:接收短信.查看短信.复制短信

stm32 USB hid设备与PC进行双向数据传输时PC不识别USB设备

stm32 USB hid设备与PC进行双向数据传输时PC不识别USB设备,或者开始时识别,拔出后再插入就没有反应了,就连鼠标U盘也没有反应. 我的问题是,我安装了VMware虚拟机,并进行USB设备的分配,使得虚拟机系统也识别USB设备. 所以,解决问题的办法如下: 在<属性>中选择禁用. 然后把下面的VMware Workstation Server 也禁用了.重启电脑就OK了.

春天的色彩手抄报 春天来了手抄报

春天的色彩手抄报 春天来了手抄报 附加春天的诗句手抄报内容供参考:    春日迟迟,卉木萋萋.仓庚喈喈,采蘩祁祁.迟迟:缓慢.卉木:草木.萋萋:草茂盛的样子.仓庚:莺.喈喈:鸟鸣声众而和.蘩:白蒿.祁祁:众多.<诗经·小雅·出车>时在中春,阳和方起阳和:春天的暖气<史记·秦始皇本纪>阳春布德泽,万物生光辉汉 乐府古辞<长歌行>阳春白日风在香晋 乐府古辞<晋白绮舞歌诗三首>阳春二三月,草与水同色晋 乐府古辞<盂珠>春晚绿野秀,岩高白云屯秀:秀丽.屯

Share folders on remote Linux PC to your local Windows PC

With samba on Linux PC already installed On Linux PC: 1. vi /etc/samba/smb.conf add the following text in the end,  NOTE, there are  SPACEs before those options. [192.168.0.27.home]         comment = Linux Server 192.168.0.27 home         path = /hom