计算机软件分析系统的制作方法

文档序号:6376141阅读:170来源:国知局
专利名称:计算机软件分析系统的制作方法
技术领域
本发明涉及计算机软件分析系统、客户端计算机、控制客户端计算机的操作的方法以及用于操作客户端计算机的程序。
背景技术
近年来,用于分析软件的技术已日趋成熟。例如,典型的技术涉及从源代码输出质量相关数据以及在提高质量的活动中利用该数据。这样的技术是普遍适用的,以及鉴于最近趋势走向是注重软件的内部质量,据预测,将开发各种各样这样的技术和服务。在软件分析技术中,对于软件分析本身需要大量的计算机资源,但是没有使这些资源关于特定软件持续操作。此外,在软件被传送的情况下,所传送的数据本身遵守源代码(文本数据),以及与图像数据和移动图像数据相比,所涉及的数据量很小。鉴于这些特征,软件分析非常有助于朝向云计算(基于网络的计算机资源的有效利用)的最近趋势。出于这个原因,所认为的是,使用基于云的软件分析系统来分析源代码的应用将在未来得到广泛使用。这样的软件分析包括一个布置,其中客户端将源代码传送给服务器,以及服务器执行分析并且将分析结果发送回客户端(参见专利文献I);以及另一个布置,其中客户端生成质量测量数据并且将该数据传送给服务器,以及服务器基于该质量测量数据来生成评估数据并且将该评估数据发送回客户端(参见专利文献2)。另一方面,混淆(obfuscation)被认为是维护源代码的安全性的手段。出于阻碍第三方软件分析的目的,混淆通常将加扰形式应用到软件代码到将不会改变其行为的程度。例如,反向利用易于理解的名称附加到源代码描述中的实践来用难以理解的名称替代这些名称,从而使分析复杂化(参见专利文献3)。此外,存在用于以下的技术阻止包括在程序中的技术保密的泄漏(参见专利文献4);在软件开发期间对协议的遵守进行监视(参见专利文献5);识别程序问题等(参见专利文献6)以及在对象级实现隐藏(参见专利文献7)。[专利文献I]日本专利申请特开No.2004-240477[专利文献2]日本专利申请特开No.2001-75928[专利文献3] USP 6,102,966[专利文献4]日本专利申请特开No.2004-133793[专利文献5]日本专利申请特开No.2003-131875[专利文献6]日本专利申请特开No.2003-114813[专利文献7]日本专利申请特开No.2003-280754然而,将源代码传送给基于云的服务器意味着通过公共网络传送源代码。尽管对源代码进行加密是可想到的,但是分析服务器对源代码进行解密的事实意味着服务器将得知源代码的内容。在专利文献I中描述的现有技术将不确保源代码的安全性。在专利文献2中阐述的系统具有多个问题。例如,要求客户端具有质量测量功能,以及必须对在客户端和服务器之间的特定交换数据格式达成协议。另外,没有考虑已从服务器被发送回的数据与原始源代码的详细核对。此外,在期望添加分析所需的软件信息的情况下,必须修改客户端。在分析所需的软件信息已被添加的情况下,源代码的安全性受到影响。在专利文献3中描述的布置具有某些问题,即没有考虑与服务器/客户端型分析系统的联接的事实以及没有考虑混淆名称的恢复的事实。此外,专利文献4至7中描述的布置,没有考虑能够维护源代码的安全性的服务器/客户端型分析系统。

发明内容
本发明的第一目的是,提供能够维护源代码的安全性的服务器-客户端软件分析系统。第二目的是,使客户端计算机不必具有分析装置。第三目的是,使得没有必要对用于将源代码从客户端计算机传送到服务器计算机的特定数据格式达成一致。例如,第三目的是,对其进行布置,使得通过使服务器计算机不必具有用于实现源代码安全性的特定装置,服务器计算机能够与没有考虑源代码安全性的系统相组合。第四目的是,对其进行布置,使得能够针对原始源代码容易地检查从服务器计算机发送回的数据。第五目的是,对其进行布置,使得对分析内容的添加和改变能够基本上由服务器计算机应对。第六目的是,对其进行布置,使得即使对分析装置进行添加或改变,也可以维护源代码安全性。第七目的是,对其进行布置,使得能够容易地组合各种已存在的软件混淆装置。本发明涉及包括客户端计算机和服务器计算机的计算机软件分析系统。客户端计算机包括计算机软件混淆设备(计算机软件混淆装置),该计算机软件混淆设备用于使计算机软件混淆以经受分析;以及混淆的计算机软件传送设备(混淆的计算机软件传送装置),该混淆的计算机软件传送设备用于将已由计算机软件混淆设备混淆的计算机软件传送给服务器计算机。服务器计算机包括计算机软件分析设备(计算机软件分析装置),该计算机软件分析设备用于对已从客户端计算机的混淆的计算机软件传送设备传送的混淆的计算机软件进行分析,并且生成混淆的分析结果数据;以及分析结果数据传送设备(分析结果数据传送装置),该分析结果数据传送设备用于将已由计算机软件分析设备生成的混淆的分析结果数据传送给客户端计算机。客户端计算机进一步包括恢复设备(恢复装置),该恢复设备用于将已从服务器计算机的分析结果数据传送设备传送的混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。本发明还提供构成上述计算机软件分析系统的客户端计算机。具体地,该客户端计算机包括计算机软件混淆设备,该计算机软件混淆设备用于使计算机软件混淆以经受分析;混淆的计算机软件传送设备,该混淆的计算机软件传送设备用于将已由计算机软件混淆设备混淆的计算机软件传送给服务器计算机;接收设备(接收装置),该接收设备用于接收混淆的分析结果数据,该混淆的分析结果数据通过在服务器计算机中对从混淆的计算机软件传送设备传送的混淆的计算机软件进行分析来生成并且从服务器计算机进行传送;以及恢复设备,该恢复设备用于将已由接收设备接收到的混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。此外,本发明提供适于上述客户端计算机的操作控制方法。具体地,本发明提供控制客户端计算机的操作的方法,包括以下步骤混淆设备使计算机软件混淆以经受分析;混淆的计算机软件传送设备将已由计算机软件混淆设备混淆的计算机软件传送给服务器计算机;接收设备接收混淆的分析结果数据,该混淆的分析结果数据通过在服务器计算机中对从混淆的计算机软件传送设备传送的混淆的计算机软件进行分析来生成并且从服务器计算机进行传送;以及恢复设备将已由接收设备接收到的混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。本发明还提供用于控制上述客户端计算机的操作的程序。可以采用其中提供存储在记录介质中的这样的程序的布置。按照本发明,在客户端计算机中使待被分析的计算机软件混淆。将混淆的计算机软件从客户端计算机传送给服务器计算机。当将混淆的计算机软件从客户端计算机传送给服务器计算机时,服务器计算机对混淆的计算机软件的质量进行分析并且生成混淆的分析结果数据。将混淆的分析结果数据从服务器计算机传送给客户端计算机。将混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。由于已使在服务器计算机中获取的分析结果数据混淆,所以可以阻止计算机软件的内容在服务器计算机端被查明。因此,可以维护计算机软件的安全性。由于在服务器计算机中执行对计算机软件的分析,所以不必向客户端计算机提供计算机软件分析设备的功能。不必向服务器计算机提供特殊布置以便维护计算机软件的安全性。由于客户端计算机已使计算机软件混淆,所以其还可以使混淆的分析结果数据相对容易地恢复。由于已在服务器计算机中执行分析,所以对分析内容的添加和改变可以由服务器计算机独自应对。由于在混淆状态下对计算机软件进行分析,所以即使添加或改变分析设备,也可以维护计算机软件的安全性。也可以对各种已存在的软件混淆设备进行组合。客户端计算机可以进一步包括输出设备(输出装置),该输出设备用于输出已由计算机软件混淆设备混淆的计算机软件。客户端计算机可以进一步包括分析控制数据传送设备(分析控制数据传送装置),该分析控制数据传送设备用于将分析控制数据传送给服务器计算机,该分析控制数据控制在服务器计算机的计算机软件分析设备中对混淆的计算机软件的分析。在这种情况下,服务器计算机的计算机软件分析设备通过利用从客户端计算机的分析控制数据传送设备传送的分析控制数据来对混淆的计算机软件进行分析。客户端计算机可以进一步包括指派设备(指派装置),该指派设备用于指派在分析控制数据中的需要混淆的分析控制数据;以及分析控制数据混淆设备(分析控制数据混淆装置),该分析控制数据混淆设备用于使指派设备所指派的分析控制数据混淆。作为示例,在这种情况下,客户端计算机的分析控制数据传送设备将由分析控制数据混淆设备混淆的分析控制数据和尚未被混淆的分析控制数据中的至少一个传送给服务器计算机。计算机软件分析系统可以进一步包括分析结果控制数据输入设备(分析结果控制数据输入装置),该分析结果控制数据输入设备用于输入控制由客户端计算机所接收到的分析结果数据的分析结果控制数据;以及分析结果数据控制设备(分析结果数据控制装置),该分析结果数据控制设备用于基于已从分析结果控制数据输入设备输入的分析结果控制数据,来控制混淆的分析结果数据或恢复设备所恢复的分析结果数据。客户端计算机可以进一步包括混淆方法选择设备(混淆方法选择装置),该混淆方法选择设备用于从多个混淆方法之中选择一个混淆方法。作为示例,在这种情况下,客户端计算机的计算机软件混淆设备通过混淆方法选择设备所选择的混淆方法来使计算机软件混淆。客户端计算机的计算机软件混淆设备可以删除计算机软件的一些或可以混入无关软件,并且使计算机软件的剩余部分混淆。客户端计算机可以进一步包括分析项指派设备(分析项指派装置),该分析项指派设备用于指派将由服务器计算机的计算机软件分析设备分析的项;混淆方法决定设备(混淆方法决定装置),该混淆方法决定设备用于从多个混淆方法之中决定与分析项指派设备所指派的分析项相对应的混淆方法;以及可移除部分决定设备(可移除部分决定装置),该可移除部分决定设备用于在基于由混淆方法决定设备决定的混淆方法的混淆被执行的情况下,决定计算机软件中的可移除部分。作为示例,在这种情况下,客户端计算机的计算机软件混淆设备从计算机软件删除可移除部分决定设备所决定的部分,并且使计算机软件的剩余部分混淆。作为示例,在已在计算机软件中与每一个分析项和混淆方法关联地规定了可移除部分的情况下,混淆方法决定设备将决定与计算机软件中的可移除部分相对应的混淆方法,该混淆方法已与分析项指派设备所指派的分析项关联地被规定。作为示例,当相同的计算机软件被混淆时,服务器计算机的计算机软件混淆设备输出相同混淆的计算机软件。服务器计算机可以进一步包括分析结果数据存储设备(分析结果数据存储装置),该分析结果数据存储设备用于与计算机软件关联地存储已在计算机软件分析设备中恢复的分析结果数据;以及比较设备(比较装置),该比较设备用于将已在计算机软件分析设备中通过对从计算机软件传送设备传送的混淆的计算机软件进行分析来生成的分析结果数据与已与所生成的分析结果数据的计算机软件关联地存储在分析结果数据存储设备中的分析结果数据进行比较,并且输出该比较的结果。客户端计算机可以进一步包括混淆方法存储设备(混淆方法存储装置),该混淆方法存储设备用于与计算机软件关联地存储已由客户端计算机的计算机软件混淆设备执行的混淆方法。作为示例,在这种情况下,当客户端计算机的计算机软件混淆设备关于新的计算机软件执行混淆时,它使用已与该计算机软件关联地存储在混淆方法存储设备中的混淆方法来使计算机软件混淆。作为示例,客户端计算机的混淆方法存储设备与计算机软件关联地存储已由客户端计算机的计算机软件混淆设备实现的混淆方法和分析项。在这种情况下,客户端计算机的计算机软件混淆设备可以进一步包括分析项传送设备(分析项传送装置),该分析项传送设备用于在计算机软件混淆设备关于新的计算机软件执行混淆时,将已与新的计算机软件关联地存储在混淆方法存储设备中的分析项传送给服务器计算机。根据结合附图进行的下面描述,本发明的其他特征和优势将是显而易见的,其中整个本发明的附图,相同的附图标记指示相同或相似部件。


图1图示计算机软件分析系统的概述;图2是图示客户端计算机的电气配置的框图;图3是图示客户端计算机所执行的处理的流程图4是图示服务器计算机所执行的处理的流程图;图5图示原始计算机软件的示例;图6图示混淆的计算机软件的示例;图7图示恢复表的示例;图8图示混淆的分析结果数据的示例;图9图示恢复的分析结果数据的示例;图10是图示客户端计算机所执行的处理的一部分的流程11是图示服务器计算机所执行的处理的流程图;图12图示原始计算机软件的示例;图13图示分析控制数据混淆表的示例;图14图示分析控制数据的示例;图15图示混淆的计算机软件的示例;图16图示分析控制数据的示例;图17图示程序元素/分析控制数据的示例;图18和19图示分析结果的示例;图20和21是图示客户端计算机所执行的处理的流程图;图22图示原始计算机软件的示例;图23图示分析项列表的示例;图24图示混淆方法列表的示例;图25至27图示混淆的计算机软件的示例;图28和29图示分析结果的示例;图30是图示用于决定混淆方法的处理的流程图;图31图示混淆方法/删除项指定表的示例;图32图示分析项/可移除项指定表的示例;图33是图示用于决定混淆方法的处理的流程图;图34图示在分析项和混淆方法之间的对应关系;图35是图示客户端计算机所执行的处理的一部分的流程36是图示客户端计算机所执行的处理的流程图;图37图示表示软件分析设置的历史的数据的示例;图38图示表示过去软件历史的数据的示例;以及图39图示分析比较数据的示例。
具体实施例方式现将参考附图详细描述本发明的实施例。图1图示根据本发明的实施例的计算机软件分析系统。计算机软件分析系统包括能够经由诸如因特网的网络(但是网络不限于因特网)相互通信的客户端计算机I和服务器计算机20。图2是图示客户端计算机I的电气配置的框图。服务器计算机20的电气配置与客户端计算机I的电气配置基本上相同。
客户端计算机I的总体操作由CPU 2控制。客户端计算机I包括显示单元3 ;用于存储规定的数据的存储器4 ;用于与服务器计算机20通信的通信单元5 ;输入单元6,诸如键盘KD-ROM驱动器7 ;硬盘10 ;以及用于访问硬盘10的硬盘驱动器9。通过将CD-ROM 8插入CD-ROM驱动器7,读取已被存储在CD-ROM 8上的数据和计算机软件。稍后描述的用于控制操作的控制程序已被存储在CD-ROM 8上。通过将该控制程序安装在客户端计算机I中,执行稍后描述的操作。当然,控制程序可以被记录在另一个记录介质上,而不是被存储在⑶-ROM 8上。已经由因特网传送的控制程序可以使用通信单元5来接收并且被安装在客户端计算机I中。图3是图示客户端计算机I所执行的处理的流程图,以及图4是图示服务器计算机20所执行的处理的流程图。本实施例对计算机软件(源代码)质量进行分析,诸如代码行数、内聚力、复杂性和连通性,以及在服务器计算机20中执行对这样的质量的分析。在客户端计算机I中以在服务器计算机20中不能查明分析的结果这样的方式,执行对计算机软件的混淆,以及将混淆的计算机软件从客户端计算机I传送给服务器计算机20。首先,将待经受分析的原始计算机软件(源代码)输入到客户端计算机I (图3中的步骤31)。如上所述,待分析的计算机软件已被存储在⑶-ROM 8上,并且可以通过从⑶-ROM8对其进行读取来输入到客户端计算机I。经由因特网传送的计算机软件可以使用通信单元5来接收,并且然后被输入到客户端计算机I。图5是原始计算机软件的示例。图5中的计算机软件的第一行表明类,以及第二行是函数的示例。当将经受分析的原始计算机软件被输入到客户端计算机I时,使计算机软件混淆(图3中的步骤32)。混淆可以利用众所周知的方法,诸如用随机字符串替换在计算机软件中使用的标识符。还生成用于将混淆的计算机软件恢复成在混淆之前占优的计算机软件的恢复表(图3中的步骤32)。图6是混淆的计算机软件的示例。图5中所示的原始计算机软件与图6中所示的混淆的计算机软件的比较清晰示出图5中所示的原始计算机软件的第一行的名称“Shape (形状)”已被转换成图6中所示的混淆的计算机软件中的字符串“Zall2ay”。类似地,图5中的原始计算机软件的第二行的函数 “Result Movepoint (int x, int y) ” 已被转换成图 6 中的字符串 “kop89 S5df5f41 (intsdf j, int jsll),,。图7是恢复表的示例。恢复表可以通过将图5中所示的原始软件和图6中所示的混淆的计算机软件进行比较来生成。恢复表的左边的列指示包含在图5中所示的原始计算机软件中的程序元素。恢复表的右边的列指示包含在图6中所示的混淆的计算机软件中的程序元素。在混淆之前和之后的程序元素可以通过将恢复表的左边的列中的字符串与右边的列中的字符串进行比较来查明。将理解的是,可以通过使用恢复表,将混淆的计算机软件恢复成在混淆之前占优的原始计算机软件。
当原始计算机软件被混淆时,在显示单元3的显示屏上显示图6中所示的混淆的计算机软件(图3中的步骤33)。当检查在显示屏上显示的混淆的计算机软件时,用户从输入单元6输入传送命令。作为响应,将混淆的计算机软件从客户端计算机I传送给服务器计算机20 (图3中的步骤34)。在用户确认计算机软件已被混淆之后,可以将混淆的计算机软件传送给服务器计算机20。当接收了从客户端计算机I传送的混淆的计算机软件(图4中的步骤41)时,服务器计算机20执行用于对已被接收的混淆的计算机软件的质量进行分析的处理(图4中的步骤42)。质量分析处理可以采用众所周知的方法。作为质量分析处理的结果,获取表示例如混淆的计算机软件的复杂性的分析结果数据。由于关于混淆的计算机软件执行质量分析处理,所以分析结果数据也将具有混淆的形式。图8是混淆的分析结果数据的表的示例。混淆的分析结果数据表的左边的列指示混淆的计算机软件的程序元素。表的右边的列指示分析结果(复杂性)。根据混淆的分析结果数据的表,将理解的是,程序元素“Zall2ay”的复杂性是24,以及程序元素“kop89 S5df5f41 (int sdf j,intjsll) ”的复杂性是7 ο由于已关于混淆的计算机软件执行了质量分析,所以关于分析结果与哪种类型的程序元素有关不能查明,因此,确保了计算机软件的安全性。将混淆的分析结果数据从服务器计算机20传送给客户端计算机I (图4中的步骤43)。当客户端计算机I接收到从服务器计算机20传送的混淆的分析结果数据(图3中的步骤36)时,使用恢复表(参见图7)来恢复混淆的分析结果数据中的至少一部分(图3中的步骤37)。图9是指示恢复的分析结果数据的分析结果数据表的示例。恢复的程序元素被包含在分析结果数据表的左列中。作为分析结果的复杂性被包含在该表的与程序元素相关联的右列中。由于程序元素已被恢复,所以每一个程序元素的复杂性可以被辨识。客户端计算机I如通过在显示屏上显示所恢复的分析结果数据来输出所恢复的分析结果数据(图3中的步骤38)。图10至19图示本发明的另一个实施例。在本实施例中,将用于在服务器计算机20中控制计算机软件的质量分析的分析控制数据从客户端计算机I传送给服务器计算机20,以及由服务器计算机20基于该分析控制数据来控制计算机软件的质量分析。图10是图示客户端计算机I所执行的处理的流程图,以及图11是图示服务器计算机20所执行的处理的流程图。将原始计算机软件输入到客户端计算机(图10中的步骤51)。图12是原始计算机软件的示例。将这样的原始计算机软件输入到客户端计算机
I。不用说,图12中所示的原始计算机软件是部分缩略的。接着,客户端计算机I的用户将分析控制数据输入到客户端计算机I(图10中的步骤52)。分析控制数据控制在服务器计算机20中执行的质量分析。分析控制数据包括分析项,诸如包含在计算机软件中的程序元素行数以及程序元素的分组。接着,关于已被输入的分析控制数据执行用于识别混淆是否是必要的处理(图10中的步骤53)。用于识别分析控制数据的混淆是否是必要的处理使用分析控制数据混淆识别表。图13是分析控制数据混淆识别表的示例。分析控制数据混淆识别表的左边的列包含分析控制数据的名称,以及该表的右边的列包含混淆的必要性。尽管在左边的列中指示了“分析项(ANALYTICAL ITEM)”、“分析组(ANALYTICAL GROUP)”和“分析组组分(ANALYTICAL GROUP COMPOSITION)”,但是不用说,该表也包含关于除这些数据项外的分析控制数据,混淆是否是必要的。“分析项”指定分析的目标,以及“分析组”以“分析组组分”的程序元素将被组成“分析组”这样的方式来控制计算机软件。图14是在混淆之前的分析控制数据的表的示例。假设“行数(NUMBER OF LINES)”已被指派为“分析项”,“ConcreteShape”已被指派为“分析组”,以及“Circle (圆形)”和“Rectangle (矩形)”每一个已被指派为“分析组组分”。当参考图13中所示的分析控制数据混淆识别表时,可以确定“行数”的混淆是不必的,以及“Circle”和“Rectangle”的混淆是必要的,因为“分析项”的混淆是不必的,以及“分析组”和“分析组组分”的混淆是必要的。当执行用于识别分析控制数据的混淆是否是必要的处理时,执行原始计算机软件的混淆,以及通过相同处理,同样执行被识别为需要混淆的分析控制数据的混淆(图10中的步骤54)。不用说,也生成了恢复表。图15是混淆的计算机软件的示例。由于图12中所示的原始计算机软件的混淆,原始计算机软件的“Shape”、“Circle”和“Rectangle”被改变成图15中所示的混淆的计算机软件的“Zall2ay”、“jkidLL”和“654skJI”。图16是已被部分混淆的混淆的分析控制数据的表的示例。由于分析控制数据已被混淆,所以即使分析控制数据经由因特网从客户端计算机I被传送给服务器计算机20并且由第三方拦截,也能够维护分析控制数据的安全性。图17是恢复表的示例。以上述方式,通过将图12中所示的原始软件和图15中所示的混淆的计算机软件进行比较,以及将在图14中所示的在混淆之前的分析控制数据表中的控制数据的内容和图16中所示的混淆的分析控制数据表的控制数据的内容进行比较来生成恢复表。图17的恢复表的左边的列指示原始计算机软件的程序元素或分析控制数据,以及图17的恢复表的右边的列指示混淆的计算机软件的程序元素或混淆的分析控制数据。通过利用图17中所示的恢复表,可以将已被混淆的计算机软件和已被混淆的分析控制数据恢复成在混淆之前占优的数据。接着,在显示单元3的显示屏上显示混淆的计算机软件和分析控制数据(包括已被混淆和尚未被混淆的分析控制数据)(图10中的步骤55),以及按照来自用户的传送命令,将混淆的计算机软件和分析控制数据从客户端计算机I传送给服务器计算机20 (图10中,步骤56处的“是”和步骤57)。当接收了从客户端计算机I传送的混淆的计算机软件和分析控制数据(图11中的步骤61)时,服务器计算机20基于分析控制数据来对混淆的计算机软件的质量进行分析(图11中的步骤62)。通过对混淆的计算机软件的质量进行分析,以上述方式获取已被混淆的分析结果数据。将混淆的分析结果数据从服务器计算机20传送给客户端计算机I (步骤63)。图18是已被混淆的分析结果数据的示例。图18中的左边的列指示程序元素或部分混淆的分析控制数据,以及右边的列指示分析结果。使用上述恢复表来恢复如此混淆的分析结果数据。图19是恢复的分析结果数据的示例。图19的左边的列指示从混淆状态恢复的程序元素和分析控制数据,以及右边的列指示分析结果。因此,可以从客户端计算机I控制在服务器计算机20中的对计算机软件的分析。此外,由于从客户端计算机I传送给服务器计算机20的分析控制数据已被混淆,所以可以关于第三方维护更大的安全性。图20至34图示本发明的进一步实施例。图20和21是图示客户端计算机I所执行的处理的流程图。以与上述相似的方式将原始计算机软件输入到客户端计算机I (图20中的步骤71)。图22是原始计算机软件的示例。由于图22中所示的原始计算机软件尚未被混淆,所以能够查明其内容。图22中所示的原始计算机软件也是部分缩略的。客户端计算机I从分析项列表选择分析项(图20中的步骤72),并且从混淆方法列表选择混淆方法(步骤73)。图23是分析项列表的示例。通过列出待在服务器计算机20中经受质量分析的项来获取分析项列表。分析项列表包含代码的行数和复杂性。图24是混渚方法列表的不例。混淆方法列表将下述包含为混淆方法“名称转换”、“名称转换+过程清空”(执行用于名称转换和过程清空两者的处理)以及“名称转换+过程删除”(执行用于名称转换和过程删除两者的处理)。利用分析项列表和混淆方法列表来决定混淆方法。将在下面描述细节。当决定了混淆方法时,按照所决定的混淆方法使已被输入的原始计算机软件混淆(图20中的步骤74)。在这种情况下,也生成恢复表。图25至27是混淆的计算机软件的示例。图25是通过名称转换混淆的计算机软件的示例。在此,原始计算机软件的“Shape”、“Result Movepoint (int x, int, y) ”、“intr2=x*x*+y*y” 和 “ if (r2==0) ” 已被转换成“Zall2ay”、“kop89 S5df5f41 (int sdf j, intjsll)”、“int jkio99=sdfj*sdfj+jsll*jsll” 和 “if(jkio99==0) ”。图26是通过名称转换和过程清空混淆的计算机软件的示例。在此,原始计算机软件的“Shape”和“ResultMovepoint(int x, int, y) ” 已被转换成 “Zall2ay” 和 “kop89 S5df5f41 (int sdf j, intjsll) 此外,“int r2=x*x*+y*y,,和“if(r2==0)”中的每一个的处理内容已被清空。尽管由于清空,处理内容已被消除,但是行数未改变。通过清空添加了分号“;”。然而,混淆可以通过将诸如“if(false);”的无关软件添加到处理,而不是分号来实现。图27是通过姓名转换和过程删除混淆的计算机软件的示例。在此,原始计算机软件的“Shape” 和 “Result Movepoint (int x, int, y) ” 已被转换成 “Zall2ay” 和 “kop89 S5df5f41 (int sdf j, intjsll) 此外,“int r2=x*x*+y*y,,和“if(r2==0) ”中的每一个的处理内容已被删除。当将混淆的计算机软件从客户端计算机I传送给服务器计算机20时,在服务器计算机20中,以上述方式对混淆的计算机软件的质量进行分析,并且获取混淆的分析结果数据。将所获取的混淆的分析结果数据从服务器计算机20传送给客户端计算机I。当接收了从服务器计算机20传送的混淆的分析结果数据(图21中的步骤78)时,客户端计算机I对混淆的分析结果数据进行恢复来获取分析结果数据。图28是恢复的分析结果数据的示例。该数据包含代码的行数和复杂性作为分析项,以便被包括在分析项列表中,并且已关于这些分析项对质量进行了分析。例如,代码的行数是37,以及复杂性是5。接着,从分析数据删除尚未由如上所述的分析项选择处理(图20中的步骤72)选择的分析项数据(图21中的步骤80)。图29是分析结果数据的示例,其中与为尚未被选择的项的代码的行数有关的数据已被删除。因此,当复杂性已被选择为分析项,以及代码的行数尚未被选择时,从分析数据删除代码的行数数据。图30是图示用于决定混淆方法的处理(在图20中的步骤73处执行的处理)的流程图的示例。如上所述,读取图24中所示的混淆方法列表(步骤91),并且这后面是读取混淆方法/删除项指定表(步骤92)。图31是混淆方法/删除项指定表的示例。通过与混淆方法关联地存储计算机软件的将被移除和不被移除的程序元素来获取混淆方法/删除项指定表。例如,如果混淆方法是“名称转换”,则将移除程序元素的名称,但是不会移除条件语句和过程数。如果混淆方法是“名称转换+过程清除”,则将移除程序元素的名称和条件语句,但是不会移除步骤数。如果混淆方法是“名称转换+过程删除”,则将移除程序元素的名称和过程数,但是不会移除条件语句。当读取混淆方法/删除项指定表时,读取分析项/可移除项指定表(图30中的步骤 93)。图32是分析项/可移除项指定表的示例。通过与分析项关联地存储计算机软件的将被移除和不被移除的程序元素来获取分析项/可移除项指定表。例如,如果分析项是代码的行数,则将移除程序元素的名称和条件语句,但是将不会移除步骤数。如果分析项是复杂性,则将移除程序元素的名称和过程数,但是将不会移除条件语句。因此,当读取表时,可以从图32中所示的分析项/可移除项指定表查明与所选择的分析项(图20中的步骤72)相对应的可移除程序元素,以及从图31中所示的混淆方法/删除项指定表决定与可移除程序元素相对应的混淆方法。例如,如果“行数”被选择为分析项,则基于图32,名称和条件语句是可移除的,因此,从图31将“姓名转换+过程清除”决定为针对其这些程序元素是可移除的混淆方法。图33是图示用于决定混淆方法的其他处理的流程图。以与上述类似的方式,读取图24中所示的混淆方法列表(步骤101)。接着,读取分析项/混淆方法选择表(步骤102)。图34是分析项/混淆方法选择表的示例。分析项/混淆方法选择表与分析项关联地包含混淆方法。例如,如果分析项是代码的行数,则“名称转换+过程清空”和“名称转换”相互关联地被存储。如果分析项是复杂性,则“名称转换+过程删除”和“名称转换”相互关联地被存储。当读取分析项/混淆方法选择表时,根据读取的表决定混淆方法(步骤103)。例如,如果代码的行数被选择为分析项,则将“名称转换+过程清空”和“名称转换”决定为混淆方法。如果复杂性被选择为分析项,则将“名称转换+过程删除”和“名称转换”决定为混淆方法。如果代码的行数和复杂性被选择为分析项,则将“名称转换”决定为混淆方法。图35至39图示进一步实施例。该实施例利用过去历史来决定混淆方法等。图35是图示客户端计算机I所执行的处理的流程图,以及图36是图示服务器计算机20所执行的处理的流程图。首先,客户端计算机I确定表示过去的软件分析设置的历史的数据是否已被存储在计算机中(图35中的步骤111)。图37是包含表示软件分析设置的历史的数据的表的示例。表示软件分析设置的历史的数据指示过去设置的状态,诸如上述有关混淆方法的决定。第一、第二和第三列分别包含源代码(软件)的名称、混淆方法模式和分析项。通过检查这些数据项,可能的是,查明在过去关于特定软件,哪些混淆方法被执行,以及在过去质量分析关于哪些分析项被执行。例如,基于第一行,关于名称“ClassA”的源代码,能够查明关于代码的行数,模式II (“名称转换+过程清空”)的混淆方法被执行。可以执行与在过去使用的混淆处理相同的混淆处理。如果表示软件分析设置的历史的数据尚未被存储在客户端计算机I中(图35中的步骤111处的“否”),则客户端计算机I的用户执行用于设置软件分析的处理(图35中的步骤112)。以上述方式来设置分析项和混淆方法。当这个完成时,存储设置信息作为表示软件分析设置的历史的数据(图35中的步骤113)。如果表示软件分析设置的历史的数据已被存储在客户端计算机I中(图35中的步骤111处的“是”),则跳过步骤112和113的处理。接着,用户选择待分析的原始计算机软件(图35中的步骤114),以及将所选择的原始计算机软件输入到客户端计算机I (图35中的步骤115)。以上述方式,使已被输入到客户端计算机I的原始计算机软件混淆,并且生成恢复表(图35中的步骤116)。基于图37中所示的表示软件分析设置的历史的数据来决定执行哪个混淆方法。假设输入的源代码(原始计算机软件)是“ClassA”,如上所述,使用模式II (“姓名转换+过程清空”)的混淆方法来执行混淆处理。通过显示混淆的计算机软件(图35中的步骤117)并且将传送命令应用到客户端计算机1,将混淆的计算机软件从客户端计算机I传送到服务器计算机20 (图35中的步骤118处的“是”和步骤119)。当接收了从客户端计算机I传送的混淆的计算机软件(图36中的步骤121)时,服务器计算机20对过去的软件历史数据进行搜索(图36中的步骤122)。过去的软件历史数据表示服务器计算机20在过去执行的质量分析的结果。图38是包含过去的软件历史数据的表的示例。该表与源代码名称关联地包含行数和复杂性,它们是过去的质量分析的结果。如上所述,由于计算机软件已被混淆,所以其名称(源代码名称)被混淆。例如,通过使其源代码名称是“ClassA”的计算机软件混淆,源代码名称被改变成“nrBCZ12”。在图38中,行数和复杂性已与混淆的源代码名称关联地被存储在表中。接着,对混淆的计算机软件的质量进行分析(图36中的步骤123)。将通过质量分析获取的分析结果数据存储在包含过去的软件历史数据的表中(图36中的步骤124)。在与已经受质量分析的混淆的计算机软件有关的分析结果数据已被存储在过去的软件历史数据表中的情况下,该分析结果数据被重写。因此,过去的软件历史数据被更新。自然,其可以被布置,使得分析结果数据按照时间序列被存储,而不用重写。通过将通过过去执行的分析获取的分析结果数据和通过重新执行的分析获取的分析结果数据进行比较,可以查明分析结果已改变的程度。图39是包含比较数据的比较数据表的示例,该比较数据表示通过在过去执行的分析获取的分析结果数据和通过重新执行的分析获取的分析结果数据之间的比较。如上所述,通过将通过在过去执行的分析获取的分析结果数据和通过重新执行的分析获取的分析结果数据进行比较,可以查明分析结果已改变的程度。图39中的表包含指示以下的数据在过去执行的行数的分析的结果和重新执行的行数的分析的结果之间的波动;以及在过去执行的复杂性的分析的结果和重新执行的复杂性的分析的结果之间的波动。因此,可以获取与过去的分析结果的比较的结果。将混淆的分析结果数据项和表示与过去的分析结果的比较的结果的数据项从服务器计算机20传送给客户端计算机I (图36中的步骤125)。因为在不背离本发明的精神和范围的情况下,可以作出本发明的许多显然大不相同的实施例,所以应当理解的是,除在所附权利要求中限定的外,本发明并不限于本发明的特定实施例。
权利要求
1.一种包括客户端计算机和服务器计算机的计算机软件分析系统,其中所述客户端计算机包括计算机软件混淆设备,所述计算机软件混淆设备用于使计算机软件混淆以经受分析;以及混淆的计算机软件传送设备,所述混淆的计算机软件传送设备用于将已由所述计算机软件混淆设备混淆的所述计算机软件传送给所述服务器计算机;以及所述服务器计算机包括计算机软件分析设备,所述计算机软件分析设备用于对已从所述客户端计算机的所述混淆的计算机软件传送设备传送的所述混淆的计算机软件进行分析,并且生成混淆的分析结果数据;以及分析结果数据传送设备,所述分析结果数据传送设备用于将已由所述计算机软件分析设备生成的所述混淆的分析结果数据传送给所述客户端计算机;所述客户端计算机进一步包括恢复设备,所述恢复设备用于将已从所述服务器计算机的所述分析结果数据传送设备传送的所述混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。
2.根据权利要求1所述的系统,其中所述客户端计算机包括输出设备,所述输出设备用于输出已由所述计算机软件混淆设备混淆的所述计算机软件。
3.根据权利要求1所述的系统,其中所述客户端计算机进一步包括分析控制数据传送设备,所述分析控制数据传送设备用于将分析控制数据传送给所述服务器计算机,所述分析控制数据控制在所述服务器计算机的所述计算机软件分析设备中对所述混淆的计算机软件的分析;以及所述服务器计算机的所述计算机软件分析设备通过利用从所述客户端计算机的所述分析控制数据传送设备传送的所述分析控制数据来对所述混淆的计算机软件进行分析。
4.根据权利要求3所述的系统,其中所述客户端计算机进一步包括指派设备,所述指派设备用于在所述分析控制数据中指派需要混淆的分析控制数据;以及分析控制数据混淆设备,所述分析控制数据混淆设备用于使所述指派设备所指派的所述分析控制数据混淆;以及所述客户端计算机的所述分析控制数据传送设备将所述分析控制数据混淆设备混淆的所述分析控制数据和尚未被混淆的所述分析控制数据中的至少一个传送给所述服务器计算机。
5.根据权利要求1所述的系统,进一步包括分析结果控制数据输入设备,所述分析结果控制数据输入设备用于输入控制所述客户端计算机所接收到的所述分析结果数据的分析结果控制数据;以及分析结果数据控制设备,所述分析结果数据控制设备用于基于已从所述分析结果控制数据输入设备输入的所述分析结果控制数据,来控制所述混淆的分析结果数据或所述恢复设备所恢复的分析结果数据。
6.根据权利要求1所述的系统,其中所述客户端计算机进一步包括混淆方法选择设备,所述混淆方法选择设备用于从多个混淆方法之中选择一个混淆方法;以及所述客户端计算机的所述计算机软件混淆设备通过所述混淆方法选择设备所选择的所述混淆方法来使所述计算机软件混淆。
7.根据权利要求1所述的系统,其中所述客户端计算机的所述计算机软件混淆设备删除所述计算机软件的一部分或混入无关软件,并且使所述计算机软件的剩余部分混淆。
8.根据权利要求1所述的系统,其中所述客户端计算机进一步包括分析项指派设备,所述分析项指派设备用于指派将由所述服务器计算机的所述计算机软件分析设备分析的项;混淆方法决定设备,所述混淆方法决定设备用于从多个混淆方法之中决定与所述分析项指派设备所指派的分析项相对应的混淆方法;以及可移除部分决定设备,所述可移除部分决定设备用于在基于由所述混淆方法决定设备所决定的所述混淆方法的混淆被执行的情况下,决定所述计算机软件中的可移除部分;以及所述客户端计算机的所述计算机软件混淆设备从所述计算机软件删除所述可移除部分决定设备所决定的所述部分,并且使所述计算机软件的剩余部分混淆。
9.根据权利要求8所述的系统,其中可移除部分已在所述计算机软件中与每一个分析项和混淆方法关联地被规定;以及所述混淆方法决定设备决定与所述计算机软件中的所述可移除部分相对应的混淆方法,所述混淆方法已与所述分析项指派设备所指派的分析项关联地被规定。
10.根据权利要求1所述的系统,其中当相同的计算机软件被混淆时,所述服务器计算机的所述计算机软件混淆设备输出相同混淆的计算机软件。
11.根据权利要求10所述的系统,其中所述服务器计算机进一步包括分析结果数据存储设备,所述分析结果数据存储设备用于与计算机软件关联地存储已在所述计算机软件分析设备中恢复的分析结果数据;以及比较设备,所述比较设备用于将已在所述计算机软件分析设备中通过对从所述计算机软件传送设备传送的所述混淆的计算机软件进行分析来生成的分析结果数据与已与所生成的分析结果数据的所述计算机软件关联地存储在所述分析结果数据存储设备中的分析结果数据进行比较,并且输出所述比较的结果。
12.根据权利要求11所述的系统,其中所述客户端计算机进一步包括混淆方法存储设备,所述混淆方法存储设备用于与所述计算机软件关联地存储已由所述客户端计算机的所述计算机软件混淆设备执行的混淆方法;以及当所述客户端计算机的所述计算机软件混淆设备关于新的计算机软件执行混淆时,所述客户端计算机的所述计算机软件混淆设备使用已与所述计算机软件关联地存储在所述混淆方法存储设备中的所述混淆方法来使该计算机软件混淆。
13.根据权利要求12所述的系统,其中所述客户端计算机的所述混淆方法存储设备与所述计算机软件关联地存储已由所述客户端计算机的所述计算机软件混淆设备实现的混淆方法和分析项;以及所述客户端计算机的所述计算机软件混淆设备进一步包括分析项传送设备,所述分析项传送设备用于在所述计算机软件混淆设备关于所述新的计算机软件执行混淆时,将已与所述新的计算机软件关联地存储在所述混淆方法存储设备中的分析项传送给所述服务器计算机。
14.一种客户端计算机,包括计算机软件混淆设备,所述计算机软件混淆设备用于使计算机软件混淆以经受分析; 混淆的计算机软件传送设备,所述混淆的计算机软件传送设备用于将已由所述计算机软件混淆设备混淆的所述计算机软件传送给所述服务器计算机;接收设备,所述接收设备用于接收混淆的分析结果数据,所述混淆的分析结果数据通过在所述服务器计算机中对从所述混淆的计算机软件传送设备传送的所述混淆的计算机软件进行分析来生成并且从所述服务器计算机进行传送;以及恢复设备,所述恢复设备用于将已由所述接收设备接收到的所述混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。
15.一种控制客户端计算机的操作的方法,包括以下步骤混淆设备使计算机软件混淆以经受分析;混淆的计算机软件传送设备将已由所述计算机软件混淆设备混淆的所述计算机软件传送给服务器计算机;接收设备接收混淆的分析结果数据,所述混淆的分析结果数据通过在所述服务器计算机中对从所述混淆的计算机软件传送设备传送的所述混淆的计算机软件进行分析来生成并且从所述服务器计算机进行传送;以及恢复设备将已由所述接收设备接收到的所述混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。
16.—种用于控制客户端计算机的计算机可读程序,以便使计算机软件混淆以经受分析;将混淆的计算机软件传送给服务器计算机;接收混淆的分析结果数据,所述混淆的分析结果数据通过在所述服务器计算机中对所传送的混淆的计算机软件进行分析来生成并且从所述服务器计算机进行传送;以及将接收到的所述混淆的分析结果数据的至少部分恢复成在混淆之前占优的分析结果数据。
全文摘要
本发明涉及一种计算机软件分析系统、客户端计算机、控制客户端计算机的操作的方法以及用于其的操作程序。当对计算机软件进行分析时,维护源代码的安全性。为了实现这个,在客户端计算机中使待经受分析的计算机软件混淆。将混淆的计算机软件传送给服务器计算机。在服务器计算机中执行软件分析,并且将表示该分析的结果的数据传送给客户端计算机。由于表示分析的结果的数据已如此被混淆,所以在服务器计算机中不能查明计算机软件的内容。在客户端计算机中,将表示分析的结果的混淆数据恢复成原始数据。
文档编号G06F11/36GK103019929SQ20121032030
公开日2013年4月3日 申请日期2012年8月31日 优先权日2011年9月14日
发明者长濑雅也 申请人:富士胶片株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1