首页
社区
课程
招聘
[九月专题]softprot8a软件保护及应用安全
发表于: 2007-1-3 12:43 7882

[九月专题]softprot8a软件保护及应用安全

2007-1-3 12:43
7882
软件保护及应用安全:了解战场
A.Main1  P.C. van Oorschot2
1Cloakware Corporation,Ottawa,Canada
2Computer Science,Carleton University, Ottawa, Canada
摘要. 我们对软件保护和应用安全进行 a state of the art 说明.讨论了应用安全与数据安全、网络安全、软件安全之间的关系。描述了危害软件的三个简单的模型。为了改善软件的安全性,就必须更好地了解攻击本身的特性,我们调查软件攻击方法以及攻击工具。并给出了软件应用的简单的软件安全观,并利用说明性的举例,来生成软件安全应用要求列表。
1引言
    在20多年前,在网络系统中对包括编码控制、存储控制、信息流控制、推断控制以及备份和恢复程序等保护数据的的方法的研究科学的过程中,Denning[22]定义了数据安全。其中,编码控制也得到了学术界的高度重视,重要强调包含密钥的经典数学方法的数据处理算法-例如针对机密性的加密算法,以及信息鉴定代码和实时鉴定的数字签名算法,数据来源鉴定,完整性或者认可。应用密码学包含了附加的实际的应用价值---例如数据鉴定和关键管理协议,以及执行事项。完全安全的基础架构现在已应用到实际中,例如Kerberos认证服务[56]和更强大的(或相当复杂的)密钥以及PKI(Public-Key Infrastructure)的证书管理系统。
    然而,为网络信息系统安全性服务远不止提供保护数据,已编码的密钥材料,和证书。通过客户服务器体系结构,从基于主框架结构的计算机基础结构到当今因特网的全局连通性的转变,导致了大批的新的安全威胁和挑战。确实,准确定义“security”的含义是一件很困难的事-普遍认同的是保护“具有价值的东西”并"对抗具有威胁的操作"。
    更正式的定义(例如,查阅Bishop[5])安全通常的定义相近与安全政策,它定义了典型的与存储资源(内存读/写,CPU,通讯端口,输入输出设备,等等)有关的动作,如允许或不允许。方法,工具或者执行政策的程序被称为安全机制。一个系统或者处在允许状态或者处在不允许状态;这些状态通常是在理论上精确定义的。攻击是指对安全构成威胁的操作(向不安全状态的运动)。安全的目标是阻止,探测和揭示攻击。
     实际中,当然,这种情况时相当模糊的。政策是利用经常不准确的和不完全的一般的语言进行描述如什么用户,管理员和入侵者被允诺去进行操作。典型的是他们既没有被明确的表达也没有描述---部分原因是对安全标准的要求的错误理解,和准确描述的困难。甚至专家也发现对一特定环境下的准确定义所有相关的威胁(安全的隐患)是一项有挑战的工作。由于他们庞大的数量和不断变化的性质,事实上定义很难总是与相关的类型的攻击,攻击的层次,可探测执行的细节以及复杂的保护机制相符合。
     在本文中,我们将利用一部分章节来详细阐述文章的架构,其中特别关注应用安全,软件保护,和与商业实务相关的软件安全。我们一直在寻找,使软件保护和它的错综复杂的关系的能被容易地理解一种更好的方式,并将我们自己更好的定位,来改善软件安全。这就使得对the state of the art 中的攻击工具和方式研究成为必要。最后,本文内容结构安排如下。在第2节中,我们分析总结出三种不结构的安全,其中每一种类型都在0、4应用安全中起着重要的作用。第三节讨论了实际的威胁的模型。第四节考虑了软件攻击的方式以及入侵攻击是如何发展起来的。第五节,对入侵攻击者的使用的工具进行研究。第六节提供了为阐述软件保护的特定的说明性的例证。第七节总结出软件应用的安全观,并列出了特定软件安全的必须条件。第八节,最后总结得出结论。
2 应用安全和结构类型
我们通常将应用安全定义为针对威胁(潜意识地包含现在未知的)的软件应用保护。我们详细阐述如下。通过软件应用(察看第七节),我们不能将我们仅仅限制在OSI1层―7感觉层122222(例如,察看[54])的应用,也不能只研究客户机上的终端用户应用。从我们的观念出发,应用安全包括,要求或者依赖于具有内在联系的三种不同结构的安全,如下所示:
1、数据安全 这种安全主要关注的保护数据的可靠性和完整性,特别是在数据传输和存储过程中数据安全(上面是cf.Denning对数据安全的定义)。我们注意到

2、网络安全。我们将其视为网络资源,设备和服务(包括了带宽,可连接性和平台)的保护(包括可存储,有效性和完整性)的科学和研究。同时,我们认为网络安全机制包括了:防火墙,入侵检测系统(IDS),提供对设备可控性的系统,和改善拒绝服务(DOS)以及分布式DOS(DDOS)攻击的机制
3、软件安全。我们将其定义为保护软件(包括软件中数据)避免未经授权的使用,修改,分析或者开发(cf.[[62,33,60]);也可参看程序安全[5,Ch.29]。我们也利用“软件安全”这个非正式的术语(参照下面的讨论),来讲述安全性质和软件应用内在的安全性(在保护软件免受相关攻击的意义上来说的)。
当有的时候软件保护是一个可以与拷贝安全互换的术语[e.g[27,29]],我们的对其的定义不同。从我们的观点看,软件保护包含一个广泛集合有准则,方法和技术,它们可用来改善软件安全,即提供更有力的保护对抗从缓存的溢出[66]到逆向工程和调试[20]等威胁。因此我们将拷贝保护仅视作软件保护的一个应用;其他的例子的最终目标是阻止未授权的软件应用,和内容保护:禁止对软件所处理大批数据的未授权使用,例如音乐文件,视频或音频数据流。这里未授权使用是合法软件制造者的有意提供以外的使用。
我们将软件保护区别于代码安全,因为代码安全所提供了狭窄或者区域特别功能性的安全。代码安全是应用的一部分,通常是指提供了安全的功能性,例如授权给一个用户,服务器,机器或者其他的硬件例如CD。(网络安全软件-包括病毒扫描,防火墙,入侵检测系统合其他的周期兴保护-大量地包括了代码安全,但在应用直到他们自己。)
更特殊地是,依照我们的观点,应用包括了三种软件:功能性代码(它完成了基本的目标),错误处理代码,和安全代码。与后者相比,我们将软件保护视为强制性将现存的软件捆绑在一起,改变它的内在结构或属性-类似于在沙子,砂砾和水中添加水泥来从三个其他容易分割的部分制造出单片集成电路板。然而安全代码在整个安全设计中起着举足轻重的作用,它本身最容易受攻击;软件保护最理想的是保护软件本身免受攻击。
总之,软件安全依赖于安全代码和软件保护。更深一步讲,依赖于威胁模型(第三节),应用代码而不只是安全代码也许也需要软件保护。
现已有许多软件保护技术和方法。这些能分为以下主要几类:软件困惑,软件篡改阻止,差异性,评分方案(例如,水印标志),结点锁定方案,时间限制方案,等等(查看第七节)。了解更详细的信息,查看最近的研究[4,20,60]。
3 软件威胁模型
存在大量的针对软件所基于的系统安全威胁。现实中,没有系统能保证是百分百的“总体安全”;我们对攻击的了解是不完全的,同时新的攻击不断地出现。甚至在理想的情况下,在任何时候我们仅仅只能及时注意到可能的威胁的一部分,并且所有这些威胁,都能担保被阻止,因为设计一个对每一个已知威胁都是安全的系统耗费太大。其中一些威胁被激发和成功的可能性几乎为零;其他一些即使运行成功,或者所造成的损失也是很小,或者对于攻击者来说来实施攻击花费太大,尽管理论上是可能实现的。在实际中的目标是,利用针对相关威胁进行有效防御的成本最低。
3.1何为威胁模型
一个威胁的模型是指设计好的能对抗威胁一个系统,这个系统考虑了相关不同类型攻击者的本性(包括了攻击的方法和资源-例如技术,工具,源头,地理位置),以及其他的环境假设和条件。相关问题包括:”那个资源需要保护,来避免哪个特定恶意操作?”回答这样的问题需要冒着犯错的危险:分析威胁和系统的漏洞;评估潜在的损失;以及估计特定攻击和他们成功的机率。这个威胁模型,应当在系统得设计过程发挥着作用,并且应当设计一个安全模型来展示系统是如何来对抗相关威胁的。
下面将会很清晰展现?里,威胁模型是基于一定的假设(假设不一定总是准确),环境条件(它也许总是时刻变化的),不完全的判断,和不能确定的估计。针对软件应用威胁模型的品质依赖于它所反映的与应用运行的环境的真实程度,以及它实际所属威胁的类型。与精确的科学不同的,这是一门不断渐进的艺术,并且几乎总是一个迭代过程来适应更好的认知,新的威胁和变化的条件。
当在威胁的模型也许准确地反映真实性的情况下,在标题为The Internet Threat Model,Rescorla[49,p.1]声明了两个主要关于许多Internet安全的假设协议包括SSL: (1)协议终结点(例如,客户和服务机)的安全;以及(2)通讯联系是总体来说是对攻击控制来说是由漏洞的(例如,监听,信息修改,信息入侵)。接下来的,就是译解密码者的模型,这对信息的安全在敌对的环境下不安全的连接上传输。然而,这清晰的说明假设(1)不再有效因为Internet crica 2003,有大量恶意程序使得大量的计算机的安全性受到威胁(例如,在2001年7月,由于代码Red 蠕虫crica)。正如早期所注意的,在许多地方应用安全都被正式提出了,这个标准的用密码编写的终结点假设却失败了。当然显而易见密码应用血并不能解决所有的软件应用安全问题。例如,一个1998年美国的研究机构的报告[52,p.110]说明了在问题的咨询处中所有问题的少于15%的问题才能利用密码应用学解决的。
3.2三个基本的威胁模型(攻击的类型)
一个全面的攻击模型也许能包含任何或者以下所描述的情况。
a)        网络威胁模型
大量的软件应用是与网络连接-例如浏览器,邮件客户端,文字处理应用程序和电子制表软件。这些软件都是主动的病能提供通过网络与其他网络应用进行连接。这样的应用对远程国外的攻击是脆弱的,因为它们能直接处理从远程传输的数据。这里这个目标应用假定内嵌在主机中(硬件加软件),这是市可信赖的,并且在可信赖的实体(例如,个人运行应用,或者一个主体的应用服务实体)控制中。典型的软件安全主要关注以下内容包括:缓存溢出检测[66];协议攻击检测一个协议的正常性质(例如,[11,6]);和恶意代码[35,65,58]允许未授权的使用和/或者对应用,数据和硬件的外来入侵。攻击者的目标一般典型包括获得应用电脑特权来运行恶意代码,例如装载其他的攻击,消耗资源,或者搜索信息。
b)        内在的威胁模型
无论是在网络中或者硬件运行目标应用中,这里攻击者有一定的权利。软件安全关注内容包括软件隐私,局部的检测来实现特权,以及盗取内嵌在软件或者软件处理的信息。攻击的目标主要是或者设备的使用特权级别使用,或者盗取或者篡改数据或应用。
c)        不确定的主机威胁模型
在应用运行在一个不确定的主机的假设下,应用手所遭受的攻击来自于自己本身-例如操作系统,内核,其他的应用,硬件等等。攻击者被认定是在一定局部区域的和享受着完全特权,包括不限制的运行代码,和安转以及额外的软件或硬件攻击工具。这个白箱攻击内容要求特定的软件保护技巧[13],并不同于黑箱攻击模型(在这里攻击仅能通过输入输出观察出来)和边路攻击模型(这里攻击只能从程序的执行的副效应观察出来)。软件安全内容包括了:数据和应用的盗版,未签证使用和数据和应用的随意篡改,和软件内嵌数据和智能属性的盗取。攻击的目标又“自由的内涵”(移除所有限制或者表面的控制),自由的使用软件(移除拷贝保护或者对序列号的要求)信息盗窃,和数据和程序的未注册使用。

注意:当成功的内在的攻击也许能导致目标计算机的妥协,这些攻击也许能演变为一个不能信赖的主机(查看第八节的相关论述)。
表一总结了一部份这些模型之间的主要差别。其他的显著的特性包括:可能的工具的类型,流行的攻击类型,和攻击的目的(这直接与软件安全所关注的相关的)。在表一每个威胁模型的基础上,提供应用安全需要使用这三个结构类型(数据安全,网络安全,和软件安全)的安全机制。在不确定的主机模型内,一个例外:网络安全保护是不相关以及标准的数据安全机制提供仅是静态数据保护。
4 软件攻击
攻击者也许通过许多方法来实现他们的目的。4.2节讨论了采用直接方法攻击。4.3小节则说明了自动攻击。4.4小节则回顾了在实施大范围攻击的步骤。我们就从有关术语的记录开始。
4.1专业术语:黑客,解密高手和外壳
对于安全研究员,我们所指的是那些试图挫败安全策略或安全机制的作为攻击者的人。这就是作为一个无偏的术语来说-攻击的动机可能是虚荣心(例如,突破产品开发商的测试或者研究员为了修复产品而进行的漏洞扫描),或者其他(例如,恶意的闯入原因或“兴趣”)。
跟踪电脑技术协会(cf.[48,47,28]),我们所指的黑客是对低层变成细节和如何能延伸编程功能性很熟悉的电脑高手。我们通常认为其具有正面的涵义(对于有些来说则是具有贬义含义)。相反,我们所指的破解高手是指那些闯入计算机系统,即通常是指钻了安全机制漏洞或挫败安全机制的阻止。黑客通常以拥有伦理道德标准而自豪,然而软件破解高手则是一些滥用他们拥有的技术技能,来获得未授权的使用软件的破坏者和小偷。大众媒体大多数通常使用“hacker”术语来代替“cracker”;我们认为这种做法令人疑惑,正因为如此我们采用上面的定义。
还有一些相关的术语值得一提。在实际中,道德黑客(安全专家)是指那些具备高超技能的并有系统用户的特权许可的技术专家对电脑系统进行入侵,来检测系统的安全性和漏洞。还有两个额外的专业术语从西方电影归结而来,带白帽子的“good guys”和黑帽子的“bad guys”.术语白帽(善意黑客),是一个褒义词,通常指那些利用他们的技能到达合法目的人,例如计算机安全专家进行系统研究或者漏洞检测来更好的对抗攻击。相反,术语黑帽,则是个贬义词,是指那些没有经过个人允许为了达到非法目的而入侵他人电脑的人-因此这个与cracker意义相近。最后,灰帽(灰帽)是指那些善意的黑客所作的研究超过他们通常的研究范围。
4.2 直接攻击
分析和篡改数据通常包括直接利用目标代码,以及一个有技能的攻击者,以及足够的资源和时间在已被控制的环境下操作代码。我们通常将直接攻击定义为利用从局域拷贝的目标代码进行直接利用一个局域网的机器进行攻击。然而在一些情况下,这些攻击可能包含通过网络连接的攻击;关键点是指是否有人的直接参与。注意在下面的威胁模型中,代码和环境的攻击方式是直接的。
我们现在考虑软件分析和篡改的区别,以及静态和动态的方式。
i)        分析与篡改。尽管软件逆向工程(参看5.1)也许是攻击者的最终目标,但通常这是篡改的必须的一步,这要求攻击者首先充分了解一个应用的内在机理。当逆向工程可以致使发现关键和弱点时,这些代码可以被随意修改如果攻击者愿意的话。
ii)        分析:静态与动态。静态分析是指软件和数据分析当它在运行时。它通常包含可执行文件的静态汇编(参看5.3节)以及后面的检测。相反,动态分析,是在正在执行的代码上操作,包括跟踪数据值和控制流。通常它要比静态分析的要强大的多,但所需要花费的时间要长一些,更复杂,并且需要与目标代码相同的平台。
iii)        篡改:静态与动态。软件篡改攻击也许可能是静态或动态的。一个静态的篡改攻击在非执行的状态下进行修改;然后修正后的代码执行。如果一个软件的完整性机制合适的话(例如,操作系统利用代码签名技术来认证完整性,或者代码自身来检验[36,12,32]),然后完整性检测机制必然会出错当修正后的软件执行时。动态篡改攻击修正在执行过程中内存中数值(数据或代码)。攻击也许能被激发或被动态地检测,在一个隔离的平台下,然后转向在目标平台进行静态估计。一个经典的篡改攻击目的是软件版权或者未授权的在违反证件文件允许条件下,文件的拷贝。
存在许多更多复杂直接攻击。我们仅在这里与数据安全和密码应用相类似的一部分攻击。
软件微分分析(SDA)是强有力的攻击通常一个或许多攻击者都使用它。将两个或者更多的不同版本的应用进行比较来确认那些部分被修改-例如在不同的产品发布版本间(在不同的时间)。或者不同的用户(每个用户都不同)。那些开发出移除拷贝限制的工具的破解高手利用SDA来快速隔离已改变的保护技术,更新他们开发的工具使得对新版本也有效。
协同攻击是指多个攻击者共享分析,来利用不同的技术来对系统进行逆向分析,以及收集用户的数据或知识的帮助来挫败安全机制(参看上面的SDA)。
重新攻击来截取程序状态然后存取它。例如,一个用户下载电影也许在三天内观看压缩的文件(例如电影连接网站)。整个机器的状态备份利用磁盘映象工具(例如,www.powerquest.com/driveimage/)。只要原始的数字权利被使用,用户利用备份机器状态来存储他它们。
4.3自动攻击
只要直接攻击产生一个研究来证明其已经工作,通常攻击者的目标是使得攻击自动化,这样他就能大范围地进行配置,包括其他人。网络病毒和蠕虫就是自动攻击的威力的见证。病毒包括三个部分:探索,感染部分和有效载荷。探索引擎,利用已发现的或已知的弱点,来执行直接攻击作为第一次攻击。感染部分则是自我繁殖,提供自动机制。有效负载代码则是完成毁坏任务。自动攻击也可以用来拷贝保护规划,例如CSS利用DVDs[23,42],以及不安全光盘,用来从PC机游戏中移除安全拷贝保护的软件工具。
自助攻击也是有限制的。他们通常必然要大量的实现假设考虑目标代码。特别的标记和偏移量用来确定应用修改或注入值。如果一个特殊的目标代码引例在关键地方式不同的-例如由于很小的版本差别-自动攻击将在这种情形下失败。正是因为这个原因,自动攻击通常是脆弱的。自动攻击也同时在分析方面也是有限的,并且通常不能通过反馈工作。然而,自动攻击在今天网络内的效率很高,因为应用的安装的基础是同性质的。
4.4软件攻击是如何进行的
软件攻击通常以下列步骤形式进行的。
1.        分析。这是实施攻击的第一步,尽管在一些情况它可能是最终目标-例如在具有智能性质的盗窃过程中(如,详细了解通讯算法)。
2.        篡改。这一步包括了修改代码和/或数据来进行与原来意愿不同的操作。一些攻击仅包括篡改;通常篡改发生在一些分析之后。
3.        自动化。这一步通常包括开发和利用软件工具来制造或利用攻击软件使目标应用复杂化。在一些情形下目标应用重新被散布(例如,受拷贝限制的PC游戏的版权)。利用内容保护机制,对于一般的自动攻击性质对所有的利用这个机制的内容保护总是有效的。(例如DVDCSS[23,42])在电脑病毒或蠕虫情况下,攻击的目标是为了获得特权,造成毁坏,或者在许多设备上消耗资源。
4.        散布。这允许其他人利用自动攻击。攻击也可通过网站和消息栏来进行人为的传播。一些攻击通常被一些集团认为很有价值并没有传播。电脑蠕虫病毒包括自我繁殖机制。
5软件攻击工具
像许多领域的安全,也许比许多安全更甚,软件安全是在那些制造和配置安全机制的人与渴望击败他们的攻击者之间的较量。为了提供更强大的保护,或者(更悲观)至少知道许多现存的保护技术是不够的原因。最后,这部分简单地讨论了软件逆向工程 ,攻击技术,和攻击工具。
5.1软件逆向工程
软件逆向工程-假设给定的一个应用程序的二进制代码,分析程序和在其内部恢复细节-是一个开放的研究领域,对于那些对软件保护,和挫败它的人(查看[45,24]从不同的角度和资源)来说。逆向工程的主要部分包括反汇编和反编译。反编译包括了高水平的程序提取和语义结构从二进制程序中。反汇编则从机器码中重构汇编语言指令;它可以看作反编译的一个步骤,或整个过程中一步。安全类型的语言的逆向工程如Java要比其他许多语言要容易的多,像C和C++,它们的二进制包含没有类型的数据信息,以及它们的可执行文件在运行规划时程序代码和数据混合存放的。
攻击者通过利用各种手段来关注安全漏洞,包括:典型的产品卖家的宣布的升级补丁(攻击者然后寻找那些没有安装补丁德目标);以及独立研究者的宣布的类似的安全通告(没有补丁);以及独立的发现。为了不法目的的逆向工程-例如重要材料(如竞争者的保密规则或进程)的盗窃,软件篡改,或漏洞的探索与发现-通常由许多先进的程序分析工具来实施的,这些工具也能用来进行合法的软件开发,例如调试,软件工程,和了解恶意软件。在这两种情况下,对于逆向工程有用的功能包括如下:
1、在控制状态下的,动态程序行为的观测,包括详细地指令单步执行。
2、从二进制代码的恢复的汇编代码和更高级别的提取;
3、二进制代码的动态修改和结果行为的观测
最后,在黑客进行逆向工程中利用基本的工具包括:调试器,反汇编工具,反编译工具和计数器。在下面对每一个工具进行逐个讨论,同时还介绍一下其他的攻击工具。
5.2调试器
调试器([17])跟踪运行过程中程序的逻辑和数据值。通过设置断点以及运行过程中代码和数据的修正,这都使得调试器对于揭露缺陷和提出性能指标,以及逆向工程和对于应用的篡改都是一个有用的工具。SoftICE[40]是针对微软Windows环境和奔腾系列处理器一款功能强大的调试器(运行在电路板上程序);黑客通过编写插件来扩展它的功能和提供跟广泛的黑客应用信息。其他的对于Windows环境调试器有免费的OllyDbg[41]。GNU工程调试器,GDB[25,55],是针对UNIX系统最流行的调试器
5.3 反汇编工具
反汇编工具通常是在进行逆向工程中针对可执行程序利用第一件工具,无论是合法目的(如,自动代码优化)或者其他目的。反汇编工具允许二进制代码分析,以及将其映射为汇编语言(附加的反编步骤也可以将其恢复为更高级的语言)。可以通过API调用的确认使得代码导航变得更加容易,创建和显示调用列表,和生成备有标示的汇编语言列表。对于更广泛的背景和在线工具的指示,可以查看程序转移Wiki[46]钟反汇编论文; 对于最近的反汇编研究 有Schwarz[53]的论文。
IDA Pro[21],被认为是对于C来说最复杂并最经济的可用的反汇编工具,支持市场上的各种处理器;他也是唯一能对C++代码进行二进制反汇编的工具。IDA Pro是一款交互式的反汇编器-它依赖于人工干涉来进行控制目标二进制的反汇编(它实际是反汇编工具和调试器的组合)。许多其他的工具也具有反汇编功能。例如免费的GNU工程OBJDUMP;它也具有显示内嵌的调试信息。
最近Linn和Debray[37]已经研究了打断程序的静态反汇编的技术。目标是反汇编更加困难。它们的技术是相互补充并正则的软件魅惑的。(注意:在静态反汇编中,目标二进制是在没没有执行程序的情况下被反汇编的;整个文件都被反汇编了。在动态反汇编忠,通过一个附加的工具通常是调试器,监视程序执行,利用执行指令的确认,被执行的程序片段才能被反汇编。)
5.4 反编译器
机器代码反编译有一个悠久的历史, 但少量商业工具存在为非类型安全语言如C 和C++ [ 14,15,8 ] 。参看详细的背景,看反编译的历史在程序变革Wiki [ 46 ] 。最先进的C反编译工具是现在的开源的昆士兰(澳洲) 二进制译者, UQBT [ 16,18 ], 虽然显现了出为二进制翻译; 参见Vinciguerra 等[ 63 ] 为能力一个简要的总结。中间平实代码的反编译意欲运行在一台虚拟机(即Java bytecode 或微软的C # CLR - 共同语言运行时间)更加容易, 并且一定数量的商业和免费软件存在- 即SourceAgain [ 2 ], 一decompiler 为Java 组归档。Obfuscators 为这些语言, 譬如Dotfuscator [ 44 ], 微软Net obfuscator 和压紧机,典型地集中于节目优化由减少标志名字, 但不要防止严肃的反向工程学。
5.5仿真器, 模拟器和欺骗攻击
仿真器和欺骗攻击一种方法,而不是直接地窜改的方法以应用, 利用一个接口或扮演据推测被信任的系统组分。作为一个例子, 一个昂贵的CAD 节目被保护与应付挑战从应用证明dongle 的dongle
存在。在反向工程以后接口和反应机制,攻击者用一个被窜改的司机替换dongle 的司机提供同样接口但以一看齐的dongle 。这类似一个(动态)重新攻击。
因而仿真器和模拟器(即[ 38,64,43 ]) 允许薄脆饼干看齐里应用准备运行的环境在。仿真器可能被使用存储状态信息(象可以调试器), 帮助重赛攻击(cf. 上面) 。他们并且被使用创造真正驱动绕过拷贝保护计划-或例子, 酒精120% [ 3 个] 牌子1:1 CD/DVD 复制和允许仿效。
我们注意那从防御姿态, 确定是否仿真器运行是一个富挑战性问题[ 31 ] 。
5.6其他的软件攻击工具
在工具之外被注意以上, 各种各样其他是常用。反调试
技术(参见即[ 62, pp.416-418 ], [ 10 ]), 被使用为软件保护和由计算机病毒作家, 由定制的工具典型地击败。内存转储和记忆推力公共事业是可利用的, 包括为二进制那被包装与压缩或编成密码封皮。例如, DumpPE转储内部结构ofWindows95 和NT PE orPortable 可执行文件
(即exe 、dll, dbg); PE 探险家工具[ 30 ] 打开, 拆卸, 分析,并且编辑PE 文件。ProcDump 是一普遍的Win32 unpacker, 为夺取的数据从任意存储单元。不吉利的东西编辑譬如Hackman [ 59 ] 被使用一起编结代码或修改可执行文件 。FileMon [ 67 ] 是公共事业监测和显示实时文件系统活动, 即允许看法怎样应用用途文件和DLLs (为视窗环境; 并且一个版本为Linux) 。大多这些工具是可利用的通过合法的渠道(释放或在合理的费用); 被盗版的版本和具体裂化的工具可利用的打开许多网站、海报栏和网上网络。
6 软件保护实例
这个部分为软件保护提供说明例子。这些部份地刺激软件安全要求被列出在.7 。为另外例子, 看见即D'Anna 等[ 4, .2.2 ] 。
A)        网络服务攻击
网络应用由蠕虫攻击利用缓冲溢出弱点安装背后在主设备.随后,攻击者击穿网络和有充分的特权在(现在untrusted) 主人。评论: 这是对输入软件的一次遥远, 动态窜改的攻击在应用。软件保护技术应该被用于消灭缓冲溢出弱点(即由应用输入数据的适当的检验) 。
B)密码算法保护
在一个高度安全环境里在国防部信号处理集中, 歹徒雇员拷贝一种重要应用一个软盘或USB 象征、告密者它在设施之外和出售它对外国代理。在a外国实验室(以应用现在在一个untrusted 主人), 应用被分析恢复算法允许他们的用途在竞争系统,或获取知识击败原始的机制。
评论: 内部数据和算法要求另外的软件保护。这次知情人攻击有某些涵义为软件安全:因为攻击者不能能复制确切的平台应用奔跑, 动态分析也许不是可适用的。一可能防御是解码应用在词条的一个密码封皮一个合法的密码或机器标识符。
C)CD拷贝保护
个人计算机游戏出版者, 卖比赛在CDs, 意欲, 用户也许安装赛在许多机器, 但能只演奏它当一合法的CD (一个被买, 对创造由复制) 在驱动。安全代码在比赛软件检查光盘有效性, 靠各种各样的认证技术利用区别在之间(a) 怎么光盘驱动器读CDs, 并且(b) 怎么拷贝是烧。一个最近技术测量时差读确定轨道(时间是同样为所有CDs 被盖印从同样玻璃大师, 但玻璃大师轻微地不同; 那被使用为一空白的CD 不同从那被使用为比赛) 。认证机制比较价值从测量算法(安全代码) 以一个已知值(数据) 。评论: 比赛居住在一个untrusted 主人。软件保护是要求保护光盘认证代码免受被绕过。攻击者也许设法修改政策制定代码总退回"合法"; 或反向工程测量算法为了(a) 看齐它, 或(b) 导致一个新有效值为被复制的CD 。
D)在服务器上的数据安全
知情人窃取信用卡信息一个被编成密码的数据库被存储在服务器, 以及应用过去经常访问数据库。应用代码包含密码钥匙解码数据。(攻击者愿望恢复信用卡信息但它太是困难动态地做这在服务器。) 攻击者静态地分析应用恢复钥匙使用编成密码数据库, 然后写a公共事业解码数据库。
评论: 数据库使用数据保密保证机密信息。应用的 输入了软件多么必须曾经解码数据并且操作它。关键材料由使用输入软件应该被保护掩藏价值(作为一个极小值, 从静态分析) 。
E)动态数据保护
用户安装一个工具在间接或在服务器, 扫描记忆为RSA私用密钥, 由他们的大小和随机性[ 61 ] 容易地辨认。候选人钥匙被存放在记录文件和被核实使用公开密钥证明。一旦服务器的私用密钥被证实, 服务器可能被欺骗。评论: 应用需要软件保护, 包括防止对关键材料的动态分析。
F)DVD内容保护
关于DVD 的视频数据被编成密码以美满的扰乱系统
(CSS) 算法[ 23,42 ] 。当DVDs 最初被发射了, CSS 和钥匙被使用是秘密的。意向是唯一的DVD 机知道算法和有正确钥匙的当中一个能解码数据。一公司实施了算法(安全代码) 并且一把合法的DVD 钥匙数据一种无保护的应用, 运行在一未被信任的主机(aPC) 。算法和秘密钥匙是相反被设计和被提取破解.其他人然后能给解密DVDs 写他们自己的软件。评论: 软件保护应该向安全被申请了代码提供算法和数据掩藏。

G)数字式权利管理(DRM) 。
DRM 系统允许用户下载数字式内容对个人计算机和演奏它有限的时间。故意地, DRM 服务器只寄发数据到合法的球员;当请求被做, 球员必须证实自己(安全代码) 。这设定服务器球员对话键保证被编成密码的内容是没拦截在运输(数据保密) 。服务器检查如果球员有被取消在送内容之前。球员保护了认证的关键材料使用软件保护。球员并且检查本身为窜改, 和某些系统组分(为表现限制) 不是窜改有抵抗性。在查出窜改, 它警告服务器在美满的请求期间。废止或窜改的侦查可以要求用户软件升级[ 34 ] 。内容被演奏被解码使用美满的钥匙, 被回报和即被显示在屏幕产品。水印增加并且美满的决议轻微地被贬低在rendering 期间。评论: 软件保护是需要的保护提交算法,并且掩藏美满的钥匙、被解码的内容, 和水印应用。被回报的内容不掩藏, 仅被考虑的更加低值的对攻击者。球员必须是堵塞器抗性防止"外流o?" 内容。
7软件安全: 应用看法和要求
一个被简化的看法是, 应用是运行在硬件和的软件操作数据。一张更加现实的图片是, 应用依靠反过来依靠仁和设备驱动程序通信的一个操作系统与hardware.The 应用也许被分布横跨各种各样的服务器和通信横跨网络的客户。因而在广义, 所有软件、参与的硬件和数据是应用的一部分, 和是因而介入在应用安全。这里我们将观看所有软件, 包括系统和操作系统软件, 作为应用, 和包括软件跑在所有类型设备- 不仅终端用户个人计算机, 每sonal 通信设备和个人数字助理, 而且服务器,开关、防火墙、路由器, 和其它网络设备。
简化的模型图1 代表应用作为软件
处理那输入数据, 操作它和输出数据。软件介入了在输入- 输出处理是卓越的从数据。在敌对环境, 应用的输入- 输出数据也许理想地被保护数据保密技术; 软件处理这样数据也许被硬化软件保护技术。模型分离内部数据入锁上材料和其它内部数据。帮助定义软件安全要求(下面), 以下应用组分被突出。
1. 输入软件。读数据入一个内部表示法的软件处理。如果输入被加密保护, 输入软件
功能包括数据解密、正直证明, 等。
2. 产品软件。给产品媒介的软件(即RAM 写数据,CD, 插口) 在处理以后。如果输出数据加密保护, 产品软件功能然后包括资料加密, 正直处理, 等。应用经常是节目链子, 但典型地在
一些指向一些数据必须输出在"清楚", 譬如对屏幕。
3. 内部数据。数据由应用初始化, 数据读入内部表示法, 或数据被计算在应用(即中间体之内
价值或为准备产品) 。
4. 关键材料。特点是上限值的一个子集内部数据对攻击者。尤其, 这也许包括密码钥匙(即必须保留私有或正直必须被保证),安全重要数据和与特权相关的数据。
上述看法, 和第6节 例子, 刺激以下, 我们提出作为应用的高级软件安全要求一张部份名单。它满足要求软件保护, 也许并且要求安全代码。
1. 巩固输入。认证, 检验, 数据掩藏和正直输入对应用。(例子方法: PKI, 区域检查, 型
检查, 数字签名, 检查总和, 白色箱子密码学。)
2. 巩固产品。认证和掩藏应用数据投入。(例子方法: 相似与那些为巩固输入。)
3. 数据掩藏。掩藏的数据和关键材料从直接存取(.4.2)静态或动态分析。(例子方法: 迷惑, 代码转换, 封皮, 及时解密, 自已修改代码, 技术反对分析用工具加工即反调试器技术。)
4. 算法掩藏。掩藏的算法和计算从直接存取(.4.2) 静态或动态分析。(例子方法: 看数据掩藏。)
5. 堵塞器抵抗。做软件diffcult 修改或窜改。这可以        包括静态和动态堵塞器侦查即查出正直侵害软件应用或它的操作环境的任何组分。(例子方法: 许多那些列出了为数据掩藏上述; 代码签字和动态自检技术。)
6. 损伤缓和。前摄和易反应的战略为保护折襞基础设施或产品安装信息库一旦应用减弱。(例子方法: 废止、翻新, 软件变化。)
8 结束语
多数攻击在今天互联网环境里利用软件。许多这些导致攻击者取得对应用的施行环境控制。
这带领未信任的主机威胁模型(.3) 进入相关性, 导致二观察。1) 威胁固有在这个模型必须演讲在应该是软件设计过程的一部分为applica- 的安全模型tions 。2) 软件保护该当重要性在软件产业。应用单一地包括功能代码, 错误处理代码, 和安全code(.2), 没有软件保护硬化这些代码小组, 典型地未达到在安全级别上被要求为保险柜, 可靠的基于软件的系统。
我们相信软件产业, 和因而我们的工业界(依靠
沉重在基于软件的系统), 是在一个危险地飘摇的状态由于
攻击者利用软件弱点和窜改的舒适
基于软件的系统。软件产业、它的安全专家, 和学术研究团体, 丢失地面在争斗反对攻击者
计算机软件系统。新拷贝保护计划是残破的在他们的商业introduction;new watermarking 计划之后迅速打破
由薄脆饼干;堆栈 溢出攻击继续控制被报告的电脑名单软件事件; 并且损伤由计算机蠕虫和病毒造成继续每年增加。我们相信, 有学会从薄脆饼干社区。工具和资源线上可以得到, 自由地分享并且由薄脆饼干支配, 象数字是两个震惊和令人烦恼,被盗版的软件应用和知识产权枣树(包括电影并且音乐) 。这要求对研究的更加巨大的关注对软件安全-产业和学术界- 和对可利用的软件保护的更加巨大的用途技术。这提出巨大的机会为安全研究员。
软件安全是一个高度学科领域, 涉及专家从
不同的区域计算的科学和设计有: 编程语言, 操作系统, 编译器, 软件工程, 网络安全和
密码学。我们期待, 以后10 年, 许多前进将来
从成功地跨过几个这些之中领域的研究员。
致谢:第二位作者承认加拿大的全国科学并且工程研究委员会(NSERC) 为资助NSERC 发现格兰特和他的加拿大研究椅子在网络和软件安全。
参考文献
1. C. Adams, S. Lloyd, Understanding Public-Key Infrastructure (2nd edition),
Macmillan Technical, 2002.
2. Ahpah Software Inc. (Moutainview, California), http://www.ahpah.com/.
3. Alcohol Soft Development Team, http://www.alcohol-soft.com/.
4. L. D’Anna, B. Matt, A. Reisse, T. Van Vleck, S. Schwab, P. LeBlanc, “Self-
Protecting Mobile Agents Obfuscation Report”, Network Associates Labs Report
#03-015, 30 June 2003.
5. M. Bishop, Computer Security: Art and Science, Addison Wesley, 2003.
6. D. Bleichenbacher, “Chosen Ciphertext Attacks against Protocols Based on
RSA Encryption Standard PKCS #1”, Advances in Cryptology ? CRYPTO’98,
Springer-Verlag LNCS 1462 (1998), pp.1?12.
7. CAIDA (Cooperative Association of Internet Data Analysis), CAIDA Analysis of
Code-Red,http://www.caida.org/analysis/security/code-red/,visited5Dec.2003.
8. G. Caprino, http://www.backerstreet.com/rec/rec.htm/, “REC - Reverse Engi-
neering Compiler”, accessed 29 December 2003.
9. CMU Software Eng. Inst., Definition of Software Risk Management, accessed 5
Dec. 2003, http://www.sei.cmu.edu/programs/sepm/risk/definition.html.
10. S. Cesare, “Linux Anti-debugging Techniques (Fooling the Debugger)”, Jan. 1999,
http://www.uebi.net/silvio/linux-anti-debugging.txt, accessed 29 Dec. 2003.
11. CERT Advisory CA-1996-26 Denial-of-Service Attack via ping (“Ping of Death”),
http://www.cert.org/advisories/CA-1996-26.html, accessed 29 Dec. 2003.
12. H. Chang, M. Atallah, “Protecting Software Code by Guards”, pp.160?175, Proc.
1st ACM Workshop on DRM (DRM 2001), Springer-Verlag LNCS 2320 (2002).
13. S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot, “White-Box Cryptography and
an AES Implementation”, Proc. 9th International Workshop on Selected Areas in
Cryptography (SAC 2002), Springer LNCS 2595 (2003).
14. C. Cifuentes, Reverse Compilation Techniques, Ph.D. thesis, Queensland Univer-
sity of Technology (Australia), Dept. of Computing Science, 1994.
15. C. Cifuentes, K.J. Gough, “Decompilation of Binary Programs”, Software ? Prac-
tice and Experience, vol.25 no.7 (July 1995), pp.811-829.
16. C. Cifuentes, M. Van Emmerik, “UQBT: Adaptable Binary Translation at Low
Cost”, IEEE Computer vol.33 no.3 (March 2000), pp.60-66.
17. C. Cifuentes, T. Waddington, M. Van Emmerik, “Computer Security Analysis
through Decompilation and High-Level Debugging”, Workshop on Decompilation
Techniques, pp.375-380, 8th IEEE WCRE (Working Conf. Rev. Eng.), Oct.2001.
18. C. Cifuentes, M. Van Emmerik, N. Ramsey, B. Lewis, “Experience in the Design,
Implementation and Use of a Retargetable Static Binary Translation Framework”,
Jan.2002, http://research.sun.com/techrep/2002/smli tr-2002-105.pdf.
19. F.Cohen,“OperatingSystemProtectionThroughProgramEvolution”,Computers
and Security vol.12 no.6, 1 Oct. 1993, pp. 565?584.
20. C.S. Collberg, C. Thomborson, “Watermarking, Tamper-Proofing, Obfuscation -
Tools for Software Protection”, IEEE Trans. Soft. Eng., vol.28 no.6 (June 2002).
21. DataRescue Inc. (Li`ege, Belgium), IDA Pro 4.6 Disassembler and Debugger, site
accessed 29 Dec. 2003, http://www.datarescue.com/idabase/.
22. D. Denning, Cryptography and Data Security, Addison Wesley, 1982.
23. Ed Felton, 28 November 2001, Declaration in Support of Motion for Sum-
mary Judgement, in DVDCCA v. McLaughlin, Bunner, et al., Case No. CV?
786804, Superior Court of the State of California, County of Santa Clara, U.S.A.,
http://www.e?.org/IP/Video/DVDCCA case/20011128 felten decl.html.
24. Fravia’s pages of reverse engineering (cracker’s viewpoint), site accessed 29 Decem-
ber 2003, http://fravia.anticrack.de/.
25. GNU Project, GDB: The GNU Project Debugger, site accessed 29 December 2003,
http://www.gnu.org/software/gdb/documentation/.
26. GNU Project, objdump binary utility, site accessed 29 December 2003,
http://www.gnu.org/software/binutils/manual/html node/binutils toc.html/.
27. O. Goldreich, R. Ostrovsky, “Software Protection and Simulation on Oblivious
RAMs”, Journal of the ACM, vol.43 no.3 (May 1996), pp.431?473.
28. V. Golubev, “White, Grey and Black Hackers Hats”, 28 Jun. 2003,
http://www.crime-research.org/eng/news/2003/06/Mess2803.html, accessed 29
Dec. 2003, Computer Crime Research Center web site.
29. J. Gosler, “Software Protection: Myth or Reality?”, Advances in Cryptology ?
CRYPTO’85, Springer-Verlag LNCS 218 (1985), pp.140?157.
30. HeaventoolsSoftware(Vancouver,B.C.,Canada),PE Explorer utility,siteaccessed
29 Dec. 2003, http://www.heaventools.com/.
31. R. Kennell, L.H. Jamieson, “Establishing the Genuity of Remote Computer Sys-
tems”, Proc. of 12th USENIX Security Symposium (August 2003), pp.295-310.
32. B. Horne, L. Matheson, C. Sheehan, R. Tarjan, “Dynamic Self-Checking Tech-
niques for Improved Tamper Resistance”, pp.141?159, Proc. 1st ACM Workshop
on Digital Rights Management (DRM 2001), Springer LNCS 2320 (2002).
33. M. Howard, D.C. LeBlanc, Writing Secure Code, 2nd ed., Microsoft Press, 2002.
34. M. Jakobsson, M.K. Reiter, “Discouraging Software Piracy Using Software Aging”,
pp.1?12, Proc. 1st ACM Workshop on Digital Rights Management (DRM 2001),
Springer-Verlag LNCS 2320 (2002).
35. D.M. Kienzle, M.C. Elder, “Recent Worms: A Survey and Trends”, pp.1-10 in [51].
36. G.H. Kim, E.H. Spa?ord, “The Design and Implementation of Tripwire: A File
System Integrity Checker” (Feb. 1995), pp.18?29, Proc. 2nd ACM Conference on
Computer and Communications Security (1994).
37. C. Linn, S. Debray, “Obfuscation of Executable Code to Improve Resistance to
Static Disassembly”, pp.290-299, Proc. 10th ACM Conference on Computer and
Communications Security (ACM CCS 2003), Wash. D.C., Oct. 2003 (ACM Press).
38. P.S. Magnusson, M. Christianson, J. Eskilson et al., “Simics: A full system simu-
lation platform”, IEEE Computer vol.35 no.2 (Feb.2002), pp.50-58.
39. A.J. Menezes, P.C. van Oorschot, S.A. Vanstone, Handbook of Applied Cryp-
tography, CRC Press, 1996 (5th printing 2001, with corrections), full text at
http://www.cacr.math.uwaterloo.ca/hac/.
40. NuMega (Braeside, Victoria, Australia), SoftICE 4.0 kernel mode debugger,
http://www.microway.com.au/compuware/softice.stm, accessed 29 Dec. 2003.
41. O. Yuschuk (Olly), OllyDbg analysing debugger for MSFT Windows (binary code
to assembler), http://home.t-online.de/home/Ollydbg/, accessed 29 Dec. 2003.
42. Openlaw DVD/DeCSS Forum, Frequently Asked Questions (FAQ), accessed 29
Dec. 2003, http://cyber.law.harvard.edu/openlaw/DVD/dvd-discuss-faq.html.
43. plex86.org, Plex86 x86 Virtual Machine Project, http://plex86.org, site accessed
29 December 2003.
44. Preemptive Solutions Inc. (Cleveland, Ohio), Dotfuscator, site accessed 29 Dec.
2003, http://www.preemptive.com/.
45. Program-Transformation.Org, Reengineering Wiki, http://www.program-
transformation.org/twiki/bin/view/Transform/ReengineeringWiki, site accessed
29 December 2003.
46. Program-Transformation.Org, The Program Transformation Wiki, De-
Compilation page, site accessed 29 December 2003, http://www.program-
transformation.org/twiki/bin/view/Transform/DeCompilation/.
47. Red Hat, Inc. (2002), Red Hat Linux 9: Red Hat Linux Security Guide, Chapter 2 ?
Attackers and Vulnerabilities, http://www.redhat.com/docs/manuals/linux/RHL-
9-Manual/security-guide/, accessed 29 December 2003.
48. E.S.Raymond,JargonFileversion4.4.6,http://www.jargon.8hz.com/,accessed29
December 2003. (See also print version: Eric S. Raymond (ed.), The New Hacker’s
Dictionary, third edition, 1996, MIT Press.)
49. E. Rescorla, SSL and TLS: Designing and Building Secure Systems, Addison Wes-
ley, 2001.
50. T. Sander, C.F. Tschudin, “Protecting Mobile Agents Against Malicious Hosts”,
pp.44?60, Mobile Agents and Security, G. Vigna (ed.), Springer LNCS 1419 (1998).
51. S. Savage, ed., Proceedings of the 2003 ACM Workshop on Rapid Malcode
(WORM’03), Washington D.C., 27 October 2003, ACM Press.
52. F. Schneider (ed.), Trust in Cyberspace, report of the Committee on Informa-
tion Systems Trustworthiness, Computer Science and Telecommunications Board,
(U.S.) National Research Council (National Academy Press, 1999).
53. B. Schwarz, S. Debray, G. Andrews, “Disassembly of Executable Code Revisited”,
pp.45?54, Proc. 9th IEEE WCRE (Working Conference on Reverse Engineering),
Nov.2002, Richmond, VA.
54. W. Stallings, Data and Computer Communications, 7th ed., Prentice Hall, 2004.
55. R.M.Stallman,R.H.Pesch,S.Shebsetal.,Debugging with GDB: The GNU Source-
Level Debugger, GNU Press, 2002. Online version: ninth edition, for GDB version
5.1.1, Jan. 2002, http://www.gnu.org/manual/gdb-5.1.1/, accessed 29 Dec. 2003.
56. J.G. Steiner, C. Neuman, J.I. Schiller, “Kerberos: An Authentication Service for
Open Network Systems”, Proc. Winter 1988 USENIX Conf., pp.191-201.
57. M. Stytz, J. Whittaker, “Caution: This Product Contains Security Code”, pp.86-
88,IEEE Security & Privacy vol.1no.5(Sept./Oct.2003),IEEEComputerSociety.
58. Symantec, “What is the di?erence between viruses, worms, and Trojans?”,
http://service1.symantec.com/SUPPORT/nav.nsf/pfdocs/1999041209131106,Oc-
tober 1 2003.
59. Technologismiki (Athens, Greece), Hackman Hex Editor 7.05, Hackman Disassem-
ber 8.01, Hackman Debugger, http://www.technologismiki.com/en/index-h.html,
accessed 29 Dec. 2003.
60. P.C. van Oorschot, “Revisiting Software Protection”, pp.1?13, Proc. of 6th Inter-
national Information Security Conference (ISC 2003), Bristol, UK, October 2003,
Springer-Verlag LNCS 2851 (2003).
61. N. van Someren, A. Shamir, “Playing Hide and Seek with Keys”, pp. 118?124,
Financial Cryptography’99, Springer-Verlag LNCS 1648 (1999).
62. J. Viega, G. McGraw, Building Secure Software, Addison Wesley, 2001.
63. J. Vinciguerra, L. Wills, N. Kejriwal, P. Martino, R. Vinciguerra, “An Experimen-
tation Framework for Evaluating Disassembly and Decompilation Tools for C++
andJava”,Proc.10thIEEEWCRE(WorkingConferenceonReverseEngineering),
Victoria, Canada, Nov.2003.
64. VMWare Inc., VMWare Workstation (virtual machine), http://www.vmware.com,
site accessed 29 December 2003.
65. N. Weaver, V. Paxson, S. Staniford, R. Cunningham, “A Taxonomy of Computer
Worms”, pp.11?18 in [51].
66. J. Wilander, M. Kamkar, “A Comparison of Publicly Available Tools for Dynamic
Bu?er Overflow Prevention”, pp.149-162, Proc. of NDSS’03 (Internet Society):
Network and Distributed System Security Symp., Feb. 2003, San Diego.
67. Winternals Software (Austin, Texas), FileMon monitoring tool, site accessed 29
December 2003, http://www.winternals.com.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
67篇参考文献。。。。文章的作者够BT的。。
2007-1-3 13:29
0
雪    币: 615
活跃值: (1212)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
楼主辛苦了!

参考文献很多,第一次见到.大开眼界了.
2007-1-3 16:38
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
4
这个翻译的有些郁闷.
2010-10-26 15:49
0
游客
登录 | 注册 方可回帖
返回
//