上海辰星电子数据司法鉴定中心对软件相似性及破坏性程序的鉴定
【案情简介】
2011年,上海市某区一家网络技术公司经自主研发,制作了一款网络游戏对战平台。通过该游戏平台玩家可进行互联网实时联机对战,深受广大玩家欢迎。自2015年1月起,有玩家发现游戏对战平台中出现了一款外挂程序,该外挂程序可以使玩家在对战时获得压倒性的优势,该行为破坏了游戏的平衡性,导致大量玩家迅速流失,给该网络技术公司造成了巨额经济损失,后该公司向上海警方报案。
警方接报后,迅速展开侦查,抓获犯罪嫌疑人曹某和黄某,两名犯罪嫌疑人对其犯罪事实供认不讳。据交代,曹某大学毕业后,曾经任职于本案中涉及的网络技术公司,并且从事反外挂技术的研发。曹某利用任职期间非法获取的软件源代码,针对该游戏平台制作了外挂程序。后曹某将外挂程序以单价30元至100元不等的价格出售给黄某,再由黄某经营的网店加价出售给游戏平台玩家。仅2015年1月至7月间,两人以销售外挂程序牟利,非法经营数额高达210余万元。
【鉴定过程】
(一)涉案数据固定保全
1.外挂服务器端程序的固定保全
在送检硬盘中发现名为“FlashFXP”的远程FTP共享程序文件夹和名为“fuckdota”的服务器配置文件夹,其中共发现涉案文件1,151个,大小共计1,170,824,285字节。
通过程序“FlashFXP”连接历史IP地址“139.193.17.82”,发现名为“home”的服务器配置文件夹,其中发现涉案文件3,250个,大小共计923,630,140字节。
2.外挂客户端程序的固定保全
在送检光盘中发现名为“8.6.exe”的外挂客户端程序,计算其SHA256校验码为“ea5ab5c67a5bb30e397e6b4bb351cf8a7bd72b4d7c5521420196834a18c76ccc”。
3.外挂程序源代码的固定保全
在送检硬盘中发现名为“branch2”的涉案源代码文件夹,其中发现涉案文件1,008个,大小共计583,868,093字节。
(二)源代码相似性比较
1.外挂源代码的检验
在上述固定保全的涉案源代码文件夹“branch2”内发现核心源代码文件夹“core”,其中发现涉案文件240个,大小共计203,425,888字节。
2.样本的检验
在样本光盘中发现共1个名为“反外挂系统核心源代码”的文件夹,其中发现核心源代码文件8个,大小共计170,357字节。
3.源代码相似性检验
将外挂源代码文件与样本光盘中的核心源代码文件进行相似性比较(表1)。经检验,在涉案源代码中,共发现21个源代码函数与网络技术公司提供的核心源代码样本文件中的源代码函数完全一致,共计有效代码行数314行。
(三)外挂程序的功能检验
1.游戏平台的固定保全
对“11对战平台”官网上的客户端程序进行固定保全,获得游戏平台客户端程序“5211install_1247.exe”,计算该文件的SHA256校验码为“4f9879b2b8be59d47ed2f8a6101d6df0eb1956909f816a977fdbc997402b6a8a”。
2.游戏正常运行过程的固定保全
在鉴定工作站上安装游戏平台客户端程序“5211install_1247.exe”和对战游戏程序魔兽争霸3 V1.24。
登录“11对战平台”,创建以魔兽争霸地图Dota6.77c AI为模版的对战游戏。进入游戏,等待对方游戏角色出现后,查看对方地图显示情况(图1)。正常情况下,无法查看到对方游戏角色的活动和状态。
3.外挂程序的功能检验
使用固定保全的外挂服务端程序配置文件夹“fuckdota”和“home”搭建后台服务器。
运行外挂客户端程序 “8.6.exe”,使用在后台数据库中获取的账户和密码进行登录。
外挂客户端程序“8.6.exe”启动后,重新登录“11对战平台”,再次创建以魔兽争霸地图Dota6.77c AI为模版的对战游戏,进入游戏,等待对方游戏角色出现后,查看对方地图显示情况(图2)。此时,在游戏中可清晰查看对方游戏角色的活动和状态。
计算上述固定保全的涉案文件的SHA256校验码,并将所得校验码保存至鉴定工作站上。
【分析说明】
(一)正常游戏客户端的逆向分析
在鉴定工作站上登录“11对战平台”,进入魔兽争霸3游戏。使用Ollydbg v1.10附加游戏进程“War3.exe”,经检验,游戏进程“War3.exe”运行时加载“11对战平台”的可执行模块“11xp.dll”。该模块用于保护游戏进程“War3.exe”在运行时不被篡改,属于“11对战平台”游戏客户端的保护模块。加载成功后,以此次加载的可执行模块“11xp.dll”的内存基址“67B50000”为初始位,分别查看偏移量为“0x100410”、“0x1180e4”、“11890c”、“11a9f8”、“11aa10”、“1180fc”和“118ff8”的位置对应的数值,上述数值为可执行模块“11xp.dll”中的防篡改校验值。
(二)外挂程序启动后游戏客户端的逆向分析
在鉴定工作站上重新启动外挂客户端程序 “8.6.exe”,并使用其后台账号和密码进行登录。登录成功后,登录“11对战平台”,进入魔兽争霸3游戏。使用Ollydbg v1.10附加游戏进程“War3.exe”,启动外挂客户端程序“8.6.exe”后,游戏进程“War3.exe”运行时加载了的名为“frdfd.dll”的可执行模块。
同时,对游戏进程“War3.exe”加载的可执行模块“11xp.dll”进行分析,同样以可执行模块“11xp.dll”的内存基址“696F0000”为初始位,分别查看偏移量为“0x100410”、“0x1180e4”、“11890c”、“11a9f8”、“11aa10”、“1180fc”和“118ff8”的位置对应的数值。
综上所述,外挂客户端程序“8.6.exe”启动前后,可执行模块“11xp.dll”中的部分校验值数据发生改变(表2)。
如表2所示,外挂客户端程序“8.6.exe”运行后,“11对战平台”下的可执行模块“11xp.dll”中部分校验数值发生改变,其中第1、2、5和6项的数值被篡改,第3、4和7项的可执行模块“11xp.dll”内存空间的数据被可执行模块“frdfd.dll”内存空间的数据替换。
综上所述,在本次检验中,外挂客户端程序“8.6.exe”通过调用其生成的可执行模块“frdfd.dll”,对“11对战平台”中用于保护游戏进程的可执行模块“11xp.dll”中部分安全校验数值进行了篡改和替换,即通过修改“11对战平台”进程的逻辑数据,实现修改“11对战平台”中游戏地图显示效果的目的。
【鉴定意见】
本次鉴定在送检检材中发现的涉案源代码中共有21个源代码函数(共计有效代码314行)与样本光盘中的核心源代码中的源代码函数完全一致。
本次鉴定对外挂客户端程序 “8.6.exe”的功能进行了分析,发现其实现了“11对战平台”中游戏地图全开的功能,而这是“11对战平台”本身不提供给游戏玩家的功能。
本次鉴定对外挂客户端程序“8.6.exe”进行了逆向分析,发现其通过调用可执行模块“frdfd.dll”,对“11对战平台”中用于保护游戏进程的可执行模块“11xp.dll”中的部分校验数值进行了篡改和替换。
综上所述,外挂客户端程序“8.6.exe”修改了“11对战平台”中的逻辑数据,对“11对战平台”的正常操作流程和正常运行方式造成了破坏,属于破坏性程序。