你所不知道的游戏音乐

文:PPXClub Masaki

对于每一位游戏爱好者来说,游戏的配乐也是追求的对象之一。因此也有了大多数游戏在发售后或发售前便会发行游戏原声集,也就是我们常说的"OST",也有一些作品还会发行编曲集(AST)。而仍然有一部分游戏配乐十分优秀,但是没有发行过任何的音乐CD,这也便使得很多的爱好者开始通过各种方式去制作这类游戏的音乐。

而收集到了的这些游戏的原声之后的爱好者们,也会有时会去有意无意地比较不同平台间的音乐是否好听——而这通常是说音质如何。笔者在前段时间,就在网络上与几位不相识的网友,对于部分同款游戏在不同的平台上的音质孰优孰劣的问题辩论了很长的时间,抛开音色的个人喜好问题之外,我也在想一个问题,到底是什么原因造成一些游戏换了平台之后,声音效果就变了呢?而这种造成这种问题的原因,多数是游戏的移植所带来的。那么,我觉得就应该从游戏音乐文件在游戏ROM(或光盘)中的格式存在方式进行反向追究其根源。为什么是反向追究呢?这就好比类似于在编辑文档时的"撤消"的动作,虽然在这里不能说是100%能够得到所有的工作步骤,但是可以获得一些数据格式相关的技术上的信息,而这又类似于"反编译"的"逆向制造",而接下来的事情就是能不能正确地看懂的问题了。

cubemediaplayer5b35d 要从游戏ROM或光盘中,找到游戏音乐文件的存放,这就不得不谈到游戏音乐抓取的概念了。比如从现在具有最广泛游戏媒体支持的主机——PS2来说,或许有很多人用过如Cube Media Player之类的软件去分析过PS2、Xbox360的游戏光盘中的一些如ADX格式的音乐文件,并且还进行了导出,这就是一种最简单的游戏音乐抓取。另外,还有一种音乐格式是叫做.PSF2的,也就是所谓"PlayStation 2 Sound Format"的模拟音乐部分的格式。不过可能会有人问,为什么刚才说的主机机种是PS2,而为什么不是Wii或者是Xbox360?问题是在于现在的Wii、Xbox360的游戏有比PS2现存多吗?(当然是指你能立即买到,而不一定指你收藏的或能下到的ISO)而他们的音乐格式或者说能够模拟出主机的音乐播放的模拟器出现了吗?都没有。不过,其间的一些通用性的问题是所有机种共通的,那就是一种是所谓的流媒体格式音乐,还有一种是以极小的文件空间占用来保存音乐回放数据的,在电脑上是叫做模拟音乐的一种音乐格式数据。下面就先说说"模拟音乐"的这一类别的音乐数据,之后再来介绍说明流媒体格式的。

模拟音乐——不一样的MIDI

winamp5b55d 模拟音乐,英文一般写成"Emu Music"。很多玩家应该都知道有游戏模拟器,当年在GBA的时代,可以说是以VBA(GBA的模拟器之一,但市场占有率最大)为代表的模拟器盛行于市,而在进入了NDS之后,则相对开始减少。虽然这模拟器的用的人是多是少与模拟音乐有时没有关系,但是现在只要有模拟器的机种,一般都有着属于这一机种的模拟音乐格式。比如,Game Boy有着GBS(Game Boy Sound System)的模拟音乐格式,FC(Family Computer)也就是所谓的NES(Nintendo Entertainment System)也有着NSF/NSFe(NES Sound Format)的模拟音乐格式,包括其他还有SPC(SFC的)、QSF(CAPCOM街机系统的Q-Sound的)、PSF(PS的)、SSF(SS的)一直到PSF2(PS2的)。而模拟音乐只能使用如WINAMP加上相对应的插件,或者直接拿一款软件叫做"Audio Overload"(官方网站:http://www.bannister.org/software/ao.htm,英文)来播放。

而如果你找到这些模拟音乐的文件,你会发现这些文件与我们通常看到的就算如MP3这类大家都知道的有损压缩音乐格式的大小还要小,而少部分格式——或者说是有一些游戏,虽然只有一个文件,但是里面包含了整个游戏中的所有音乐(这部分格式如NSF、以RAR压缩的SPC音乐等)。而这些音乐之中,也有着很多是已经发行过OST的,而这部分音乐一般全曲加起来,最大却不到100MB。而这还是指PS2上的大部分游戏,其他更早的机种的文件则更小了。举几个不算太远的例子。很多比较老的玩家对于《最终幻想8》的音乐应该算是很喜欢的吧?10年前王菲的《Eyes on me》可是红遍全世界呢,直到前几天我在查阅某品牌的耳机的评测时,还发现了发布日期是2008年10月17日的稿子,上面赫然写着320kbps的《Eyes on me》……这款游戏是一套4CD的共74曲的原声集(后期的那些咱先不算),而PSF模拟音乐只有12.4M,共84曲,有13首在OST里没有收录,当然也不含王菲的那首到现在也还没有没人听的《Eyes on me》。而12.4M要用MP3 320kbps编码,只能存下5分钟左右的音乐。而在PS2上的《最终幻想12》,全部PSF2音乐只有68M的RAR包。

那么有人可能会问了,文件大小差这么老大大的,音乐效果会一样吗?好吧,但是,我们有一个前提是,不能与MP3的音质去比,要比只能对比CD或者无损的格式。因为MP3的有损压缩的损失实在是太大了,并且是改变音色的压缩(可以参见下文的ATRAC的说明)。但是,我可以这么说,不管是从GB还是FC,到PSF、SSF,这音乐是不会有什么差别的——主要可以看波形。而PSF2由于在制作上,可以在配置文件中加入不同"反响"音效的问题,就可能会与原始的游戏声音就不同——更别说与OST比了(虽然其他一些格式也可以这样,但多数需要其他的后期去改变)。虽然说OST也是一种"录制于"游戏声音的一种"音乐格式",注意,我在这里加了引号。至于要再详细的,那只能是专业地比较数据了,但过于繁琐,就此放过吧——因为有涉及到很多的问题,比如采样率不同等等的。最方便的就是拿到CD与模拟音乐主观试听了——但这同样带有主观印象的问题。好,一般来说,到这里模拟音乐与游戏机或者说是OST里的音乐是完全一样的——也就是与游戏机的音频输出的波形是相等的。如果OST的CD灌制没有进行特别音效处理,那也应该是一样的。

为什么这么小的文件可以出来如此的效果呢?不知道有没有读者对于这一章节的节标题是否有过注意?有人可能会问,是"MIDI"吗?不错,就是MIDI。但有人可能会继续问了,这个MIDI好像一般听起来,没这样好听吧?不错,咱们一般的使用的是标准的MIDI格式
文件,这种文件也可以用于一些支持和弦彩铃的手机。但是,我不知道有没有人在不同和弦音数的手机上去试同一个MIDI文件,或者不同品牌间的尝试。这时会有一些MIDI在手机演奏的过程中,音色会有所不同。而这是为什么,就是在于手机间的音色库的不同,而就是这音色库的不同,就能够以同一个MIDI文件演奏出来不同的效果。那么"MIDI"又是什么?或许有人知道,但是为了本文的阅读方便,我将来自于维基百科的"MIDI"的一些说明抄编录如下(相比较原文有改动):  

乐器数码接口 (Musical Instrument Digital Interface, 简称 MIDI) 是一个工业标准的电子通讯协定,为电子乐器等演奏设备 (如合成器) 定义各种音符或弹奏码,允许电子乐器、电脑或其它的演奏设备彼此连接,调节和同步等即时交换演奏数据。

MIDI本身并不传送声音数据,只传送如音调和音乐强度的数字数据,音量,颤音和相位(指左边声道的空间定位)等参数的控制信号,还有设定节奏的时钟信号。在不同的电脑声卡上,输出的声音也有所不同。

现在,几乎所有的音乐录音将MIDI作为一项关键开放技术来记录音乐。除此之外,MIDI已经渗入移动电话领域。MIDI用来播放支持MIDI移动电话的铃声。MIDI还可为某些视频游戏提供背景音乐。

PSF%E5%88%B6%E4%BD%9C%E8%BD%AF%E4%BB%B6_thumb[1] 在文中,我们可以清楚地看到MIDI还可以为某些视频游戏提供背景音乐的说明了。但是,这里仍然有一个问题不能解决,就是为什么有些游戏明明是同一平台,但是声音的音色会不同?按照上面所说的,这应该有可能是相等的呀?因为游戏机虽然没有电脑上的那专门的声卡——准确地说都是"集成声卡",但为什么仍然有不同呢?同样是上面那段文字,不知道是否有人注意过不同的电脑声卡的声音不同?当然,其实从Windows XP开始,不同声卡出的MIDI音也是一样的,这其实是由于"合成器"的原因。硬件合成器自然会因为硬件不同而不同,而能否使用软件呢?只要硬件上可行的,就能够用软件的方式去实现,这可以说是计算机中的一种基础知识吧。硬件环境可以由软件去模拟,所以软件合成器当然可以。而这合成器里所带的最主要的数据就是"音色库"。

在了解了一般定义下的"MIDI"之后,就可以来谈谈这部分游戏音乐的格式了。但是,一般说来,这些游戏音乐的数据其实与上面我们谈到的没什么区别。只不过,不管是早期的GB、FC,还是中期的PS、SS、N64,或者还是现在的Xbox360、PS3、Wii。他们的声音芯片其实并不会去带在PC上所说的合成器音色库。而游戏的音色库由游戏厂商自己制作,并存入游戏的ROM或光盘之中。一般说来,游戏中的一首曲子能够正常播放需要有:曲目本身的MIDI文件,音色库头文件(用于说明哪段是什么乐器的声音),音色库自身数据。当然这里的MIDI文件各机种所使用的MIDI标准会不一样,比如PS的MIDI文件就有些是SEQ、SEP(Generic PSF Driver说明文件),而PS2时又是SCEI MIDI。这些都与一般的MIDI数据不完全相同,当然可以使用一些工具转成电脑上的MIDI格式,这是另外的问题了。只不过,在游戏的数据中,这些数据的使用方式是各机种相同的。那就是通过游戏的指令,比较换一个场景,然后读取上述的三种文件(或数据)进入内存。只不过有些游戏或机种是共通一个音色库,也有的是一个文件使用一个其专有的音色库,也有是几个音乐使用一个。而就是由于这些不同的音色库,才使得游戏音乐变得不一样。但这种技术性的说明对于一般的玩家来说并不重要,如果要想简章地搞清楚的话,可以形象一点说——MIDI就是乐团使用的乐谱,而音色库头文件就是在乐谱中指明使用的乐器在乐团中的位置是哪儿,而音色本身就是那乐器自己。

下面我想大概说一下"模拟音乐"。在上文中,我谈到了模拟器,而播放"模拟音乐"的播放器或者插件的本身其实就是一个用于模拟主机中的CPU以及"SPU"的模拟器。"SPU"是指"声音处理单元"——而这声音处理单元就是一块芯片,因此,"模拟音乐"也便有了"芯片音乐"的称呼,不过准确地说应该还是得叫模拟音乐,因为并实机也并不是完全通过那块声音芯片完成播放的。而在模拟音乐文件中,其实除了需要有在上面所说的MIDI、音色库头文件、音色库,这三个文件以外,还需要有游戏的引导程序(或者是音频驱动文件)以及其他相关设定的文件。比如说FC、GBA、NDS这些游戏的存档(不是游戏进度的那个哦)是ROM,一般而言,这类游戏音乐一般是把ROM中的不相关的程序、图像等等数据都不要,只留下可以用的音乐数据和相关的程序代码,当然有些则可能将音乐数据抓取出来成单个文件。还有一类是从光盘中取得的数据,这类主要是以PSF为代表的"可移植音乐格式"中的大部分机种,如PS、PS2、SS等等,它们则是从某个文件中,分别抓取三个主要相关数据,然后使用游戏中的程序或者是经改造后的程序,将他们放在一起。我个人也抓取并发布过一些游戏音乐,觉得有些机种的音乐抓取虽然简单,但文件并不一定是最简化的,比如GBA的,最简化的则需要很细心地去分化原数据,很累,也很需要时间。由于在制作模拟音乐的过程中,如果把原有的除去最大的音色库以外的几个部分损坏(指使用非原始工具编辑后的生成,而一般这种工具除了在开发包中存在以外,其他很难能够完美完成MIDI格式转换)了,那么,这个音乐文件将会无法播放。而如果是音色库的文件与原始的不一致,那么播放的声音则会变声、变调。因此,也可以看出模拟音乐的一个特性是——原始的无法改变。在另外一方面,模拟音乐自身发展到现在,有些音乐抓取出来后,可以进行声音效果的设置——但这原始是为了还原最接近于原游戏而用的,不过原始使用的是什么音效并无法得知,所以也只能去听,然后选一项类似地去应用,这就是有部分模拟音乐虽然听着没什么,但和游戏机本身比起来,或者是OST相比,却发现有很大的不同,原因就是在于可能原来游戏使用了反响,结果模拟音乐的文件中没有使用,或者使用了其他的了。应该说,只要硬件支持了多种声音实时特效的,那么模拟音乐就有可能与实机效果不同。

谁都能轻松抓取的音乐——流媒体格式

其实说到抓取游戏音乐,或许有很多人都用过WINAMP的插件或者如"CubeMediaPlayer"之类的软件去对一种格式叫做"ADX&quot
;的文件尝试过。比如用WINAMP直接打开在DC、XBOX或360游戏光盘上的这种文件进行播放,或者用某些软件将这些音乐转成WAV,然后再压成MP3。但是这类文件的实际大小也并不小。拿Neill Corlett(PSF格式的制定者)在"PSF常见问题"中的说明来说,这类格式就像是WAV、MP3、WMA、OGG、RM等音乐格式,而如果游戏使用的是这类流媒体的话,在游戏进行中将光盘退出,不过多久,声音就会停止,而序列格式(模拟音乐那部分)则不会停止播放(某些游戏可能会出现拖慢现象)。

我们知道,像WAV之类的音乐文件可以记录下实际乐器演奏,特别是对于交响乐团的演奏效果,在使用MIDI仍然使用原来的谱子进行演奏是无法得到那样的效果的。比如光荣的《三国志》系列在后期也都是采用了交响乐团的录音。在一些游戏中也使用过序列的方式去演奏一些古典乐,但多多少少声音比较单薄。另外,在我们的计算机上,有着很多的工具可以对如WAV、MP3之类的音频文件进行效果的制作,或者将录制好的一些音乐进行美化——当然,要做得好是需要很大的功夫的。也正是由于有着这样的优点,所以也有很大部分游戏的音乐是先在作曲者的工作室中完成创作并录制,然后再使用音频软件进行适当地修改,最后成为在游戏中的音乐。当然也有一些将早期版本的游戏移植后,将原来的序列格式的音乐转录成流媒体格式的例子。

从PC-Engine开始第一次将CD-ROM作为游戏的载体开始,流媒体的游戏音乐格式就开始真正出现在了家用游戏机上。在PCE上使用的这种格式是被称为一种叫"ADPCM"的音频流,ADPCM的全称是叫做"自适应差分脉冲编码调制(Adaptive Differential Pulse Code Modulation)"是一种可以不降低PCM(也就是常用的WAV、CD采用的编码格式)品质,而对数据进行压缩的格式,但是根据微软的DirectX的开发资料显示,ADPCM其实是一种有损压缩格式。微软的DirectX不仅用于PC,在Xbox360上也是被使用的。不过,ADPCM是通过给定一个"噪讯比值"(有些地方称之为"插值"),以节省量化密度的方式,来达到节省音频所使用的带宽——节省使用的空间。但是,如果根据工具导出的ADPCM的文件大小和播放时adxe88081logo5b35d间来判断,ADPCM应该准确地说是一种最大限度地保证声音品质不变的一种压缩格式,在PS2上的一段2分钟不到的ADPCM文件的大小可以达到近5MB,这已经与使用压缩格式的如APE、FLAC的压缩后的WAV(PCM)大小相近了。在PS3的主机的情况上,鉴于开发资料无法查阅,加上游戏的光盘内容暂时无法介入分析,但估计这种格式也在PS3上"存活"着——因为在PS2上也是大量被使用的,自然不应该排除它仍在使用的可能性,并且这种格式的播放非常不占用CPU。顺便说一句,其实用于序列音乐格式的那个音色库的文件集,就是由ADPCM制成的。另外再带一句,也正是由于CD-ROM的导入,也使得有些游戏作品的音乐直接使用了CD-Audio,比如《DDR2》。

到了PS与SS的时代,虽然ADPCM在SS的主机上仍作为主力使用,但是在PS的阵营中,应该有很多玩家,特别是老玩家,都知道PS上的主要两大音频与视频的扩展名分别是XA与STR。不过,有时候这个STR其实也被只用于保存声音信息。对于SONY的这个"XA"格式,到底是什么编码现在似乎已经搞不清楚了,但是只有一点可以明白的,那就是它的采样率一般为33.75kHz,并没有达到使用序列格式的采样率——44.1kHz。并且,这一格式应该说是只在PS这一代上存在。进入PS2之后,所使用的SONY自主格式的是被称为"SONY SOUND 2"的一种格式。当然这"索尼声音2"准确地说只是来自于外界的称呼,至于开发资料上如何写的,不得而知。而对于我们玩家而言,能够将声音文件无损地导出为电脑可以播放的文件就可以了。

回过头来说SS方面。在1996年,株式会社CSK综合研究所(简称为CRI)开始向SS提供中间件(Middle Ware),而这中间件中间就包含了CRI ADX。应该有很多人对这个图标很熟悉吧?只不过现在换了一个05b45d 图标而已。在1998年,CRI开始向DC提供这一系列的中间件,在2001年成立了现在的株式会社 CRI·Middle Ware,并与同年开始向PS2、NGC、XBOX提供,之后分别在02年、05年、06年、07年向PC、PS3、Xbox360、PSP、Wii和NDS提供这一套的解决方案。我们现在可以在这些机种中找到CRIWARE(06年定下的品牌名称)的LOGO图标。这个ADX具体有什么好的技术,不是我们所关心的了,但是,我们应该关心的是他的这个音质或者压缩后的码率如何了。根据CRI官方的信息,CRI ADX在48kHz的WAV或AIFF(苹果开发的一种无损格式音频文件,类似于WAV)的情况下,比特率为400kbps,压缩率为1/4。这种音质一般而言,应该算是声音质量98了。如果我们使用Windows Media Audio 9.2的CQ98去可变比特率去压缩,一般绝大多数的音频文件比特率也就是240kbps~355kbps,在这里为什么要选用WMA的呢?首先,MP4、AAC不支持可变比特率,而MP3并不是全频域压缩,压缩后的声音相比原始WAV就声音偏暖,这不符合不改变品质的要求。而由SONY开发的用于Walkman的音频格式ATRAC3Plus(AA3,支持在PSP中的音乐文件夹直接播放)的最高CBR码率也只有352kbps,所以这个400kbps虽然是有损压缩,但是不会基本破坏掉原始的声音品质。

在到了PSP上,由SONY主推的AT3——ATRAC3格式也被应用在游戏之中。但是说起这个AT3格式,虽然不能和之后的一些如WMA、AAC去比,也不能与高码率的MP3相比较,但是AT3自身的开发目的就是在当时把MP3格式比下去——要知道那时候,网上流传最多的MP3码率也只不过是128kbps。而根据SONY负责开发ATRAC的工学博士西口正之在说明音频压缩技术ATRAC的开发方针中就说到,"ATRAC提供的是不以意图改变音色的,自然的声音。不仅仅是改善声音的细节、解析度和听感上的SN,并努力将音乐全体以最干净的,原音的细微之处与不改变制作者的意图地进行再现。"所以,虽然AT3最高比特率虽然少,但是,相比较来说,细节的还原以及不改变音色等方面确实胜过了MP3。虽然这个AT3与ATRAC3Plus(并不是单纯的所谓加强版,而这是另一种技术。)相比又是更不能抬头的一种格式了。

当然,还很多游戏使用的流式音乐中的其他格式也是存在的,但要论于技术上面也无外乎都与上述提到的一些格式相同。其实所有的流式音乐格式的原理都一样,就是编码与解码的事。不同的编码器得到的结果自然会不同,即便都是无损压缩格式,或者采用不同的

好吧……我竟然忘了长期对于这 Skydrive 上的文件路径有效性进行保全了-  -+更新一下……顺便扔几首新曲吧……

就介样了

我今天才发现……原来我的 QQ 等级已经是“三日”状态了……如图吧……

顺便,QQ2009 正式版的试用版真的不怎么样啊……snap00383_thumb5b55dPS:Windows Internet Explorer 8.0 正式发布了……

选择你的操作系统下载(简体中文版,版本:8.0.6001.18702):

snap003825b35d

嗯嗯……很清楚,本周的事情- -~~

顺便,今天 Microsoft 发布了 3 款安全补丁。其中,涉及到 Windows XP、Windows Vista 的安全补丁有两款,其中一个漏洞是紧急漏洞,如果被恶意利用,是可以塞木马,搞破坏啥的。请上述两款系统的用户尽快应用补丁!(PS:什么端口监控这种被动的防御之类的,没用的!)

windows75b75d 应该有很多人在前几天都有听说过,在 Windows 7 RC1 中加入了可以将 Windows Internet Explorer 8 完全卸载的功能。但是,根据最新的微软 Windows 7 开发组成员的 Blog 消息说,在 Windows 7 中,不仅仅可以卸载 IE8,还可以卸载其他的多数 Windows 功能。

在早些时间,在国外的一些网站上已经得到了 Windows 7 将为了避开欧盟(EU)的欧洲委员会(EC)的竞争法的规制,可以在 Windows 7 上完全卸载 IE 的功能的消息。在美国时间 3 月 6 日,Jack Mayo 在 Windows 7 开发博客上透露,其实除了可以卸载 IE 以外,还可以卸载其他的 Windows 组件。

而在之前的 Windows 产品中,由于各个 Windows 组件的统一化的设计,使得系统在完全禁用一项组件之后,会使得系统变得不正常,严重时无法正常运行。而在 Windows Vista 的开发过程中,Microsoft 便将 Windows 的各组件以及驱动可以在系统开机状态下挂起并暂时卸载的功能作为开发目标之一进行开发作业(此作法是为了以后在安装补丁时,可以在绝大多数的情况下,不必要再重启计算机才能使补丁生效而进行的)。而在 Windows 7 中,已经将大多数的组件成为真正的组件模块化,可以自由添加与删除。这与早期的 Windows 版本中的“添加/删除 Windows 组件”只是删除访问的链接完全不同,他可以完全删除相关的文件。

features_429x3755b55d 因此,在 Windows 7 中,用户可以在控制面版的“程序与功能”,或者直接在开始菜单中输入“Windows Feature(Windows 功能)”打开“Windows 功能”对话框,将你不需要的功能,清除掉它的选中。这样,操作系统将不会再读取此项功能。在这里,除了 Internet Explorer 8 以外,还有如“Windows Media Player”、“Windows Media Center”、“Windows DVD Maker”、“Windows Search”、“Handwriting Recognition(Tablet PC Components 选项)”、“Windows Gadget Platform”、“Fax and Scan”、“XPS Viewer and Services(包含 Virtual Print Driver)”等组件。当然,你也可以选中一些组件项,使这些组件功能添加到 Windows 中,在安装期间可能需要你的原始 Windows 7 安装 DVD 媒体。

Mozilla 在美国时间 3 月 4 日发布了 Firefox(火狐)3.0.7 版。此版本至少修补了 8 处的安全漏洞,其中一部分的严重程度为最高。

Mozilla 在连续的安全通告中警告说,此次修补的漏洞中最严重的是,在通常的浏览时可以跳过用户的必要的操作,直接实行攻击者的代码,并且将安装攻击者指定的软件。

以下为此次 Firefox 修补漏洞的列表概要。

    • MFSA 2009-11(重要度:低):用于伪装不可视控制的 URL。Masahiro Yamada 报告说,在特定的不可视控制的文字,可以被解析本地状态栏中显示的结果。攻击者可以利用此漏洞,伪装本地栏,欺骗用户访问自己的恶意 Web 站点。
    • MFSA 2009-10(重要度:最高):更新 PNG 库中的内存安全性问题。libpng 的维护者 Glenn Randers-Pehrson 报告说,Mozilla 使用的 PNG 库中存在着一些内存安全性的问题。攻击者可以利用此漏洞,使得访问者的浏览器崩溃,潜在地可以执行其计算机上的任意代码。libpng 已经更新了此漏洞的修补版本。
    • MFSA 2009-09(重要度:高):通过 RDFXMLDataSource 与跨域重链接读取 XML 数据。Georgi Guninski 报告说,通过 nsIRDFService 与跨域重链接的方式,可以违反 Web 站点同一生成原隐私策略,读取其他域名中的任意 XML 数据。此漏洞将允许恶意 Web 站点,通过重定向到其他站点,盗取已登陆用户的个人信息。
    • MFSA 2009-08(重要度:最高):与 Mozilla Firefox 链接的 XUL 复制要素的 Double Free 漏洞。通过 TippingPoint 公司的 Zero Day Initiative 计划的匿名研究者的报告说,Mozilla 的碎片收集处理中存在漏洞。此漏洞,由于对于链接为父子关系的一连被复制的 XUL DOM 要素的不适当的内存管理而引起的。再次打开由此方式形式链接的要素的页面时,浏览器在再次访问被丢弃的目标时发生崩溃。攻击者可以利用此漏洞,执行计算机上的任意代码。
    • MFSA 2009-07(重要度:最高):跟踪内存破坏的崩溃。修补了 4 个已发现的通过内存破坏可能造成浏览器崩溃的漏洞。

untitled5b55d

The way to a zero-day
February 2,2009 posted by Moti Joseph

到底是如何发现可以被用来攻击的安全漏洞的呢?

有从攻击对象应用程序的反编译开始的一种,也有更加简单的方法可以选择。更简单的方法的一种就是“Web 跳板”。

“要进行 0day 攻击需要 Web 跳板?为什么?”

好吧,这个主意是:攻击者了解开发者在碰到一个问题的时候,并将其发布到论坛上,请求帮助。

开发者的贴子中有抱怨一打开浏览器就崩溃了的。另外,也就是说出现了有人发布了如何让你的浏览器崩溃的人。而更多的开发者并不知道自己的贴子可能会影响到系统安全。

而攻击者却对于这些是很清楚的,这就很容易找出安全的漏洞。

从论坛的发布贴子上来看看攻击者是如何实际利用的吧。

0day_forum5b105d

这是一个在游戏论坛中,昵称为“Caveman”的会员发布的代码。他声称,他成功地使用了这段代码让其他人的计算机崩溃过。

美国 Websence 的安全实验室监视、分析着许多的 Web 站点,为了发现带有恶意代码的。通过这些活动,发现某些恶意网站的 Web 页中,使用了如论坛中发布的 JavaScript 代码。

0day_shellcode5b45d

能够看得懂这些代码吗?

攻击者将向浏览器的内存缓冲区写入大量的他的 Shellcode,并且使用“width="9999999" height="9999999"”作为在游戏论坛中可能出现的安全漏洞进行攻击,造成 Web 浏览器缓冲区溢出攻击。然后,以此引导执行他自己的 Shellcode,将计算机系统变成他自己的东西。

这种攻击并不会仅仅停留在计算机的“崩溃”之上。

我们对于这 Shellcode 的目的抱有疑问的态度。因此,将这段 Shellcode 进行简单地转换成 C 语言之后,进行了测试。

bind_payload5b45d

执行之后,发现计算机的以太网的 28876 端口在监听状态。

bind_shell5b45d

那么,到底是在监听着什么?好吧,使用 telnet 到此端口上,就立马得到了答案。出现了计算机的壳(命令提示符)画面。

shell_prompt5b45d

Game Over。


Copyrights (C) 2009 Websense, Inc. All rights reserved.

原始文章内容为:http://securitylabs.websense.com/content/Blogs/3294.aspx