[原创]放一个Adobe AIR桌面程序抓取AMF封包的DLL源代码
说到AMF数据包很多人的第一印象肯定是利用浏览器的调试功能抓取,
但是对于很多桌面版的flash应用(adobe air应用,如 lol的游戏大厅客户端等)该怎么抓取到AMF封包的数据呢?
希望能对其他有此疑问,但还未解决的童鞋给予一个小小帮助。
以前做XX的时候写的,具体就是hook住 Adobe AIR.dll中分析到的两个点,可以抓取到Adobe Air桌面程序的封包发送以及接收(AMF协议层面的收发数据)。该程序适合的air版本(Adobe AIR.dll.3.7.0.1530),不同版本的,可以参照源码当中的注释,里头有当时分析时存的特征码,应该其它版本的Adobe AIR.dll也可以找到这两个HOOK点。(至于当时的分析过程。。我已经忘了,只剩下代码了)
程序的导出函数当中,往lpSend_Handler和lpRecv_Handler处传入你需要被回调的函数,当目标Adobe AIR程序发送以及接收AMF二进制数据的时候,你的两个回调将被调用。
BOOL __stdcall Mount_Packet(DWORD dwPassword, LPVOID lpSend_Handler, LPVOID lpRecv_Handler) //hook 目标程序并设置接收、发送回调。
回调函数格式:
参数1 AMF数据地址
参数2 数据长度
注意:这里得到的AMF数据仅仅是原始二进制数据(即未加密的二进制AMF序列),具体如何将其转换为肉眼可读字符串的代码我就不贴了…,数据的起始地址,及其长度在回调里头都可以得到,网上有AMF的二进制结构,你可以参照网上的字节表,按照顺序将包数据还原成你自己适用的字符串(如json格式等)就行了。
完整版的大概就是这个样子了
