比如这款游戏手柄「黄蜂背键版」, 可以点击映射到屏幕的某一点, 也可以进行复杂的宏录制来复合多个操作.
那么在 iOS 上的工作原理是什么样的呢?
首先先看「黄蜂电容版本」, https://zhuanlan.zhihu.com/p/45363782 这里有篇博客介绍了, 原理是:
飞智电容隔空映射技术,无需进行蓝牙连接,直接将手机插入手柄,通过操作不同的手柄按键即可实现模拟玩家触摸手机屏幕的操作,属于物理操控。
而「黄蜂背键版」则采用蓝牙进行传输, 而非物理操控, 想要使用手柄操控游戏还必须使用「游戏厅」来打开游戏, 那么问题来了:
1
FaiChou OP 目前收到两种解释:
1. 游戏里有一个开关, 通过 urlscheme 启动过来传参 通知 app 打开这份蓝牙协议, 之前在游戏厅里的配置 都是通过 scheme 传过来了, 游戏里自己解析 2. 蓝牙手柄根本不知道目前使用的游戏配置是哪一个, 但是在游戏厅 apply & run 的时候,游戏厅给手柄发送了对应的配置并且打开游戏, 这时候游戏和配置才对上, 手柄把处理好的信号直接发送给游戏, 所以受支持的游戏只需要支持一份公共的蓝牙协议就可以了. |
2
FaiChou OP 但以上两种解释都是在猜测, 没有找到官方解释, 在 iOS 下不越狱也非常难以 debug 验证 囧
|
3
eGlhb2Jhb2Jhbw 2019-09-02 13:34:24 +08:00
你说的这个 Scheme 的原理是从哪里查出来的?
我一直以为是“游戏大厅”给游戏注入了一个动态库,用来 hook 屏幕操作的。 |
4
FaiChou OP |
5
eGlhb2Jhb2Jhbw 2019-09-02 13:39:06 +08:00
@FaiChou #4 这我知道,但是怎么知道手柄是这样的实现,怎么知道游戏就有解析蓝牙手柄协议的 scheme 暴露出来,怎么知道游戏有哪些支持的协议,这些有什么规范吗?
|
6
FaiChou OP @eGlhb2Jhb2Jhbw 「给游戏注入了一个动态库」这个方式会有安全隐患, 大多数游戏应该都不会支持此操作来被 hook 吧
|
7
justfindu 2019-09-02 13:40:14 +08:00
物理映射 触发屏幕
|
8
FaiChou OP @eGlhb2Jhb2Jhbw 这些协议规范不像 js 查 ecma 那样容易找到, 所以除非联系手柄开发商或者游戏开发商, 否则在网上的资料很少, 个人也是比较好奇才研究下, 经过一系列搜索也是无果
|
10
eGlhb2Jhb2Jhbw 2019-09-02 13:58:12 +08:00
@FaiChou #6 动态库注入是 iOS 系统层级的实现,App 层面如果不做特殊处理是很难防得住的,参考微商们用的 WX。
|
12
openbsd 2019-09-02 14:09:54 +08:00
@eGlhb2Jhb2Jhbw #10
汗手也关注过一段时间这个手柄,不敢确认 TM 对这个的态度没下手。感觉没有 注入 IOS 那么高级 如果能直接注入系统,就相当于物理挂了,为啥还要通过别的途径进入游戏 ? |
13
eGlhb2Jhb2Jhbw 2019-09-02 14:25:10 +08:00 1
@openbsd #12 注入 App 和注入系统是两码事,如果只写一套动态库,可以挂载到不同的 App,成本就没你想的那么高。我理解的是因为需要注入动态库,所以给 App 脱壳了,为了避免证书问题,就把 App 也作为动态库,使用游戏大厅加载起来了。
当然,这个也只是我的猜测,没实际用过,不过看有些手柄的介绍,游戏里会有手柄的菜单,菜单里可以拖拽虚拟手柄的屏幕映射位置。这个菜单应该不是游戏自己做的,所以我才理解的是动态挂载了。 |
14
whileFalse 2019-09-02 14:38:03 +08:00
iOS 游戏厅里面的游戏应该是单独下载的特殊版本吧?
|
15
x86 2019-09-02 14:42:36 +08:00
我用黄蜂电容版用蓝牙模式被封了,现在切回电容模式很稳定...
|
16
binux 2019-09-02 14:44:04 +08:00 via Android
我猜通过游戏厅它能接管输入设备,根本不会是你想的那么麻烦
|
17
FaiChou OP @whileFalse
不需要下载特殊版本游戏, 只需要点击 apply and play 就可以启动运行 https://tva1.sinaimg.cn/large/006y8mN6ly1g6l6ahjnbaj31120ku79o.jpg |
18
huage2580 2019-09-02 15:49:37 +08:00 4
前竞品公司员工,飞智的电容版,行业目前是很难抄的,游戏也难检测;蓝牙版,大家都一样的技术,互相抄袭。我不负责 IOS 相关,只能说一些我知道的,1.逆向游戏植入 SDK(游戏每次更新都要重下,很耗我们的企业证书,经常封),2.越狱。游戏厅就个平台,主要是要引流下载我们的植入包;安卓端,最早也做逆向,后来逆向不做了,有更稳定的技术,1。shell 提权,2。多开;最后,正规的渠道,各种厂商合作,我们提供蓝牙 SDK;
腾讯的态度,先打压后谈合作。用户封号警告;这类行业都不好做,现在全看腾讯吃饭,它自己也搞手游外设助手之类的,看风向应该是你们按我标准做硬件,我内置,都给给我交保护费。 |
19
fvckDaybyte2 2019-09-02 15:51:18 +08:00 via iPhone
不是特殊版本怎么保证每个游戏的 URLScheme 都一样?应该不是这个原理
|
20
huage2580 2019-09-02 16:04:21 +08:00
@huage2580 对了,IOS 也能支持启动官方游戏,核心我就不了解,我知道暂时支持 64 位,不支持 A12 芯片;一样会检测封号。
|
21
FaiChou OP |
22
openbsd 2019-09-02 16:21:50 +08:00
@eGlhb2Jhb2Jhbw #13
我理解的是非系统层注入,所以要通过其它途径(游戏大厅)进入游戏。 而且通过这种模式进入游戏,非常大的概率会触发游戏本身的反作弊?机制,有封号风险 为啥厂商不出类似的游戏周边,方便操作,不给内置宏啥的.... |