2011-08-09 160 views
3

我被要求抓取一个flash网站,该网站似乎正在通过AMF协议使用某种服务器端调用。我完全不熟悉这个协议,但发现这个库(http://www.pyamf.org/index.html)。反向工程AMF

我可以查看发送到服务器的有效负载以及响应。我可以确定某些关键要素,但总体上不理解请求或响应。

我认为图书馆会有所帮助,但我不确定从哪里开始。是否有人知道用于反向设计AMF调用的资源或技术,或者有人可以解释为什么不可能?

+0

AMF本身是一个二进制Flash文件。调用本身返回一个AMF文件,不是吗? – bzlm

+0

AMF是Actionscript消息格式,是向Flash发送数据的协议。它本身不是一个Flash文件。 –

回答

7

正如有人谁已建成,可以解析AMF(RocketAMF)图书馆,我会建议你使用,而不是现有的图书馆之一写你自己的。以下是通过语言的一些库AMF解析的列表,还有更多的一个简单的搜索远:

至于理解AMF通常如何工作,它是一个带有远程过程调用(RPC)层的对象序列化格式。所有RPC调用都由服务名称和调用该服务的方法以及参数列表组成。如果他们使用Flex,那么除了Adobe的开源AMF实现BlazeDS之外,还有一些额外的RPC层进程没有记录,但是上述所有库都支持。

您可能还想看看Charles,它能够对通过它代理的AMF请求进行反序列化,从而使逆向工程变得更容易一些。

4

AMF协议的文档已发布。

你可以找到在AMF 3规范的副本:http://opensource.adobe.com/wiki/download/attachments/1114283/amf3_spec_05_05_08.pdf

的AMF 0协议,这是该协议的旧版本,有它的可用规范的:http://opensource.adobe.com/wiki/download/attachments/1114283/amf0_spec_121207.pdf

这是一个非常长时间阅读,但如果你参考了一些实现它的库的代码,你应该能够得到它。

还有一个在该协议引用的一个很好的列表:http://osflash.org/documentation/amf