某私服地下城手游抓包协议咨询

187 天前
 saveai

请教一个问题:

dnf 韩服的"私服"(咸鱼上 50 块钱买的一个帐号,70 版本的手游), 我想看看他们是怎么破解韩服做成自己的私服的,我使用了手机上的 HttpCanary ,也尝试了电脑上的 Fiddler+Proxifier ,好像没有看到实际的游戏操作对应的请求接口? 比如强化一个装备,那后台里面角色的装备的等级肯定会涉及到数据库变动吧,它是如何发请求给后台的呢?不是通俗的 Http/Https/TCP/UDP 协议吗?...

另外提供下载地址和帐号哈:

https://www.guluapp.cn/qIke

攻略文档,gm 后台地址在下面链接: https://rb2xj6wah7.feishu.cn/docx/EkgldYds2oCjRCxC9RtcjFtQnwf

可用于玩和测试的帐号: 帐号 1:12345678 ,12345678 帐号 2:112233 ,112233

我是想知道接口后,能不能改某个装备的强化等级,虽然 gm 后台可以发装备点券,但是这里面的怪血太厚了攻击太高打起来费时间

5080 次点击
所在节点    程序员
36 条回复
coolcoffee
187 天前
http 协议那个延迟,不可能满足游戏低延时要求,而且 http 本身来回传送的 header 开销也是硬伤。

大概率是 udp 协议类型,最差也是 tcp ,得用 Wireshark 抓才行。
saveai
187 天前
@coolcoffee Wireshark 看到有 TCP 有 UDP ,但是不知道咋弄成可以理解的方式,看起来都是
....D......n....B..P.....m7.....G3.GXe."..n*.7......s....~........W.T...S....D......n.^ZLD5.8....`..C
....If.....u.u0...]...
这种的内容,而且请求数量好多
irever
187 天前
重点是如何获得服务端的源码吧?
仅靠协议抓包来逆向服务端的实现,复杂度太高、准确度太低
w88975
187 天前
@saveai 先了解一下 protobuf
coderxy
187 天前
双端的通讯都是加密的, 你要看源码搞清楚它的加密原理, 还有像强化等级这个属性,肯定是服务端计算的,客户端只是发起强化请求,其它全在服务端。
weijancc
187 天前
游戏一般都不会用 http 协议,而是通过 tcp 自定义交互协议,都自定义协议了,自然会带上加密。
wang93wei
187 天前
@irever

你还真别说,现在米系游戏的私服就是这么出来的。通过抓包重写了服务端。

你这么想,客户端资源文件都在了。就看服务端怎么给传参数就能跑起来了。
cnevil
187 天前
游戏的交互不会是 http 吧。。腾讯不专门有个叫 kcp 的东西,基于 UDP 的
而且现在这种数据都会加密和校验的
十几年前会有叫做封包、脱机挂这种骚操作,脱机挂就是模拟账号对某些行为直接发包来实现不登游戏就能进行对应行为,现在你还听说过么。。
hnliuzesen
187 天前
@coderxy 哈哈,韩国人做游戏,还真不一定,初中那会端游用 WPE 封包工具能把武器强化到 255 ,最近手游还有挂是能看到最后翻牌的结果,一直觉得这种功能应该是服务端算好结果直接传回来,点哪个卡都是一样结果,是假的,谁知道人家是真的给传回来了四个结果
coolcoffee
187 天前
@saveai 传输往往都是加密的,通过分析内存里面的才有可能是明文。

很多反作弊工具提权就是为了避免外挂通过高权限来分析内存,所以外挂后面都衍生到分析虚拟机内存以及直接走 PCIE 访问物理内存。

收手吧,这个不是普通玩家该碰的,除非你觉得做协议逆向比游戏本身好玩。
saveai
187 天前
@wang93wei 是的,我怀疑他们就是这样来实现私服的,另外我在主题里贴一个 55 版本可以自己搭建的后台源码,我看是用 java 写的,而且这个 70 版本应该也是基于这个版本改出来的。

@coderxy 我是猜测哈,会不会有客户端提交数据到服务端的接口,我就可以实现自己提供数据发送到服务端,比如装备强化,虽然客户端写着最高 20 ,到了 20 就没按钮了,那我知道接口后我传一个 21 的等级到服务器,就看他们自己实现的服务端有没有这么严格的判断了(因为这是私服,大多都是一两个人开发的,所以逻辑肯定没那么严格)。

比如目前是可以实现用 GG 修改器,修改觉醒等级为 60 级(目前最高觉醒 5 级),然后可以同步到服务端一直生效,因为他们的服务端目前并没做当前级别和技能最高等级的逻辑判断。
fatekey
187 天前
肯定不是 http 协议啊,先断点在发包函数,再看调用栈往上一个一个函数的逆向,才能搞明白生成包的逻辑。
RobinzzZ
187 天前
DNF 私服是台服关闭之后的源代码泄露吧,网上大把的教程
ShayneWang
187 天前
有源码吗,搭了和朋友玩玩
saveai
187 天前
@RobinzzZ 端游是这样的,这里说的是手游
youngkingdom
187 天前
应该是用的 frida
saveai
187 天前
@youngkingdom 应该是的,我看 app 运行的时候,会同样请求韩服的那个域名,***.nexon 什么的。

@w88975 我看了之前版本,确实是用到了 protobuf


@fatekey 触发到我的知识盲点了。。


@ShayneWang

55 版本私服搭建源码及安卓安装包地址:

aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMXQ2ZjZqby1qTmZ3VHM0dU9oMGdENHc/cHdkPTZjZDU=
ShayneWang
187 天前
@saveai 链接被取消了, 我自己找了一套,跟你发的那个注册页面一样的,是这个吗?
kuanat
187 天前
游戏的核心逻辑肯定不会走 http 协议,大多数是在 tcp/udp 基础上自定义协议。最近这些年的游戏多数都会用 protobuf 类似协议来简化开发。

如果是比较小众的游戏私服,大概率是内部泄漏的,可能是服务端程序,也可能是代码文档。如果是比较火的游戏,才比较有可能是人力重建。

如果以逆向工程的方式来重建服务器端,主要是两个工作。一个是逆向客户端,提取客户端发包和收包的数据结构定义,然后实现一个协议兼容的服务器端。另一个就是重建游戏逻辑,这个事情比想象中简单,只是工作量巨大。

要是做过类似的正向开发,这个事情不难理解。具体到你的问题上,能逆向出协议定义的话(无论是静态解密还是动态追踪),抓到 tcp/udp 包就等于 http 抓到请求。
levelworm
187 天前
@coolcoffee 这个真的蛮有意思的。请问是游戏里自带虚拟机吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1049240

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX