具有扩展的数据和用户隐私保护的存储器转储的制作方法

文档序号:6376761阅读:292来源:国知局
专利名称:具有扩展的数据和用户隐私保护的存储器转储的制作方法
具有扩展的数据和用户隐私保护的存储器转储
背景技术
即使在软件已经向用户发布以后,现代计算机软件开发商也不断改进和更新软件。如果需要,现存网络基础设施,诸如因特网,允许软件开发商迅速并频繁地将软件更新发送给用户。因特网也允许用户向软件开发商提供关于在执行软件期间可能出现的问题的反馈。这种反馈可以是通过用户的表达动作而发送的手工反馈。虽然,某些操作系统包括了错误报告系统的代理,如果用户同意用户的操作系统发送这种信息,则其可以提供自动反馈。这种反馈可以包含关于软件程序崩溃或挂起时关于操作环境的有用信息,并且允许软件开发商调查并修改该软件中的任何漏洞。
当操作系统自动发送反馈时,发送的信息可以是从计算机搜集的信息的转储,以定义在崩溃或其他性能问题时计算机的操作状态。在转储中包含存储的内容的至少部分是有用的。该信息有时被称为存储器转储,其揭示了在特定时间的工作存储器的状态。存储器转储允许软件开发商执行对于崩溃或挂起原因的调查。然而,现代计算机系统中的完全存储器转储过大,并且并非其含有的所有信息对于软件开发商是特别有用的。因此,可以仅发送存储器转储的一部分。在不同的场景中,可以发送来自不同存储量的内容。在某些场景中,错误的报告可以包含足够的存储器内容,以协助识别特定软件应用具有问题。该软件可能存在多个问题中的任意一个问题。例如,可能存在关于性能、可靠性、稳定性、安全性或兼容性的问题。这种转储有时被称为“分类优先转储”。基于对分类优先转储的分析,软件开发商可以配置错误报告系统,以搜集用于在错误报告中包含的更具体的信息。

发明内容
本文所描述的是作为错误报告系统的部分的用于从用户的计算机发送存储器转储数据的技术。存储器转储可以含有对于识别操作错误的原因有用的信息,同时减少在存储器转储数据中包含特定用户个人数据的风险。为了减少用户特定的个人数据被包含在存储器转储中的风险,含有具有个人数据的特征的数据的存储器部分,通过利用重写值将数据值重写,而被“中毒”。重写值可以被选择,以提高在识别错误原因中的存储器转储数据的值。在某些实施例中,重写值可以被选择,以允许已经被重写的存储器位置与其中信息已经被保留而未被重写的存储器位置之间的区别。在某些实施例中,具有指针特征的数据值被保留在存储器转储中而不重写,并且选择一个重写值,以便不同于可能的指针值。一个特定示例是,可以选择一个重写值,以允许其中该值已经被重写的位置与存储空指针的位置之间的区别。在某些实施例中,重写值可以被选定为被重写的数据值的预定函数。在某些实施例中,可以随机选择重写值。在某些实施例中,计算机系统使用分类优先转储引擎产生分类优先转储,以响应计算机程序崩溃或挂起。分类转储引擎的识别引擎识别具有个人信息特征的多个数据值。重写引擎以重写值来重写每个识别的数据值。重写值可能不对应于被计算机系统用作空指针值的值。一旦被产生,分类优先转储可以被发送至外部服务器。在某些实施例中,可以基于被重写的数据值,确定重写值。例如,如果被重写的数据值处于第一预定范围内,则重写引擎可以利用第一重写值来重写该数据值。相反,如果被重写的数值处于第二预定范围内,重写引擎可以利用第二重写值来重写该数据值。在某些实施例中,选择引擎确定重写值。选择引擎可以使用随机数发生器来选择各种重写值。被重写的数据值和它们相应的重写值可以被存储在追踪这些数据值如何被中毒的映射的表中。含有重写值的表的部分可以被发送至外部服务器,以提供用于分析分类优先转储的附加信息,而不会损害用户的隐私。在某些实施例中,服务器从远程计算机接收分类优先转储。分类优先转储包括指针数据,其对于分析程序的崩溃和挂起的原因是有用的。分类优先转储也可以包括潜在地表示以重写值被重写的个人信息的中毒数据值,以防止个人数据的散布。分类优先转储也可以包括空指针数据,其可区别于中毒数据,因为从来不使用空指针值使数据值中毒。
在某些实施例中,服务器接收包括用于使分类优先转储的数据中毒的重写值。通过遇到问题的程序的调用栈,可以追踪每个重写值。这可以允许软件开发商来识别初始使用数据值的程序内的函数,而不向软件开发商掲示实际数据值。当数据值具有个人信息的特征时,这保护了用户的隐私。通过执行在计算机可读存储设备上存储的指令的计算系统的处理器,可以执行用于产生、发送和接收分类优先转储的某些方法。上文是本发明的非限定性摘要,本发明仅由随附的权利要求限定。


附图并非旨在按比例绘制。在这些附图中,在各个附图中示出的每个相同或几乎相同的构件通过相同编号表示。为了清楚目的,没有在每个附图中对每个构件进行标记。在附图中
图I是其中可以将分类优先转储发送到软件开发商的示例性网络环境的简化框 图2是其中本发明的实施例可以操作的示例性计算环境的框 图3是图2的操作系统的简化框 图4是可以实施本发明的实施例的计算机系统的示例存储器的示意性图示;
图5A在表中示出了图4的示例性存储器;
图5B示出了根据本发明的一个实施例在使可能包含个人信息的数据值中毒之后图4的示例性存储器;
图5C示出了根据本发明的一个实施例在使可能包含个人信息的数据值中毒之后图4的示例性存储器;
图6示出了用于产生分类优先转储的一个实施例的示意性流程 图7示出了用于使用随机数发生器产生分类优先转储的一个实施例的示意性流程图。
具体实施例方式发明者已经认识到并理解作为错误报告系统的部分的用于搜集存储器转储的改进技术,能够在不増加用户隐私和个人信息的风险的情况下,提供用于诊断错误的显著的附加信息。为了保护隐私,如果通过错误报告系统发送的存储器转储的某些数据值具有个人信息的特征,则其可能需要中毒。“中毒”可以包括将具有重写值的数据值重写。使诸如密码或信用卡信息的个人数据中毒不可能影响软件开发商分析存储器转储数据的能力,因为个人信息很少与该分析相关。常规错误报告系统,尤其是当配置成形成分类优先转储时可以使具有个人信息的特征的任何值中毒。然而,发明者已经进一步认识到利用未模糊保留的其他信息的值使存储器转储中毒是有用的。因此,可以选择重写值以与保留的任何值不同。如特定示例,可以选择重写值以区分空指针值和中毒数据值。因此,在一些实施例中,未将空指针值用作重写值以使数据值中毒。虽然在其他实施例中,可以选择重写值,使得其不同于作为或可能作为指针或值被保留的其他类型数据的有意义值的任意值。发明者还认识到以保持关于被重写的值的信息的方式使存储器转储中毒是有用的,即使这些值不能从存储器转储恢复。因此,部分基于被重写的值,可以选择重写值。然 而,以被重写的值不能从重写值恢复的方式,可以进行该选择。在一些实施例中,因为在被重写的值和重写值之间的多对一关系,被重写的值可能不是可恢复的。例如,当重写值与这些值的各自范围相关联并且使用相同值以在各自范围中重写任何值时,这种情形可能发生。如特定示例,可以使用不同重写值识别大负数、大正数、以及其他值。例如,这种重写值指配方案可以包括对崩溃转储的全部分析,以识别指示超限错误或欠载错误的值。在一些实施例中,因为被重写的值和重写值之间的随机关系,所以被重写的值可能不能恢复。当在值和重写值之间的随机映射创建时,这种情形可能发生。这种映射在识别存储器转储中的相同值的多个实例中是有用的,并且,例如,可以用于追踪通过在调用栈上的函数传递的特定变量,而不揭示该变量的值。在其中动态地确定重写值的情形下,被选择的重写值或值可以作为错误报告的部分或者与错误报告相联合地被传递,以使得错误报告的分析容易。例如,在没有它们重写的相关值的情形下,随机映射中的随机选择值的集合可以被传递。图I示出了其中可以将分类优先转储从软件用户115发送到软件开发商135的示例性网络环境100。与软件用户115相关联的计算机系统110可以执行崩溃或挂起的程序。该程序可以是任何类型的计算机程序。例如,其可以是应用程序或操作系统程序。在一些程序中,其可以是与操作系统内核相关联的程序。但是关于其搜集错误信息的特定组件对本发明不是至关重要的。针对其搜集信息的错误类型对本发明也不是至关重要的。例如,崩溃是指出人意料终止的程序。如果程序中的错误使得内核的关键组件破坏,则程序崩溃可以使得整个计算机系统110崩溃。另一方面,挂起是当程序持续运行但是不能响应用户输入并且呈现冻结。术语“挂起”和“冻结”有时可以交换地使用。可以响应崩溃、挂起和其他适当类型的错误搜集错误信息。能以任何适当方式检测这些错误,包括使用本技术中已知的那些技术。在一些实施例中,使得信息将被搜集的错误可以是任何意外的或非计划的结果。例如,当程序遇到性能问题或不能适当响应时,错误可能发生。因为各种理由可能发生程序崩溃和挂起。例如,开发商未做出解释的不恰当数据值可能导致崩溃或挂起。例如,传送空指针可以导致崩溃。其中值超过允许其变量类型的最大值并且被解释为负值的包络错误(wrap around error),可能导致崩溃或挂起。本发明的实施例不限于崩溃或挂起的任何特定原因。当程序崩溃或挂起时,计算机系统110可以发起分类优先转储140的发生。分类优先转储140是由软件开发商135可用以分析崩溃和挂起的原因的计算机系统110的存储器的小部分转储。转储的存储器的特定部分可以包括用于保持调用栈的存储器。例如,分类优先转储140可以在大小上小于50KB。在一些实施例中,分类优先转储140可以是10-20KB。包括在分类优先转储中的存储器的特定部分能够以包括使用本领域已知的这些技术的任何合适方式选择,并且可以是任何合适大小。小的分类优先转储大小允许分类优先转储140将通过网络120快速简单地被发送。计算机网络120可以是任何类型的网络。在一些实施例中,网络120是因特网。分类优先转储可以在任何适当位置接收,适当位置在该示例中是连接到网络120的服务器150。可以将服务器150配置成从多个用户接收分类优先转储。可以将该信息聚合和处理,以利用在计算机110和相似地报告错误的其他相似计算机上执行的组件,识 别ー个或多个可能的问题。当错误与特定软件组件相关联时,可以将错误信息提供给该组件的开发商。因此,软件开发商135可以从服务器150接收错误指示。软件开发商135可以使用计算机130以访问存储在服务器150中的数据,以调查错误的来源。例如,软件开发商135可以分析通过软件的一个或多个用户115发送的ー个或多个分类优先转储140,以识别在分类优先转储140的产生中导致的崩溃或挂起的原因。在一些实施例中,软件开发商135可以确定存在要求进ー步信息和更多详细分析的软件问题。软件开发商135可以通知用户的计算机110如果相似的崩溃或挂起发生,则计算机110可以请求用户115允许将更加详细的存储器转储发送到软件开发商135。例如,可以请求用户115允许发送包括个人信息的更大存储器转储。如果用户拒绝,则更大的存储器转储不被发送。本发明的实施例不限于分类优先转储140或更大存储器转储的任何特定实现。图2示出了本发明可以实施于其上的适当计算系统环境200的示例。例如,计算环境200包括可以作为用户的计算机110的计算机210、软件开发商的计算机130或错误报告系统的服务器150。计算系统环境200仅是适当的计算环境的ー个示例,并且不是g在建议关于用途的范围或本发明的功能的任何限制。计算环境200不应被解释为具有任何依赖性,或者涉及在示例性操作环境200中示出的组件的任意一个或组合的要求。本发明利用许多其他通用目的或特定目的计算系统环境或配置是可操作的。适合本发明使用的已知计算系统、环境、和/或配置的实例包括但是不限于个人计算机、服务器计算机、手持或膝上式设备、平板电脑、移动电话、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子、网络PC、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境等。计算系统可以执行计算机可执行指令,诸如程序模块。通常,程序模块包括能够执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在其中由远程处理通过通信网络链接的设备执行任务的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于包括存储贮存设备的本地和远程计算机存储介质。
参考图2,实施本发明的示例性系统包括以计算机210为形式的通用目的计算设备。计算机210的组件可以包括但是不限于处理单元220、系统存储器230、以及将包括系统存储器的各种系统组件耦合到处理单元220的系统总线221。系统总线221可以是若干类型总线结构的任何一种,包括存储总线或存储控制器、外围总线以及使用多种总线架构的任意一种的本地总线。通过示例的方式,但是不限于,这样的构架包括工业标准构架(ISA)总线、微信道构架(MAC)总线、增强型ISA (EISA)总线、视频电子设备标准协会(VESA)局部总线、以及称为夹层总线的外围组件互连(PCI)总线。使用片上系统(SoC)也可以实施示例性系统。计算机210典型地包括各种计算机可读介质。计算机可读介质能够是计算机210能够存取的任何可用介质并且包括易失性和非易失性介质、可移动性和非移动性介质。通过示例的方式但是不限于此,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括在用于存储诸如计算机可读指令、数据指令、程序模块或其他数据的信息的任何方法或技术中实施的易失性和非易失性、可移动性和非移动性介质。计算机存储介质包括但是不限于RAM、R0M、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多用盘(DVD)或 者其他光盘存储装置、磁盒、磁带、磁盘存储器或其他磁盘存储设备、或者能够用于存储期望信息和计算机210能够存取的任何其他介质。通信介质典型地收录计算机可读指令、数据结构、程序模块或在诸如载波或其他传送机制的调制数据信号中的其他数据,并且包括任何信息传递介质。术语“调制的数据信号”指一种信号,其特征集合中的一个或多个特征以在该信号中编码信息的方式被设置或更改。通过示例的方式但是不限于,通信介质包括诸如有线网络或直接有线连接的有线介质、诸如听觉、RF、红外线和其他无线介质的无线介质。上述任何组合也应该包括在计算机可读介质范围内。系统存储器230包括计算机存储介质,其形式为诸如只读存储器(R0M)231和随机存取存储器(RAM) 232的易失性和/或非易失性存储器。分类优先转储140可以包括存储在ROM 231或RAM 232中或者两者中的数据。含有诸如在启动期间帮助计算机210内的元件之间传输信息的基本例程的基础输入/输出系统233 (BIOS),通常被存储在R0M231中。RAM232通常含有处理单元220可立即访问和/或当前在其上操作的数据和/或程序模块。通过示例的方式,但是不限于,图2示出了操作系统234、应用程序235、其他程序模块236、以及程序数据237,其中任意一个可以崩溃或挂起并且导致计算机210产生分类优先转储。将结合图3讨论操作系统(OS) 234的其他方面。计算机210也可以包括其他可移动/非移动、易失性/非易失性计算机存储介质。仅通过示例的方式,图2示出了读出或写入非移动性、非易失性磁介质的硬盘驱动器241 ;读出或写入可移动、非易失性磁盘252的磁盘驱动器251 ;以及读出或写入诸如⑶ROM或其他光学介质的可移动的、非易失性光盘256的光盘驱动器255。能够在不例性操作环境中使用的其他可移动/非移动、易失/非易失性计算机存储介质包括但是不限于磁带盒、闪存卡、数字多功能盘、数字视频磁带、固态RAM、固态ROM等。硬盘驱动器241通常通过诸如接口 240的不可移动存储接口连接到系统总线221,并且磁盘驱动器251和光盘驱动器255通常通过诸如接口 250的可移动存储接口连接到系统总线221。在上文讨论和在图2中示出的驱动器和其相关计算机存储介质提供计算机可读指令、数据结构、程序模块和用于计算机210的其他数据的存储。在图2中,例如,硬盘驱动器241被示出为存储操作系统244、应用程序245、其他程序模块246、以及程序数据247。应该注意的是,这些组件与操作系统234、应用程序235、其他程序模块236和程序数据237相同或者彼此不同。操作系统244、应用程序245、其他程序模块246、以及程序数据247在此给出不同编号以最低限度 地示出它们是不同副本。用户可通过诸如键盘262和通常称为鼠标、追踪球或触摸板的指向设备261的输入设备,可以将命令和信息输入到计算机210。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、碟型卫星天线、扫描仪等。这些和其他输入设备通常通过耦合到系统总线的用户输入接ロ 260连接到处理单元220,但是可以通过诸如并ロ、游戏端ロ或通用串行总线(USB)的其他接口和总线结构连接。监视器291或其他类型的显示设备也经由诸如视频接ロ 290的接ロ连接到系统总线221。除了监视器之夕卜,计算机也可以包括诸如扬声器297和打印机296的其他外围输出设备,其通过输出外围接ロ 295能够被连接。使用到诸如远程计算机280的一个或多个远程计算机的逻辑连接,计算机210可以在联网环境中操作。远程计算机280可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且虽然仅在图2中仅示出存储设备281,通常包括相对于计算机210在上文描述的许多或所有元件。图2中描绘的逻辑连接包括局域网(LAN) 271以及广域网(WAN) 273,但是也可以包括其他网络。这样的网络环境在办公室、企业级计算机环境、企业内部网和因特网是常见的。如图I中所示,远程计算机280可以是软件开发商的计算机130或者服务器150。当在LAN网络环境中使用时,计算机210通过网络接ロ或适配器270连接到LAN271。当在WAN网络环境中使用时,计算机210通常包括调制解调器272或用于通过诸如因特网的WAN 273建立通信的其他装置。可以是内部或外部的调制解调器272可经由用户输入接ロ 260或者其他适当机制被连接到系统总线221。在联网环境中,相对于计算机210描绘的程序模块或其部分可以存储在远程存储贮存设备中。通过示例的方式,但是不限干,图2将远程应用程序285示出为驻留在存储设备281上。将意识到示出的网络连接是示例性的并且可以使用在这些计算机之间建立的通信链接的其他装置。图3示出了在错误报告系统的某些实施例中可以使用的操作系统(OS) 234的一些组件。例如,操作系统(OS) 234可以具有存储管理器390,其可以控制诸如应用程序235的软件如何与RAM232交互并应用它。存储管理器390可以控制RAM 232的哪个部分被分配到给定的应用程序235。0S234也可以具有用于产生分类优先转储的分类优先转储引擎310。在某些实施例中,分类优先转储引擎310可以是存储管理器390的部分。在某些实施例中,基于在处理单元220上执行ー个或多个软件程序的执行期间遇到的问题,分类优先转储引擎310发起分类优先转储的产生。本发明的实施例不限于任何特定类型的问题。例如,关于程序的问题可以是程序崩溃,其中该程序意外地终止执行。在某些实施例中,该问题可以是问题挂起,其中该程序持续执行但是停止响应来自用户115的命令。一些实施例基于没有比崩溃或挂起严重的问题可以发起分类优先转储的产生。例如,在计算机210上运行的程序,诸如OS 234的组件、应用程序235、或其他程序模块236可以指令分类优先转储引擎310基于任何预定程序条件发起转储。分类优先转储310可以包括识别引擎320,识别引擎320识别系统存储器中的具有个人信息的特征的数据值,并且应该中毒。关于数据值是个人信息或者是不具有私人问题的数据难以确定。这是因为在某些实施例中,很少直至没有存储器转储的处理被执行。在用户计算机110上分析存储器转储需要相当多的资源并且导致性能降低。因此,将处理和分析卸载到软件开发商的计算机130。然而,卸载存储器转储数据的处理导致用户计算机110基本上看见具有极少上下文的一串数字。从该串数字,识别引擎320可能不能有把握地确定特定数据值是个人信息。然而,识别引擎320可以能够确定特定数据值具有个人信息的特征。可以使用任何适当标准以限定个人信息的特征。在某些实施例中,个人信息特征可由除了可能不是另一可识别类型的值之外的值来表示。例如,在某些实施例中,作为可能是指针的这些值基于它们是否在指针能够有效地指向的存储器地址的范围内来识别。可以将其他值视为表征个人信息。然而,将结合图4描述用于识别具有个人信息的特征的数据值的ー些实施例,其示出了计算机110的示例性存储器400。在某些实施例中,存储器400包括每个与地址450 和数据值440相关联的多个存储器地址。仅部分存储器地址在图4中示出,并且将存储器的实施简化以简化该图示。例如,每个存储器位置与范围000至999中的地址相关联。本领域的技术人员应该认识到,在真实存储器400中存在更多数量的存储器位置并且可以以任何合适方式寻址这些存储器位置。例如,存储器位置可以具有是32位或64位地址的地址。本领域的技术人员也应该认识到存储器400可以是通过OS 234的存储管理器390实施的虚拟存储器。为了示出目的,图4将每个存储器位置中保持的数据值440示出为000至999范围内的十进制整数。然而,本发明的实施例不限于此,并且利用任何合适范围的值,能以任何合适的方式实现数据值440。例如,数据值440可以是32位或64位地址。在某些实施例中,有时称为“字号”的数据值440的大小与存储器位置地址450的大小相同。为了简洁,没有针对每个存储器位置示出所有数据值440。然而,在具有地址500至507的存储器位置中示出数据值440的部分。例如,具有地址502的存储器位置保持数据值203。在大小上限制被转储的存储器400的存储器位置,以减小分类优先转储的大小。可以以任何方式实施对被转储的存储器位置的限制,并且本发明的实施例不限于任何特定技木。例如,在某些实施例中,仅与崩溃或挂起的程序相关的存储器被转储。在某些实施例中,分类优先转储可以限于保持程序的调用栈430的存储器400的部分,或者仅限于保持用于遇到问题导致发起分类优先转储的产生的程序的数据的调用栈的部分。虽然转储的存储器的数量和其被选择的方式对本发明不是至关重要的,并且使用本领域已知的技术或者以任何其他合适方式可以确定。无论被转储成创建分类优先转储的存储器的数量如何,通过识别引擎320可以识别被表征为个人信息的值。在某些实施例中,识别引擎320可以识别具有指针特征的数据值440。在分析分类优先转储的处理中,作为指针的数据值是有用的。因此,具有指针的特征的数据值440不应该被分类优先转储引擎310弄得中毒。如上所述,用户的计算机110不执行存储器转储的深入分析,所以其仅将转储视为具有很少上下文的一串整数。因此,识别引擎320不能有把握地识别特定数据值是指针,但是其可以确定特定数据值具有指针的特征。以任何合适方式可以进行数据值具有指针的特征的确定。例如,数据值可以被视为如同其是指针,并且该数据值指向的存储器位置可以被调查。例如,如果数据值指向与程序代码410、库代码420、或者调用栈430相关联的存储器位置,则可以保持并且不重写该数据值。在某些实施例中,如果数据值指向与程序代码、库代码或调用栈相关联的存储器位置,则可以保持并且不重写该数据值。在某些实施例中,相关数据可选地或附加地包括另一类型的指针,诸如内核模式对象或堆数据的句柄。不是所有使用该技术得以保持的数据值明确地需要是指针,但是可以以可接受的确定等级确定存储器位置是否保持指针。但是应该明白在其他的实施例中,可以使用可能执行转储数据的更彻底分析的其他技术,以在分类优先转储中确定将要保留的这些值,反之,确定哪些将被重写。在某些实施例中,已知不是个人信息的变量可以留下不被中毒。例如,在分析分类优先转储中全局变量和/或动态地产生的模块是有用的,但是不可能包含个人数据。例如,图4示出了具有地址501的存储器位置中的数据值是“003”。如果该值是指针,则它指向具有地址003的存储器位置。具有地址003的存储器位置与程序代码410相关联。因此,识别引擎可以将具有地址501的存储器位置识别为指针的特征。 具有地址502的存储器位置中的数据值是“203”。如果该值是指针,则它指向具有地址203的存储器位置。具有地址203的存储器位置与库代码420相关联。因此,识别引擎能够将具有地址502的存储器位置识别为具有指针的特征。具有地址504的存储器位置中的数据值是“ 502 ”。如果该值是指针,则它指向具有地址502的存储器位置。具有地址502的存储器位置与调用栈430相关联。因此,识别引擎可以将具有地址502的存储器位置识别为具有指针的特征。另一方面,具有地址505的存储器位置中的数据值是“156”。如果该值是指针,则其指向具有地址156的存储器位置。具有地址156的存储器位置与软件开发商135所感兴趣的存储器位置不相关联。因此,识别引擎不能将具有地址502的存储器位置识别为具有指针的特征。在某些实施例中,可以将不具有指针的特征的存储器位置解释为具有个人信息的特征的存储器位置。因此,识别引擎可以将具有地址505的存储器位置识别为可中毒的个
人信息。在某些实施例中,分类优先转储引擎310包括选择引擎330,选择引擎330用于选择利用其使通过识别引擎320确定为具有个人信息的特征的数据值中毒的重写值。选择引擎以任何合适方式选择重写值。在某些实施例中,单个重写值可以用于每个数据值。例如,在图4的简化存储器400中,利用重写值999可以重写识别为具有个人信息的特征的数据值中的每一个。因为在这个特定实例中这样的重写值不对应于指针的值或空指针的值,所以能够选择这样的重写值。图5A将与具有图4的地址501至507的存储器位置相关联的存储器地址510和数据值520示出为表500。用于具有地址503、505和506的存储器位置的数据值被强调地示出它们是由识别引擎识别为具有个人信息的特征的数据值。图5B示出了表530,其中如果利用单个重写值“999”使具有个人信息的数据值特征中毒则数据值550具有会在分类优先转储中出现的值。本领域的技术人员应该理解任何重写值能够被使用。在某些实施例中,重写值可以是除了空指针值以外的任何值。“空指针值”是计算机系统210用于指示没有数据的值。空指针值可以是通过计算机系统确定的任何值并且不限于任何特定数量。例如,在图4和图5的示例中,具有地址507的存储器位置包含值000。在该示例中,000是空指针值。因此,用于使其他数据值中毒的重写值可以不是000。限制允许软件开发商135识别最初是来自中毒的数据值的空指针值的数据值。本领域的技术人员应该认识到本发明的实施例可以使用作为32位字或64位字的数据值,其可以分别通过具有8或16十六进制数的十六进制数值表示。例如,在32位系统中,所有作为“I”的32位可以由十六进制数OxFFFFFFFF表示。在某些实施例中,针对将中毒的每个数据值的重写值可以是相同的十六进制数。例如,OxCCCCCCCC可以是用于所有中
毒的预定重写值。 在某些实施例中,选择的重写值可以是被重写的数据值的函数。通过这种方式,可以传送更多信息至软件开发商135而不发送任何个人信息。例如,在第一范围内的所有数据值可以用第一重写值来重写,同时,在第二范围内的所有数据值可以用第二重写值来重写。使用该技术的一个实施例由图5C中的表570示出。在这个示例中,用重写值999重写将被中毒的在范围1-149内的数据值;用重写值998重写将被中毒的在范围150-299内的数据值;以及用重写值997重写将被中毒的在范围850-999内的数据值。这些重写值590在表570中示出。在某些实施例中,如果用特定值使表示负数或大负数的数据值中毒,则其可以帮助由软件开发商135执行的分析。这可能有助于识别软件中的包络错误。用于识别大负数的具体标准可以取决于字大小或其他因素。然而,例如,将与特定重写值相关联的大负数可以被识别为具有大于阈值的量级的那些。可以任何适当方式,选择该阈值。然而,作为特定实例,该阈值可以被选择处于计算机系统能够表示的最大负数的15%内,或者,在某些实施例中,在10%以内。类似技术可以被用于识别大正值,以及将不同重写值与大正值相关联。在某些实施例中,所选择的重写值可以是与存储器位置相关联的存储器保护选项的函数。例如,存储器位置可以被存储在只读、只执行、执行和读或任何其他存储器保护选项的存储器页中。例如,32位系统可以使用重写值0x00000010来使确定为在只读存储器中存储的个人信息的每个数据值中毒。同一系统可以使用重写值0x00000020来使确定为在只执行存储器中存储的个人信息的每个数据值中毒,并且使其数据值被转储的存储器位置的数量被限制为总存储的ー小部分。在某些实施例中,选择引擎可以使用随机数发生器335以在运行时产生重写值。本领域的技术人员应理解,可以利用本领域中已知技术以任何适当方式实现随机数发生器335。例如,随机数发生器335可以是选择引擎330的组件,或者可以是被选择引擎调用以提供随机数的OS 234的组件。本领域的技术人员也应理解,随机数发生器335可以是伪随机数发生器或提供伪随机结果的任何组件。在某些实施例中,为中毒的每个数据值选择不同的随机值。将这些随机值限定为特定的值范围也可以是有用的。例如,在图4的示例中,可以将重写值限定在范围900-999。因此,对于将被中毒的每个数据值,选择引擎330在指定范围内随机产生值,以用作重写值。这允许某些实施例确保这些重写值不与在分类优先转储产生处理中未被中毒的数据值的任何ー个匹配。可以通过任何适当方式,确保重写值不与未被中毒的分类优先转储中的数据值。例如,可以将来自随机数发生器的值过滤,以避免与未中毒的分类优先转储值的任意ー个冲突。
通过将相同随机重写值用于相同数据值的每个实例,可以将更多信息提供给软件开发商135。例如,通过这种方式产生的信息可以帮助软件开发商135通过调用栈追踪一条数据,并且在源头识别问题。通过追踪应被中毒的数据值以及用于重写数据值的随机重写值,可以选择相同随机重写值。通过任何适当方式,可以将该信息映射。例如,数据值和随机重写可以被存储在表中。因此,当选择引擎330遇到待中毒的下一数据值时,选择引擎首先校验该表,以确定数据值是否先前被中毒。如果是,将在表中指示的相同随机重写值用于将下一数据值中毒。如果否,选择新的随机数据值并添加到表中。通过这种方式,用户115的隐私仍以该方法保持,因为其仅是具有全部映射信息的用户的计算机110。当将分类优先转储发送至外部服务器150时,仅重写值被发送,而非原始数据值。因此,在不揭示任何用户个人信息的条件下,使软件开发商135意识到分类优先转储的那些值被中毒。分类转储引擎310可以包括重写引擎340,用于执行以选择引擎330选择的重写值对确定具有个人信息特征数据值的实际重写。以任何适当方式,可以执行重写数据值。例如,首先可以将数据值转储为独立文件,然后,在该文件内重写。然后,可以采用其他方式。在某些实施例中,例如,可以在存储器400中或在数据值被复制到文件中时,直接进行重写。如上文所提及的,保持与空指针值具有相同值的数据值,可以是有用的。因此,即使空指针值不被另外视为满足指针的特征,如计算机OS 234所定义的,那么,空指针值可以被保留。例如,在32为系统中,空指针值可以是0x00000000。
分类优先转储引擎310可以包括通信引擎350,用于将分类优先转储发送至计算机系统110外的位置。通信引擎可以任何适当的方式操作。例如,利用本领域中已知的错误报告技术,通信引擎可以将分类优先转储发送至外部服务器150。服务器150可以与软件开发商135相关联。参见图6,其示出了用于产生分类优先转储的实施方法的流程图。通过分类转储引擎310或任何其他适当的组件,可以执行该方法。通过发起分类转储的产生,方法600开始于602。分类转储的产生可以通过任何适当方式被发起。在某些实施例中,发起是响应在计算机系统110中出现的某个条件。例如,该条件可以是在处理单元220上执行的软件的某种问题。该问题可以是程序崩溃或挂起。利用在本领域中已知的技术,可以检测到这种条件。然而,本发明的实施例不限于任何特定发起步骤。方法600可以在动作694处继续,其中,识别引擎识别在存储器中存储的待被保留的数据值。在这个示例中,基于它们是否具有指针特征,识别这些值。作为指针的数据至对于分类优先转储的后来分析是有用的,因此,在这个示例中可以不被中毒。可以使用任何适当的识别方法。例如,如果数据值是指针,检验该数据值的指向的前述技术可以被使用。在某些实施例中,如果数据值被解释为指针,如果该数据值指向确定与发起分类优先转储产生的软件程序的当前状态相关的存储器部分,那么,数据值可以被识别为具有指针特征。相关数据值可以是与程序代码、库代码或调用栈相关联的数据。在某些实施例中,相关数据可以包括另一指针、内核模式对象的句柄或堆数据。方法600可以在动作606处继续,其中,识别引擎320识别具有个人数据特征的在存储器中存储的数据值。作为个人信息的数据值对于后来分析可能不是有用的,并且可以被中毒,以确保用户的隐私。可以使用任何适当的识别方法。例如,在动作604中未被识别为具有指针特征或者未另被识别为保留的数据值,则其可以被识别为具有个人数据的特征。方法600可以在动作608处继续,其中,选择引擎330重写值被选择,利用该重写值,使识别的数据值中毒。可以使用任何适当的选择重写值的方法。例如,用于选择重写值的上述技术的任何ー个。在某些实施例中,相同重写值可以被用于所有数据值。在其他实施例中,重写值可以是基于被重写的数据值。在某些实施例中,利用随机数发生器,随机选择重写值。方法600可以在动作610处继续,其中,重写引擎340利用在动作608中选择的重写值,重写被识别为具有个人数据的特征的每个数据值。可以使用任何适当的重写方法。例如,如上文所提及的,可以在单独分类优先转储文件或在存储器400本身中,执行重写。方法600可以在动作612处继续,其中,通信引擎发送产生的分类优先转储至外部服务器。可以使用任何适当的发送方法。例如,如上文所提及的,可以通过计算机网络120发送分类优先转储。在某些实施例中,分类优先转储可以被放置在盘上,并且以任何适当方式传递给开发商。在其他示例中,分类优先转储可以在软件开发商所使用的计算机上产生, 从而能够被直接存储在该分类优先转储被产生的相同计算机上。在分类优先转储被发送至软件开发商之后,方法600终止于动作614。应理解的是,图6是可以被用于产生分类优先转储文件的方法的ー个示例,但也可以使用其他方法。用于产生分类优先转储的另ー示例性方法700在图7的流程图中示出。在动作702,识别引擎可以确定要重写的数据值。如上文所述,以任何适当方式,可以实施这个动作702。方法700可以在动作704处继续,其中,将识别的数据值与先前重写的数据值相比较。如果识别的数据值先前尚未中毒,那么,在动作706,确定用于该数据值的重写值。以任何适当的方式,可以实施这个确定706。例如,随机数发生器可以被用于产生随机重写值。在某些实施例中,随机重写值可以被限制落在预定值范围内,以及/或者以其他方式限定,以便确保每个重写值对应于待被重写的仅ー个值。一旦在动作706确定重写值,方法700可以在动作708继续,其中,确定的重写值与数据值一起被存储在表中,使得分类转储引擎310可以在实施动作704的随后重复中,查找数据值,如下文所述。如果在动作704确定该数据值先前已经被分类优先转储引擎310中毒,方法700在动作710继续,其中,在计算机存储器中存储并且由分类优先转储引擎310维护的表中,查找针对该特定数据值的先前使用的重写值。在其中数据值先前未被中毒的动作708或者其中数据值先前被中毒的动作710之后,方法700在动作712继续。在动作712,重写引擎340以确定的重写值重写数据值,该确定的重写值从动作710中的表或者通过在动作716中产生新重写值确定。方法700在动作714处继续,其中,确定是否更多数据值需要中毒。如果确定在分类优先转储的产生完成之前存在更多数据值需要重写,那么,方法700返回动作702,以执行前述动作的附加重复。如果在动作714确定不存在更多数据值需要中毒,那么,该方法继续至动作716,其中,产生的分类优先转储被发送至外部服务器,以供软件开发商分析。随后,该方法终止于动作718。结合图7和图6描述的上述方法的实施例不限于执行此处描述的每ー个动作。这些方法的每个动作不必以上文描述的精确顺序执行。例如,某些实施例可以在动作606中识别具有个人数据特征的数据值之后,在先前的动作604处识别具有指针的特征的数据值。在其他实施例中,可能根本不执行识别具有指针特征的数据值的动作604。本领域的技术人员应理解的是,前述实施例仅是采用本发明的方面的方法的特定示例。应指出的是,如上所述,使数据值中毒的目的是减少分类优先转储的大小,但是保留软件用户的隐私。然而,如果压缩被采用,则分类优先转储的中毒可以减少分类优先转储的大小。可以以任何适当方式压缩分类优先转储,这在本领域中是已知的。因此已经描述了本发明的至少一个实施例的若干方面,应理解的是,各种变更、修改和改进对于本领域的技术人员将是显而易见的。这样的变更、修改和改进应是本公开的部分,并且应在本发明的精神和范围内。此夕卜,虽然指示了本发明的多个优势,但应理解的是,不是每个本发明的实施例将包括每个描述的优势。某些实施例可能未实施在本文中以及某些实例中描述为有利的任何特征。因此,前述的描述和附图仅是示例方式。以许多方式中的任意一个,能够实施本发明的上述实施例。例如,利用硬件、软件或它们的组合,可以实现这些实施例。当通过软件实现时,软件代码可以在被设置在单一计算机或分布在多个计算机中的任何适当的处理器或处理集合上被执行。这样的处理器可以被实现为集成电路,集成电路组件中具有一个或多个处理器。然而,利用任何适当形式的电路系统,可以实现处理器。本文所概述的各种方法和处理也可以被编码为在使用多种操作系统或平台的任意一种的一个或多个处理器上可执行的软件。此外,使用多种适当的编程语言和/或编程或脚本编写工具中的任意一种,可以编写这种软件,并且其可以被编译为在网络或虚拟机上被执行的可执行机器语言代码或中间代码。本文使用的术语“程序”或“软件“在一般意义上指代任何类型的计算机代码或计 算机可执行指令集合,其能够被用于将计算机或其他处理器编程,以实施如上文所讨论的本发明的各个方面。此外,应理解的是,根据这个实施例的一方面,当被执行时执行本发明的方法的一个或多个计算机程序不需要驻留于单一计算机或处理器上,而是可以模块化方式,被分布于多个不同计算机或处理器中,以实施本发明的各个方面。计算机可执行指令可以是由一个或多个计算机或其他设备执行的许多形式,诸如程序模块。一般而言,程序模块包含执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。在各个实施例中,程序模块的功能通常可以是组合或分布的。数据结构也可以以任何合适形式存储在计算机可读介质中。为了便于解释,诸如表的数据结构可以被示出为具有通过数据结构中的位置相关的字段。通过为用于这些字段的存储分配传递这些字段之间的关系的计算机可读介质中的位置,同样可以实现这些关系。然而,可以使用任何适当的机制来建立数据结构的字段中的信息之间的关系,包括通过使用指针、标签以及在数据元素之间建立关系的其他机制。本发明的各个方面可以被独立、组合或通过未在前文描述的实施例中所具体讨论的设置来使用,因此,其应用不限于在前文描述中所阐述的或附图中所图示的组件的细节和设置。例如,在一个实施例中描述的方面可以以任何方式与在其他实施例中描述的方面
相结合。
而且,本发明可以被实施为已经至少提供了其一个示例的方法。以任何适当的方式,可以将作为方法的部分的动作排序。因此,可以构造其中以不同于图示的顺序执行这些动作的实施例,其可以包含同时执行某些动作,即使这些动作在示例性实施例中被示出为顺序动作。在权利要求中,使用诸如“第一”、“第二”、“第三”等的顺序术语来修饰权利要求要素本身不暗示一个权利要求要素对于另一个的任何优先性、优先级或顺序,或者方法的动作被执行的时间顺序,而是仅被用作将具有某个名称的一个权利要求要素与具有相同名称(如果没有使用顺序术语)的另一要素相区别的标记,以区别权利要求要素。
而且,本文所使用的短语和术语是描述目的,并且不应被视为限定性。本文所使用的“包含”、“包括〃或“具有”、“含有”以及它们的变型g在包含列示于其后的项目和它们的等效物以及附加的项目。
权利要求
1.一种用于在包括处理器(220 )和用于存储数据的至少一个存储器(232/400 )的计算机系统(210)中生成分类优先转储(140)的方法,其中所述存储器(232/400)包括多个存储器位置,所述方法包括 识别(606)在多个存储器位置中存储的第一多个数据值,其中,所述第一多个数据值的每一个具有个人信息的特征;以及 用一个或多个重写值重写(610)所述第一多个数据值的每一个,其中,所述一个或多个重写值不对应于空指针的值。
2.根据权利要求I所述的方法,其中,所述方法进一步包括 识别(604)在所述多个存储器位置中存储的第二多个数据值,其中,所述第二多个数据值的每一个具有指针的特征;以及 留下所述第二多个数据值不被修改。
3.根据权利要求2所述的方法,其中 其中,对于所述第二多个数据值的第一数据值,具有指针的特征包括对应于第一存储器位置的所述第一数据值,其中,所述第一存储器位置与程序代码(410)、库代码(420)或调用栈(430)相关联。
4.根据权利要求I所述的方法,其中 针对所述多个数据值的第一数据值的重写值取决于所述第一数据值。
5.根据权利要求4所述的方法,其中 当所述第一数据值处于第一值范围内时,针对所述第一数据值的所述重写值是第一重写值;以及 当所述第一数据值处于第二值范围内时,针对所述第一数据值的所述重写值是第二重写值。
6.一种计算设备包括 用于执行一个或多个计算机程序(235/236)的至少一个处理器(220); 至少一个存储器(232),其用于存储由所述一个或多个计算机程序(235/236)使用的数据,其中,所述至少一个存储器包括多个存储器位置; 用于创建分类优先转储的分类优先转储引擎(310),所述分类优先转储引擎包括 识别引擎(320),其用于识别在所述多个存储器位置中存储的多个数据值,其中,所述多个数据值的每一个具有个人信息的特征; 选择引擎(330),其用于从多个潜在的重写值中选择针对所述识别的多个数据值的每一个的重写值; 重写引擎(340),其用于以所选择的重写值重写所述识别的多个数据值的每一个。
7.根据权利要求6所述的计算设备,其中 所述选择引擎(330)基于所述第一数据值,选择针对所述多个数据值的第一数据值的重写值。
8.根据权利要求7所述的计算设备,其中 当所述第一数据值处于第一值范围时,所述选择引擎(330)选择针对所述第一数据值的第一重写值;以及 当所述第一数据值处于第二值范围时,所述选择引擎(330)选择针对所述第一数据值的第二重写值。
9.根据权利要求8所述的计算设备,其中 所述第一数据值范围包括负数。
10.根据权利要求8所述的计算设备,其中 基于所述第二数据值,所述选择引擎(330)选择针对所述多个数据值的第二数据值的重写值; 当所述第二数据值处于所述第一值范围内时,所述选择引擎(330)选择所述第一重写值;以及 当所述第二数据值处于所述第二值范围内时,所述选择引擎(330)选择所述第二重写值。
全文摘要
一种用于从在执行一个或多个软件程序时遇到问题的计算机产生有用存储器数据的分类优先转储的系统和方法。该计算机系统可以识别在分类优先转储内的具有个人数据的特征的数据值。为了保护软件用户的隐私,可以通过用重写值重写数据值来使个人数据中毒。基于数据值本身或随机选择的数据值,可以预先确定用于使数据值中毒的重写值。分类优先转储可以被发送至与一个或多个软件程序的开发商相关联的外部服务器,用于分析。当动态地选择重写值时,使用的特定重写值可以被发送至与分类优先转储有关的服务器。
文档编号G06F12/14GK102866961SQ20121033553
公开日2013年1月9日 申请日期2012年9月12日 优先权日2011年9月12日
发明者M.塞格迪, R.S.基维特, G.W.尼科尔斯, M.巴西尔彦, 邱仁隆, G.卡里莫夫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1