网易泡泡2004(NETEASE POPO)分析报告
2005-4-15
By wateroom
目标版本:POPO2004BUILD0907
一.物理结构与文件功能分析
Popo2004 的顶层目录: 28 个文件 10 个目录,基本功能说明如下:
l 目录:
[.] [..]
[ad]:存储广告信息,主要是些图片。
[BIMAGE]:大型图片?
[faces]:软件里个人配置时使用的头像文件。
[LU_TEMP]:存放自动升级组件从网上下载到的升级文件的ZIP包。
[plugins]:插件目录,用于功能扩展,例如MSN插件等。
[skin]:存放皮肤文件
[SysBmp]:软件图像资源,图标等。
[SYSDATA] :全局配置,关于表情,动作等。
[Users]:用户目录,存放用户的聊天纪录,个人配置信息等。
[wave]:存放系统使用到的声音文件。
l 配置文件:
gdstrings.ini :全局字符串定义。
localver.ini:存放本地文件的版本号,用于升级时同服务器文件版本对比。
l 可执行文件:
LSPhoneEngine.exe:IP电话软件的核心
Popo.exe:主程序,调用各个组件实现各种功能。
Start.exe:启动程序,主要用作升级时解压缩[LU_TEMP]目录里的文件升级本地文件,然后创建进程启动popo.exe。
uninstall.exe:反安装程序。
l 动态链接库:
Ø 网易开发:
Bobo.dll:具体功能有待分析,比较核心的模块,调用其它几个组件,核心逻辑在此?
idlemon.dll:空闲处理。
MailChecker.dll:独立组件,检测邮箱是否有新邮件。
MsgHis.dll:独立组件,管理聊天纪录,消息历史。
ResLoc.dll:资源定位,需要和交互服务器的通讯都需要此文件?
SOX.dll:非常关键的组件,有待分析。
share.dll:文件共享组件。
Updater.dll:自动升级组件。
VCodec.dll:独立组件,用于Xvid进行MPEG4视频编码?
Trace.dll:用于追踪调试,被BOBO.DLL调用。
XComm.dll:用于网络通讯。所有的通讯功能,无论是否服务器参与,还是P2P的都需要此组件的某些功能。
XEmotion.dll:调用P2PMGR.dll。用于聊天时的表情传输与解释?
XFile.dll:用于聊天时传输文件。
XGDI.dll:独立组件,用户界面。
XVideo.dll:用于视频聊天,主要负责视频的捕获与编码。
XVoice.dll:音频流的捕获与发送,用于语音聊天。
Ø 微软系统库:
dbghelp.dll:用于调试帮助。
msvcp60.dll:微软VC++运行时库。
msvcrt.dll:微软C运行时库。
Ø 第三方库:
LSPhoneCtrlDll.dll:IP电话控件。
Unzip32.dll:解压缩组件。
POPO使用了组件化技术,主程序同各个功能组件独立,便于升级与模块化开发。大部分DLL为COM组件。从大多数网易开发的组件调用MFC42.dll来看,软件使用VISUAL C++6.0开发。
最核心的部分是Xcomm.dll,它包装了WINSOCK的一些函数,POPO进行所进行的网络通讯除了自动升级与邮件检测,其它数据全经过此组件的转发。初步推断使用UDP协议;P2pmgr.dll也被多次调用,可能是用于在2个客户端之间进行P2P通讯时的相关操作管理,维护文件传输,视频与语音传送等。Resloc.dll在自动升级等多个组件里被调用,可能包含确定服务器资源的代码,比如进行服务器端的负载均衡时的客户端选择代码。Bobo.dll里面应该包含主要的信息编解码与加密解密函数。