TOM-Skype附加功能模块skmsg.dll解析 |
发布: 2011-12-14 17:58 |
这个skmsg.dll模块用于。。。。。。 IBRARY "skmsg.dll" EXPORTS SkmsgStartup SkmsgShutdown SkmsgRegisterEvent SkmsgUnregisterEvent SkmsgPostMessage 2. 导出函数的原型: BOOL __stdcall SkmsgStartup(const char * pszSkypeId, const char * pszSkypeVersion, const char * pszMsgSvr = NULL); void __stdcall SkmsgShutdown(); BOOL __stdcall SkmsgRegisterEvent(SKMSGNOTIFY pNotify, unsigned short msgType); BOOL __stdcall SkmsgUnregisterEvent(SKMSGNOTIFY pNotify); BOOL __stdcall SkmsgPostMessage(const char * pszToId, unsigned short msgType, unsigned short msgLen, const unsigned char *pMsg); void __stdcall RequestMissionMsg(); 通过这个,我们可以 3. 导出函数说明: SkmsgStartup: 在skype登陆成功后调用,初始化该dll模块中的全局变量的值。如skype账号名,skype版本号。 第三个参数pszMsgSvr一个服务器地址,格式必须为host:port。 返回FALSE,也就是该dll模块初始化失败的情况有,已经初始化过,服务器地址格式错误,连接服务器错误,发送登陆通知出错。 该函数还创建弹窗线程。 SkmsgShutdown: 在skype退出登陆时调用,停止对该模块的调用。 所做处理,退出线程,发送skype登出通知,停止计时器,清理内存。 SkmsgPostMessage: 向服务器发送一条消息,消息内容有CRC4验证。 第一个pszToId其实没有用,一直给传递的值都是当前登陆的skype id。 4. 客户端与服务器间通信协议 使用简单的二进制流协议,该二进制流是对原数据使用CRC4加密取得。 使用协议头,协议尾来标识一条消息。 格式: |MSG_HEAD|PROTO_VERSION|0|rand_digit|REQ_NO|skype_id_len|skype_id|skype_version_len|skype_version|msgid|MSG_TAIL| 字节: |1 |1 |1|2 |1 |1 |skype_id_len|1 |skype_version_len|4 | 1| CRC4加密,只加密从rand_digit到msgid中间的数据,协议头、尾、版本号不在加密之列。 该加密使用简单可逆的按位异或实现,并没有使用加密key,加密结果操持原来的长度。 |
原文: http://qtchina.tk/?q=node/624 |
Powered by zexport
|