我一直在研究一些成功“复制”的 3rd 方应用程序(尽管我认为不一定要完全理解算法,而只是从原始二进制文件中提取逻辑核心并将其复制到他们自己的程序)模拟具有完整AirPlay 镜像支持的 Apple TV 服务器的主要逻辑,仅举几例:
- AirServer (OSX/Windows)
- 反射器 (OSX/Windows)
- 空气接收器 (Android)
- X-Mirage (OSX/Windows)
- AirPin PRO (安卓)
- EZCast 屏幕 (Android)
- 小米米连(安卓/小米盒子上运行)
通过查看他们的反编译代码和网络上的其他一些参考资料,大多数协议方面已经知道/相对容易弄清楚,我已经做到了,所以没有汗水,关键部分我很难理解这些人如何能够成功与 FairPlay 解密部分有关(即:接收和响应fp-setup
挑战以及解密挑战最后一步中发送的 AES 密钥时)。
他们似乎都从Apple 的原始/守护程序代码中提取了白盒/混淆功能,并将其嵌入到他们的源代码中,将种子/加密/解密的调用委托给它。airtunesd
fairplayd
我注意到在一些 iOS 设备中这个守护进程也存在(最有可能在通过 AirPlay 将屏幕镜像到兼容服务器时用于加密提要)但想知道这与 Apple TV 附带的那个有多大不同,如果我的假设是实际上是正确的(是不是这些人中的大多数人都从那里获取了这段代码?)。
希望以前有经验的人或对该主题有更多了解的人可以提供一些启发/指示,这样我就可以找到一种方法来至少做这些人能够完成的事情(这并不是真正对代码进行反混淆,而只是提取将其嵌入到他们自己的程序中)。
PS:为了清楚起见,除了确认之外,我正在寻找一些关于如何从所述二进制文件中提取可编译代码的指针,因为我尝试通过 IDA Pro 进行反汇编和反编译并没有为我提供太多我可以重用来编译重现那块拼图的新代码。