请教一个问题:
dnf 韩服的"私服"(咸鱼上 50 块钱买的一个帐号,70 版本的手游),
我想看看他们是怎么破解韩服做成自己的私服的,我使用了手机上的 HttpCanary ,也尝试了电脑上的 Fiddler+Proxifier ,好像没有看到实际的游戏操作对应的请求接口?
比如强化一个装备,那后台里面角色的装备的等级肯定会涉及到数据库变动吧,它是如何发请求给后台的呢?不是通俗的 Http/Https/TCP/UDP 协议吗?...
另外提供下载地址和帐号哈:
www.guluapp.cn/qIke
攻略文档,gm 后台地址在下面链接:
rb2xj6wah7.feishu.cn/docx/EkgldYds2oCjRCxC9RtcjFtQnwf
可用于玩和测试的帐号:
帐号 1:12345678 ,12345678
帐号 2:112233 ,112233
我是想知道接口后,能不能改某个装备的强化等级,虽然 gm 后台可以发装备点券,但是这里面的怪血太厚了攻击太高打起来费时间

http 协议那个延迟,不可能满足游戏低延时要求,而且 http 本身来回传送的 header 开销也是硬伤。大概率是 udp 协议类型,最差也是 tcp ,得用 Wireshark 抓才行。

Wireshark 看到有 TCP 有 UDP ,但是不知道咋弄成可以理解的方式,看起来都是....D......n....B..P.....m7.....G3.GXe."..n*.7......s....~........W.T...S....D......n.^ZLD5.8....`..C....If.....u.u0...]...这种的内容,而且请求数量好多

重点是如何获得服务端的源码吧?仅靠协议抓包来逆向服务端的实现,复杂度太高、准确度太低

先了解一下 protobuf

双端的通讯都是加密的, 你要看源码搞清楚它的加密原理, 还有像强化等级这个属性,肯定是服务端计算的,客户端只是发起强化请求,其它全在服务端。

游戏一般都不会用 http 协议,而是通过 tcp 自定义交互协议,都自定义协议了,自然会带上加密。

你还真别说,现在米系游戏的私服就是这么出来的。通过抓包重写了服务端。你这么想,客户端资源文件都在了。就看服务端怎么给传参数就能跑起来了。

游戏的交互不会是 http 吧。。腾讯不专门有个叫 kcp 的东西,基于 UDP 的而且现在这种数据都会加密和校验的十几年前会有叫做封包、脱机挂这种骚操作,脱机挂就是模拟账号对某些行为直接发包来实现不登游戏就能进行对应行为,现在你还听说过么。。

哈哈,韩国人做游戏,还真不一定,初中那会端游用 WPE 封包工具能把武器强化到 255 ,最近手游还有挂是能看到最后翻牌的结果,一直觉得这种功能应该是服务端算好结果直接传回来,点哪个卡都是一样结果,是假的,谁知道人家是真的给传回来了四个结果

传输往往都是加密的,通过分析内存里面的才有可能是明文。很多反作弊工具提权就是为了避免外挂通过高权限来分析内存,所以外挂后面都衍生到分析虚拟机内存以及直接走 PCIE 访问物理内存。收手吧,这个不是普通玩家该碰的,除非你觉得做协议逆向比游戏本身好玩。

是的,我怀疑他们就是这样来实现私服的,另外我在主题里贴一个 55 版本可以自己搭建的后台源码,我看是用 java 写的,而且这个 70 版本应该也是基于这个版本改出来的。 我是猜测哈,会不会有客户端提交数据到服务端的接口,我就可以实现自己提供数据发送到服务端,比如装备强化,虽然客户端写着最高 20 ,到了 20 就没按钮了,那我知道接口后我传一个 21 的等级到服务器,就看他们自己实现的服务端有没有这么严格的判断了(因为这是私服,大多都是一两个人开发的,所以逻辑肯定没那么严格)。比如目前是可以实现用 GG 修改器,修改觉醒等级为 60 级(目前最高觉醒 5 级),然后可以同步到服务端一直生效,因为他们的服务端目前并没做当前级别和技能最高等级的逻辑判断。

肯定不是 http 协议啊,先断点在发包函数,再看调用栈往上一个一个函数的逆向,才能搞明白生成包的逻辑。

DNF 私服是台服关闭之后的源代码泄露吧,网上大把的教程

有源码吗,搭了和朋友玩玩

端游是这样的,这里说的是手游

应该是用的 frida

应该是的,我看 app 运行的时候,会同样请求韩服的那个域名,*.nexon 什么的。 我看了之前版本,确实是用到了 protobuf 触发到我的知识盲点了。。 55 版本私服搭建源码及安卓安装包地址:aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMXQ2ZjZqby1qTmZ3VHM0dU9oMGdENHc/cHdkPTZjZDU=

链接被取消了, 我自己找了一套,跟你发的那个注册页面一样的,是这个吗?

游戏的核心逻辑肯定不会走 http 协议,大多数是在 tcp/udp 基础上自定义协议。最近这些年的游戏多数都会用 protobuf 类似协议来简化开发。如果是比较小众的游戏私服,大概率是内部泄漏的,可能是服务端程序,也可能是代码文档。如果是比较火的游戏,才比较有可能是人力重建。如果以逆向工程的方式来重建服务器端,主要是两个工作。一个是逆向客户端,提取客户端发包和收包的数据结构定义,然后实现一个协议兼容的服务器端。另一个就是重建游戏逻辑,这个事情比想象中简单,只是工作量巨大。要是做过类似的正向开发,这个事情不难理解。具体到你的问题上,能逆向出协议定义的话(无论是静态解密还是动态追踪),抓到 tcp/udp 包就等于 http 抓到请求。

这个真的蛮有意思的。请问是游戏里自带虚拟机吗?

不是哦,外挂为了能够避免被检测出来,会改成通过虚拟机来运行游戏本体,外挂自身在外层上帝视角分析虚拟机内存。 很多游戏就直接禁止了虚拟机的运,比如 QQ 飞车 fcsy.qq.com/webplat/info/news_version3/28528/28529/28531/m19689/201902/794379.shtml 。但是外挂为了继续分析内存,就衍生出来物理 PCIE 方式跳过系统访问内存。

稍微正常点的开发者都不会把多人实时联机的游戏的主体通信用 HTTP 或者裸 TCP 实现,首选使用 UDP ,如果需要可靠机制用 KCP 。只有聊天框、公告栏之类的会用裸 TCP 或 HTTP 。

攻防类技术迭代太快了,外人只能看个皮毛,只有业内的才能说出个所以然来

可以补个链接吗,我想有空搭一个和我朋友玩玩><

你想多了,装备强化这类操作都是跑在服务端的,客户端只是对自己某年装备请求了一次强化

多谢,明白了,感觉很有趣的样子。Malware 好像也有很多这种在虚拟机里运行的例子。我是首次听说 PCIE ,去研究一下原理,猜测是需要在 boot 的时候就注入啊?

我去,我查了一下,PCIE 真的就是硬件啊。以前有加密狗,这算是作弊狗了,真狠。真的感觉很有意思,值得深入研究一下。

从你问的问题看,你最好放弃你的想法,技术积累跟这行差的太远。

你想从技术上搞定这个问题? 你也是想太多了。 源码其实没你想得那么难获得的,有钱就行。

百度网盘的链接失效了,可以重新再分享个链接吗

PCIE 并不是无敌的,DMA 的话,其实各大厂,包括国内的几个厂都已经有检测了。

所以现在某二次元私服就差不多烂尾了,靠抓包太多 BUG 了,开发难度爆炸,成吨的 issue 没法解决。

dockerhub 搜索 1995chen/dnf