金山快快完全大揭迷——边玩边下技术

转贴 金山快快完全大揭迷 所谓的超网速、云技术下载纯属假象

花了一个小时的研究,这个软件如何运作及其原理都已知晓。在这里向大家表述这个软件的四个前提:
一、该软件并没有超网速下载。
二、该软件下载的游戏并没有经过服务器渲染,全是本地“硬盘”运行。
三、用该软件下载的游戏的运行效率要大大低于普遍下载后运行游戏的效率。
四、该软件所需要的技术是技术人员要对每个游戏的运作进行结构分析,哪些文件先加载,哪些后加载。

该软件当中的游戏软件制作步骤:
一、技术人员分析游戏结构,除了运行的EXE,函数调用必须的DLL,以及其它的额外加载库以外,其余所有的资源文件选择性以0KB处理,该技术可参考游戏光盘最小镜像制作。以GTASA为例,第一关所需的音乐材质模型等为完整数据,其余关卡全为0KB。
二、经过第一步骤分析后,将游戏分成上百分块,以16进制表示其加载的先后顺序,用00-FF的256个标码为文件命名。所有这些文件的文件头为KSFX,即KingSoft File X,金山文件修正块。
三、将这些所有文件进行打包,打包格式为7z。并将该7z压缩包重命名为initial_blocks.dat,即“初始化的结构数据”。供金山快快下载。由于其中大部份是0KB文件,只为标识游戏结构,所以大小被压得极小,GTASA实际上用户只下载了450M;红警2只有64M;其它的游戏实际容量都可以在缓存盘:\KsvsCache\游戏ID\压缩包ID\initial_blocks.dat这个文件大小查看。

注(1):initial_blocks.dat可以更改为initial_blocks.7z,可以用WINRAR打开,里面是游戏的实际容量和文件。
注(2):未下载完全的initial_blocks.dat的文件名是initial_blocks.dat.dlf,是不能用的,用winhex打开后有很多0字节,还需要金山快快续传,下载完后才会被自动命名为initial_blocks.dat。

用户的游戏步骤:
一、开启金山快快,点击其中你想玩的游戏。快快会先下载游戏的版本检测文件(app.dsc),该文件中有游戏ID(KSVS_App id 用于快快连接服务器查找游戏的文件结构用)和压缩包ID(ExpectPackage id 游戏运行用)
二、下载游戏的最小压缩包initial_blocks.dat(含大量的0KB文件的压缩包,也就是只包含了游戏文件结构)
三、用7z格式解压initial_blocks.dat在当前目录,其解压文件名就是压缩包ID ExpectPackage id(可用记事本打开app.dsc查看)
四、利用金山快快将游戏的主要文件包括初始需要的一些资源文件,从第三步解压的压缩包中,提取到系统盘:\Program file\目录下,也就是在系统盘下虚建了一个游戏安装目录
五、运行游戏。服务端会将剩下的资源文件按照服务器上该游戏的结构文件的先后顺序,从服务器上下载,下载到缓存盘:\KsvsCache\游戏ID\压缩包ID\cache目录下。也就是达到了边玩边下载的目的。

注(1):你系统盘中的游戏安装目录下的所有文件都是虚拟的,是金山快快通过文件映射构造出来的。所以这些文件虚拟文件,一旦关闭快快,所有文件将消失不见。它们不能够被复制,即时你用WINHEX查看这些文件,也需要金山快快实时的进行数据映射,造成卡顿异常严重。
注(2):系统盘中的游戏目录总大小和原游戏大小一模一样,但其中有很多0KB文件,游戏能正常加载这些游戏文件,但在内存当中也是00数据。而这些所有文件都会受到金山快快的实时监控,一旦在内存在加载这些0KB文件时,金山快快会迅速的将已在服务端下载好的资源文件数据映射到游戏里。
注(3):当关闭金山快快时,系统盘下的游戏目录会被瞬间清除,因为金山快快的映射功能同时也被关闭。下载再运行该游戏时,只需要马上从缓存盘:\KsvsCache\游戏ID\压缩包ID\cache\下释放到系统盘下即可。

为大家白话讲明
KsvsCache\游戏ID\压缩包ID\initial_blocks.dat 相当于“精简端”,
金山快快会将initial_blocks.dat中的所有文件解压在同目录,然后会自动将解压出来的那些0kb文件从服务端继续下载数据,自动填充进去。
然后将这些文件映射到系统盘,构造一个虚拟的游戏安装目录,供用户运行,并实时监控,好即时映射文件数据。

目前该软件的缺点十分明显:
(1)由于是实时监控,该软件下的游戏十分消耗CPU,其中包含向内存大量实时读写和文件的实时映射。
在游戏当中经常会出现长达数秒的明显卡顿,不用担心,这只是电脑在向你的硬盘写入数据,再从硬盘读到内存而己,有待优化。
(2)不能修改游戏文件本体,包括常见的INI文件,TXT文件,一率不能修改,一旦改动之后,会在瞬间被还原。因为那些文件都是虚拟的,实时文件还在“缓存盘:\KsvsCache\游戏ID\压缩包ID\cache”下,除非你懂得KSFX格式的加密规则。
(3)金山快快在下载游戏时在下方显示的下载速度,那是骗你的,真实的游戏容量请查看“缓存盘:\KsvsCache\游戏ID\压缩包ID\initial_blocks.dat“,其下载速度一般是你的常规下载速度的1/2,只有少,没有多。

原文地址:https://www.cnblogs.com/kidfruit/p/1793156.html