CN105631337A - 控制机器代码的本机图像访问操作系统资源的系统及方法 - Google Patents

控制机器代码的本机图像访问操作系统资源的系统及方法 Download PDF

Info

Publication number
CN105631337A
CN105631337A CN201610067701.6A CN201610067701A CN105631337A CN 105631337 A CN105631337 A CN 105631337A CN 201610067701 A CN201610067701 A CN 201610067701A CN 105631337 A CN105631337 A CN 105631337A
Authority
CN
China
Prior art keywords
procedure set
machine image
image
father
machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610067701.6A
Other languages
English (en)
Other versions
CN105631337B (zh
Inventor
D·G·伊万诺夫
N·A·帕夫洛夫
D·V·舍维索夫
M·A·高申宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of CN105631337A publication Critical patent/CN105631337A/zh
Application granted granted Critical
Publication of CN105631337B publication Critical patent/CN105631337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种用于控制机器代码的本机图像访问装置的操作系统的资源的系统及方法。示例性方法包括获得机器代码的本机图像;识别父程序集,本机图像由所述父程序集创建;确定父程序集的信任类别;基于父程序集的信任类别确定本机图像的信任类别;以及限制具有不信任的信任类别的本机图像访问装置的操作系统的资源。

Description

控制机器代码的本机图像访问操作系统资源的系统及方法
技术领域
本公开内容涉及计算机科学领域,并且更具体地涉及用于控制机器代码的本机图像访问计算机装置的操作系统资源的系统及方法。
背景技术
目前,可安装在用户装置(例如,个人计算机、智能电话、平板电脑等)上的软件应用显著地增长,且可由这些应用创建的文件的数目也指数地上升。在应用的安装和运行时由软件应用创建的某些文件是唯一的,即,文件可作为单一副本存在。很难在不执行其内容的详细分析的情况下分类此类文件。
通常,这些文件可为机器代码中的父程序集的图像(即,本机图像),这是.NET技术的一部分。.NET应用可使用一定数目的程序集一起创建,其中程序集为由公共语言运行("CLR")环境辅助的二进制文件。.NET程序集包括以下元数据元素:
·可移植执行("PE")文件标头;
·CLR标头;
·公共中间语言("CIL")代码;
·在各种类型的程序集中使用的元数据(例如,类别、接口、结构、列举(enumerations)、委托);
·程序集的清单;以及
·额外的内置资源。
大体上,PE标头识别程序集可在系列的操作系统中加载和执行。PE标头还识别应用(例如,控制台应用、具有图形用户接口的应用、代码库等)的类型。
CLR标头构成可支持所有.NET程序集以便它们可在CLR环境中维护的数据。CLR标头包含诸如标记、CLR版本、入口点(例如,在特定情况下,开始函数Main()的地址),这允许执行环境确定管理的文件的组成(即,包含管理代码的文件)。
各个程序集均包含CIL代码,其为并非依赖处理器的中间代码。在执行期间,CIL代码由JIT(准时,即,动态编译)以实时模式编译成对应于特定处理器的要求的指令。
在任何给定程序集中,还存在完整描述存在于程序集内的类型(例如,类别、接口、结构、计数、委托等)以及程序集参照的外部类型(即,其它程序集中描述的类型)的格式的元数据。在可执行环境中,元数据用于确定二进制文件中的类型的位置,以将类型置于存储器中,且简化类型的方法的远程调用的进程。
程序集还可包含清单,其描述组成程序集的各个模块、程序集的版本以及还有当前程序集参照的任何外部程序集。清单还包含指定程序集的版本和身份的程序集的要求所需的所有元数据,以及确定程序集的范围和允许链接至资源和类别所需的所有元数据。下表示出了包含在程序集的清单中的数据。前四个元素(程序集名称、版本号、语言和区域参数,以及强名称数据)构成程序集的身份。
任何.NET程序集都可包含任何给定数目的嵌入资源,如,应用图标、图形文件、音频片段或字符串表。
程序集可由若干模块构成。模块为程序集的一部分,即,代码或资源的逻辑收集。用于程序集中的实体的等级为:程序集>模块>类型(类别、接口、结构、计数、委托(delegate))>方法。模块可为内部(即,程序集的文件内)或外部的(即,分离文件)。模块没有入口点,其也不具有任何独立的版本号,且因此其不可由CLR环境直接地载入。模块仅可由程序集的主模块载入,如,包含程序集的清单的文件。模块的清单仅包含所有外部程序集的计数。各个模块均具有模块版本标识符("MVID"),其为程序集的各个模块中写出的唯一标识符,其在各次编译期间变化。
图1A示出了单文件程序集的示例性布局。如图所示,在单文件程序集中,所有要求元素(例如,标头、CIL代码、类型的元数据、清单和资源)位于单个文件*.exe或*.dll内。
图1B示出了多文件程序集的实例。多文件程序集由一组.NET模块构成,其以单个逻辑单元的形式配置,且设有相同的版本号。通常,这些模块中的一个称为主模块,且包含程序集的清单,且还可包含所有所需的CIL指令、元数据、标头和附加资源。
主模块的清单描述主模块的操作依赖的所有其它相关模块。多文件程序集中的次级模块可分配扩展名*.netmodule。次级*.netmodule模块也包含CIL代码和类型的元数据,以及模块的水平的清单,其中列举了由给定模块所需的外部程序集。
正如任何PE文件,程序集可利用数字签名(例如,X.509)来签名,其位于PE文件或数字签名目录文件(.cat)的叠加部分(overlay)中。强名称签名另外或单独使用,即,通过使用程序集的内容和RSA私钥生成的哈希值。哈希值位于PE标头与元数据之间的程序集中。哈希值使得有可能检查程序集从其编译时的时间起没有变化。对于单文件程序集,当编译文件时,在PE标头之后没有字节。文件的哈希值然后使用私钥计算,且所得的哈希值输入这些可用的字节中。
该技术对于多文件程序集是不同的。除程序集的主文件的哈希值之外,还计算外部模块的哈希值,此后,数据输入主程序集中。模块没有其自身的签名,且它们具有不同于主模块的MVID。以下项目输入程序集的清单中:
·PublicKey,即,强名称签名的公钥,以及
·PublicKeyToken,即,强名称签名的密钥的公开部分的哈希。
通常,程序集分成:私密和公开/共享。私密程序集应当总是位于与它们用于其中的客户应用相同的目录(即,应用目录)中或其子目录中的一个中。
相比之下,公开程序集可同时用于同一装置上的若干应用中。公开程序集并非位于与它们被认为应用其中的应用相同的目录内。相反,它们可安装在全局程序集缓存(GAC)中。GAC可同时位于如下表所示的若干位置中:
安装在GAC中的程序集应当具有强名称。强名称是用于COM中的全局唯一标识符(GUID)的当代.NET等同物。不同于128位数字的COM中的GUID值,.NET的强名称部分地基于称为公开密钥和秘密(私密)密钥的两个相关加密密钥。
强名称由一组相关数据构成,至少包括:
·程序集的名称(没有文件扩展名的程序集的名称)。
·程序集的版本号;
·公钥值;
·指定区域的值,其不是强制的,且可用于应用的定位;以及
·利用从程序集的内容和私钥的值获得的哈希值创建的数字签名。
为了创建程序集的强名称,例如,用户可获得公钥和私钥,公钥和私钥的数据由提供为.NET框架SDK的一部分的实用程序sn.exe生成。实用程序生成包含用于两个不同但数学上相关的密钥(公钥和私钥)的数据的文件。该文件的位置然后向编译器指出,编译器写出程序集的清单中的公钥的全部值。
在特定情况中,编译器基于程序集的全部内容(例如,CIL代码、元数据等)生成对应的哈希值。哈希值是对于固定输入数据在统计上唯一的数值。因此,在.NET程序集的任何数据(甚至字符串字面值中的单个字符)的变化的情况下,编译器将生成不同的哈希值。生成的哈希值然后与包含在文件内的私钥数据组合,以获得插入CLR标头数据内的程序集中的数字签名。
图1C示出了用于生成强名称的示例性进程。通常,私钥数据未在清单中指出,而是仅用于由数字签名(连同生成的哈希值)识别程序集的内容。在完成创建和分配强名称的进程之后,程序集可安装在GAC中。
例如,至GAC中的程序集的路径可为:
C:\Windows\assembly\GAC_32\KasperskyLab\2.0.0.0__b03f5f7f11d50a3a\KasperskyLab.dll,其中:
C:\Windows\assembly是至GAC的路径;
\GAC_32是处理器的GAC结构;
\KasperskyLab是程序集的名称;
\2.0.0.0__b03f5f7f11d50a3a是程序集_公钥标记的版本;以及
KasperskyLab.dll是\程序集名称的扩展名。
在一个特定情况中,程序集的代码的执行按以下发生。首先,分析PE标头来确定应当开始哪个进程(32或64位)。接下来,载入的选择的文件版本MSCorEE.dll(对于32位系统是C:\Windows\System32\MSCorEE.dll)。程序集的源代码的实例按以下存在:
为了方法的执行(为了方便起见,代码以其原始形式存在,且并未编译成CIL代码),如,方法System.Console。WriteLine("Kaspersky"),JIT编译器将CIL代码转换成机器命令。
图2示出了执行程序集代码的示例性方法。首先,在执行函数Main()之前,CLR环境找出所有公告的类型(级别)(例如,类型Console)。接下来,CLR环境确定方法,将它们组合在统一"结构"内的记录中(一个方法,如类型Console中分别限定那样)。该条目(entry)包含可找到方法的实施方式所处的位置。在方法WriteLine的首次访问中,调用JIT编译器。JIT编译器知晓调用的方法和限定该方法的类型。一旦调用,则JIT编译器搜索对应的程序集的元数据来实施方法代码(即,实施方法WriteLine(stringstr)的代码)。JIT编译器然后将CIL代码编译成机器代码,且将编译的代码保存在动态存储器中。接下来,JIT编译器返回类型数据(控制台)的内部"结构",且以具有机器代码的存储器区段的地址替换调用的方法的地址。方法Main()又访问方法WriteLine(stringstr)。由于已经编译了代码,故访问没有JIT编译器调用。在执行方法WriteLine(stringstr)之后,控制回到方法Main()。
从描述中得出的是,当JIT编译器将CIL代码转换成处理器指令时,该函数仅在第一调用时工作"较慢"。在所有其它情况中,代码已经在存储器中,且提供为针对给定处理器优化。然而,如果又一个程序在另一个过程中开始,则将为了此同一方法又调用JIT编译器。
上文所述的本机图像解决了在第一调用时程序缓慢工作的问题。当加载程序集时,将加载图像,机器代码将从其执行。使用该技术,有可能加速应用的加载和运行,因为JIT编译器不需要编译任何东西,且/或还每次重新创建数据结构。其所有都取自图像。图像可对于任何给定的.NET程序集创建,而不管其是否安装在GAC中。对于编译,在一个实例中,人们使用由路径%WINDIR%\Microsoft.NET\Framework\<Framework_version>\ngen.exe定位的实用程序ngen.exe。在ngen.exe启动时,使用了JIT编译器创建程序集的CIL代码的机器代码,且结果保存至本机图像缓存("NIC")中的盘上。编译在本地装置上完成,考虑了其软件和硬件配置,且因此,图像应用仅用于编译其的环境。创建此图像的目的在于提高管理的应用的有效性,即,在JIT编译的地方加载机器代码完成的程序集。
如果程序集的代码由许多应用使用,则图像的创建显著增大了启动和执行应用的速度,因为图像可由许多应用同时使用,同时由JIT编译器即时生成的代码仅由其为之编译的应用的副本使用。
至可编译图像的路径形成为以下,例如:C:\Windows\assembly\NativeImages_v4.0.30319_32\Kaspersky\9c87f327866f53aec68d4fee40cde33d\Kaspersky.ni.dll,其中:
C:\Windows\assembly\NativeImages是至系统的图像缓存的路径;
v4.0.30319_32是<版本.NET框架>_<处理器架构(32or64)>;
Kaspersky是程序集的易记名称;
9c87f327866f53aec68d4fee40cde33d是应用的哈希值;以及
Kaspersky.ni.dll是<程序集的易记名称>.ni.<扩展名>。
在创建64位应用的程序集ngen.exe的机器代码的图像时,相关部分可保存在注册表分支HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots中,对于32位应用,可保存在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\NGenService\Roots\中。
如果对于位于GAC中的程序集安装图像,则可调用分支:…\Roots\Accessibility,版本=2.0.0.0,Culture=Neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=msil。但如果程序集并未安装在GAC中,则其可调用:…\Roots\C:/ProgramFiles(x86)/ATITechnologies/ATI.ACE/Core-Static/A4.Foundation.DLL。
之前,开发者总是必须自己利用ngen.exe(或通过配置安装程序)来开始程序集的图像的创建、更新和移除。在中,可为某些 程序集自动地创建图像。
在一个特定情况中,本机图像服务用于控制图像。这允许在装置静止不动时开发者推迟安装、更新和移除机器代码(这些进程随后执行)的图像。本机图像服务由安装应用或更新程序启动。这借助于实用程序ngen.exe完成。该服务结合保存在注册表中的请求队列进行工作,各个请求具有其自身的优先级。形成的优先级确定了将何时执行任务。
在另一个特定情况中,机器代码的图像不但根据开发者或管理员的主动性创建,而且由.NET框架平台自动创建。.NET框架平台自动地创建图像,跟踪JIT编译器的工作。大体上,在应用的操作期间创建图像花费很多时间,且因此,该操作通常随后被执行,为此目的,CLR环境将任务置于队列中,且在装置空闲期间执行任务。
CLR环境使用程序集结合模块(即,程序集结合器)来找出在执行对应的程序集时加载的程序集。CLR可使用若干类型的结合模块。图像结合模块(即,本机结合器)用于搜索图像。搜索所需的图像在两个阶段中执行,首先,给定模块识别文件系统中的程序集和图像,且其次,给定模块检查图像与程序集的对应关系。
图3示出了运行结合模块的方法。如图所示,在步骤310中,程序集结合模块搜索程序集,搜索在GAC中执行,GAC预先假定了搜索的程序集被签名且程序集的内容未被读取;且在应用目录中,其中打开程序集且读取元数据。
接下来,在步骤320中,图像结合模块在对应于识别的程序集的NIC中搜索图像。在识别图像的情况中,这在步骤330中被检查,且图像结合模块在步骤340中从图像读取所需的数据和元数据,以确保图像满足执行仔细分析的某些标准,包括但不限于,查阅:
·强名称;
·创建时间(图像应当比程序集更近);
·程序集和图像的MVID;
·.NET框架的版本;
·进程器架构;以及
·相关图像的版本(例如,图像mscorlib.dll)。
如果程序集没有强名称,则MVID用于检查。在步骤350处,分析图像来确定其是否是当前的,且如果其不是当前的,则控制在步骤370中传递至JIT编译器。否则,来自图像的代码在步骤360中加载。
从前述描述得出的是,本机图像的数目大致超过程序集的数目,而且由相同父程序集生成的本机图像的数目对于不同的设备以及不同的图像版本来说可能是不同的,所有这些都极大使分配图像的任务复杂化。一些常规文件分类方法使用云服务等,但还未创造出能够正确且有效地分类图像的解决方案。
发明内容
公开了用于控制机器代码的本机图像访问计算机装置的操作系统的资源的示例性系统、方法和计算机程序产品。具体而言,公开的系统和方法通过限制不信任的本机图像访问操作系统的资源来提高计算机装置的安全性。
一方面,一种用于控制机器代码的本机图像访问装置的操作系统的资源的示例性方法包括由硬件处理器获得机器代码的本机图像;由硬件处理器识别父程序集,本机图像由所述父程序集创建;由硬件处理器确定父程序集的信任类别;由硬件处理器基于父程序集的信任类别来确定本机图像的信任类别;以及由硬件处理器限制具有不信任的信任类别的本机图像访问装置的操作系统的资源。
在另一个示例性方面中,本机图像的信任类别对应于父程序集的信任类别。
在另一个示例性方面中,该方法还包括:确定本机图像与父程序集之间的对应关系;以及基于确定的对应关系来确定本机图像是否改变。
另一方面,一种用于控制机器代码的本机图像访问装置的操作系统的资源的示例性方法,包括:由硬件处理器限制对机器代码的本机图像的写入访问;由硬件处理器识别用于创建具有限制的写入访问的本机图像的父程序集;由硬件处理器基于父程序集更新本机图像;由硬件处理器确定父程序集的信任类别;由硬件处理器将父程序集的信任类别分配至更新的本机图像;以及由硬件进程器限制具有不信任的信任类别的更新本机图像访问装置的操作系统的资源。
在另一个示例性方面中,写入访问限于除ngen.exe之外的所有进程。
在另一个示例性方面中,机器代码的本机图像的更新包括以父程序集的机器代码的新本机图像替换具有限制的写入访问的本机图像。
示例性方面的以上简化概述用于提供本公开内容的基本理解。该概述不是所有构想的方面的宽泛综述,且旨在既不识别所有方面的关键元素或重要元素,也不阐明本公开内容的任何或所有方面的范围。其唯一目的在于以简化形式提出一个或多个方面作为之后的本公开内容的更详细描述的前序。为了实现上述内容,本公开内容的一个或多个方面包括权利要求中描述和作为示范性地指出的特征。
附图说明
并入且构成本说明书的一部分的附图且连同详细描述说明了本公开内容的一个或多个示例性方面,用于阐释其原理和实施方式。
图1a示出了单文件程序集的示例性布局。
图1b示出了多文件程序集的实例。
图1c示出了用于生成强名称的示例性进程。
图2示出执行程序集代码的示例性方法。
图3示出了运行结合模块的方法。
图4示出了根据一个方面的分类图像的示例性方法。
图5示出了根据一个方面的图像的示例性结构。
图6示出了根据一个方面的将类别分配至图像的示例性方法。
图7示出了公开的系统和方法可在其上实施的通用计算机的实例。
具体实施方式
示例性方面在此以用于控制机器代码的本机图像访问装置的操作系统的资源的系统、方法和计算机程序产品为背景进行描述。本领域的普通技术人员将认识到:以下描述仅为示范性的,且不旨在以任何方式限制。受益于本公开内容的本领域的技术人员将容易受到来自其他方面自身的启示。现在将详细参照如附图中所示的示例性方法的实施方式。相同的参考指示符将在附图和以下描述各处可能的程度用于表示相同或相似的项目。
图4示出了根据一个方面分类图像的示例性方法。如图所示,在步骤400中,获取图像。在一个实例中,图像可从本机图像缓存("NIC")获取(例如,如果图像安装在装置上且用作意欲在装置上使用),且在另一个实例中,图像可从任何其它的图像库获取(如,在装置用作储存器且图像并不意欲在装置上使用)。接下来,在步骤410中,确定图像的信任类别。在一个示例性方面中,将请求数据库来确定图像的信任类别,其中可使用图像的校验和。在另一个示例性方面中,可使用图像的MVID。模板也用于确定图像的种类。在下文中更详细论述以模板工作的机制。
如果图像在数据库中是未知的,则在步骤420中,确定创建该图像的父程序集。为了确定父程序集,至少可使用以下数据、数据结构和机制:MVID、注册表(例如,Windows注册表)、结合模块和强名称。
在一个示例性方面中,例如,当包含存在于当前装置上的程序集的MVID的数据库存在时,可使用经由MVID确定的结果。在此方面中,图像的MVID可在包含程序集的MVID的数据库中识别。
在另一个示例性方面中,当注册表中的条目在图像的创建期间被创建时,父程序集可从注册表中的条目来确定。在上文更详细论述了此条目的实例。在一个示例性方面中,条目可包含关于至父程序集的路径的信息、关于本机图像的信息以及各种辅助数据。通过将来自注册表的数据与从分析的影响获取的数据相比较,可识别父程序集。
在另一个示例性方面中,父程序集可从用于由强名称程序集创建的图像的强名称确定。父程序集的强名称的组成部分从图像取得,强名称生成,且基于该数据,确定了至装置的GAC中的、或以有序方式根据强名称保存程序集的数据库中父程序集的路径。
确定父程序集的进程取决于一定数目的因素,其例如可包括父程序集和图像的位置(例如,用户的装置或远程或本地数据库)、在其储存位置处危害程序集和图像的可能性、命名程序集(强名称或普通名称)的方法等。
在一个示例性方面中,在确定父程序集之后,本机图像与程序集之间的对应关系在步骤421中确定。如果存在本机图像(在创建之后)可在储存位置处未授权(例如,其可被危害、损坏等)的情况下改变的可能性,则执行该步骤。在一个示例性方面中,算法可用于确定使用图像结合模块(上文所述)的对应关系。在另一个示例性方面中,在确定父程序集之后,可创建来自此程序集(即,原始的本机图像,其是保证未改变的图像)的图像,且其可与进行分析来确定对应关系的本机图像直接比较。在一个示例性方面中,比较可逐字节地进行。
在一个示例性方面中,为了防止图像的未授权改变,仅允许对信任进程(例如,如,仅ngen.exe)改变图像,而仅容许对其它进程从本机图像读取数据。
一个示例性方面中,模板的机制可用于确定图像与父程序集之间的对应关系。在一个示例性方面中,如果没有父程序集与对应本机图像之间的对应关系,则图像认作是损坏的(即,恶意的)。损坏的图像与原始图像的差别可在于CIL代码、机器代码、类型的元数据、包含在CLR和PE标头中的信息等。
图5示出了根据一个方面本机图像的示例性结构。本机图像如父程序集具有某一结构。例如,程序集KasperskyLab.dll和图像KasperskyLab.ni.dll包含元数据和代码,其中程序集只包含CIL代码,而特定方面中的本机图像也包含机器代码和结构NativeImageHeader。基于该结构、元数据和代码,生成模板KasperskyLab.dll.tmpl(上文所述)且其与父程序集和由此创建的图像相关联(即,建立对应关系)。为了将结构、代码和元数据合并到模板中,例如,示例性系统和方法使用智能哈希技术(也称为本地敏感哈希)。在一个示例性方面中,生成了如图5中所示的模板。
更具体而言,数据(即,清单、元数据、CIL代码等)从程序集取得。相同的数据和机器代码从本机图像取得。处理对于由相同父程序集创建的图像的可能版本中的各个不变的数据(例如,从中计算校验和),且哈希形成且置于模板中。从图像的一个版本变为图像另一个版本的数据(如,机器代码)也被处理,且只能因此生成智能哈希值。在特定方面中,生成了用于机器代码的函数调用日志,具有分解的机器代码的列表或反映给定机器代码的实施的逻辑的任何其它实体;以及由这些实体形成的智能哈希值。在另一个特定方面中,这些实体直接用于模板中。应当注意的是,模板形成为以便清楚地关联(建立对应关系)父程序集和图像,而不管取决于装置的软件和硬件配置的图像版本。在图像的机器代码中产生变化且图像代码的执行的逻辑不再对应于程序集代码的执行的逻辑的情况中,没有在父程序集与图像之间基于模板建立对应关系,且确定图像为不对应程序集。
下文更详细描述使用模板确定对应关系的实例。例如,如果某一父程序集Kaspersky.dll存在,且在装置上对其创建图像Kaspersky.ni.dll。形成Kaspersky.dll.tmpl模板,使得有可能建立父程序集与图像之间的对应关系。则在装置上,更新软件和硬件(即,操作系统、.NET框架、进程器替换等的更新),且使图像Kaspersky.ni.dll的版本不再是当前的。因此,不可使用图像,且该图像的更新开始,且创建不同于之前版本的图像的新图像Kaspersky.ni.dll。在使用模板时,发现了更新的图像对应于父程序集(即,机器代码的执行的逻辑仍相同)。在另一个情况中,恶意程序安装在装置上,其改变图像Kaspersky.ni.dll。在此情况中,当使用模板时,确定了由恶意程序改变的图像不对应于父程序集(例如,机器代码的执行的逻辑不同于嵌入父程序集的逻辑)。
再次参看图4,在确定父程序集之后,建立程序集的信任类别(步骤430)。程序集的信任类别为装置的保护系统的部分上的程序集(如,防病毒应用)中的信任度(信任或不信任)。在一个示例性方面中,存在两个可能的程序集类别:信任的程序集或不信任的程序集。在本公开内容的上下文中,人们应当将程序集的种类的概念与程序集的危险状态的概念区分开。本公开内容的上下文中的程序集的危险状态可为:危险或不危险。还存在其危险状态并未确定的未知程序集。程序集的危险状态确定程序集对程序集安装到其上的装置的危险性。在一个示例性方面中,程序集对装置的危险性包括在执行程序集的代码期间从装置窃取数据、置换数据或对装置的软件未授权修改的可能性。
信任程序集包括由保护系统确定为不危险的程序集。具体而言,该装置的保护系统,在为程序集分配信任类别时,在设备上当前状态的上下文中并且基于关于该程序集的信息在本地这样做。在一个特定方面中,此信息为程序集的危险状态。程序集的危险状态可通过使用程序集的标识信息确定,如,程序集的MVID、程序集的强名称、程序集的校验和等。为此,在步骤431中,对信誉数据库组织请求。一方面,数据库存在于程序集储存在其上的装置上,而另一方面,数据库位于远程。如果程序集是已知的(即,关于其的信息包含在信誉数据库中),则程序集已经相应地取决于来自信誉数据库的信息具有不危险或危险的危险状态。如果程序集的标识信息未包含在数据库中,则程序集认作是未知的,即,程序集不具有状态(即,状态未确定)。如果程序集具有不危险状态,则在一个特定方面中,程序集接收信任的类别。在另一个特定方面中,程序集的种类由关于程序集的其它实际和统计信息确定,例如,通过将程序集安装在危险状态已知的带有安装程序包的装置上或其附属物上。
在特定方面中,关于程序集的实际信息是关于数字签名(例如,签名的强名称或X.509)的信息。在此情况下,应当验证数字签名。对于步骤432中的验证,获取关于程序集的数字签名的标识信息,例如,其包含关于制造者的信息或文件或其部分的哈希值。签名可位于程序集中或目录(即,目录签名)中。程序集的数字签名的危险状态通过使用签名的标识信息确定,由此组织对信誉数据库的查询。如果签名已知(即,关于签名的信息包含在信誉数据库中),则签名已经具有不危险或危险的状态。如果签名的标识信息未包含在数据库中,则签名认作是未知的,即,签名没有状态(即,状态未知)。在特定方面中,如果签名具有不危险的状态,则在特定方面中,对程序集给予信任类别,且如果签名具有危险状态,则在特定方面中,对程序集给予不信任类别。
状态以多种方式分配至签名。在一个特定方面中,签名的状态取决于制造者。另一方面,签名的状态由其签名状态已知的安装程序的承继(inheritance)来分配。另一方面,签名的状态取决于签名的普及性分配,例如,签名越普及,则分配越高水平的信任。
在一个示例性方面中,在步骤433处,信任类别由程序集的防病毒检查来确定,为此,各种方法用于检测恶意程序,包括签名、启发式、统计等。在此方面,如果从防病毒检查的结果中发现程序集不危险,则程序集接收信任的类别。否则,程序集被认作是不受信任的。
在确定程序集的信任类别之后,在步骤440中,确定图像的信任类别。在特定方面中,对图像分配针对父程序集确定的信任类别。在另一个方面中,图像的类别由上文针对步骤410所述的方法确定。
根据示例性方面,当保护系统安装在装置上时,示例性系统和方法确认图像的存储库并未且将不会在未授权情况下改变。
图6示出了用于将类别分配至图像的示例性方法。如图所示,在步骤600中,限制了对图像的存储库或至少一个图像的访问。一方面,限制包括仅允许信任进程或有限数目的某些信任程序(如,仅进程ngen.exe)改变图像,所有其它进程仅允许读取访问。在另一个特定方面中,限制包括完全阻止访问写入作为整体的库中或至少一个图像中。
接下来,在步骤610中,确定用于创建其访问已经被限制的图像的父程序集。在步骤620中,更新至少一个图像(例如,由另一个图像替换)。在一个特定方面中,更新包括移除之前创建的图像和由操作系统创建新图像(例如,通过在父程序集上运行ngen.exe或通过自动图像创建服务)。另一方面,更新图像数据的仅一部分,如,机器代码,且更新通过信任的程序来完成。在第一种情况中,在其移除之后重新创建图像。在一个特定方面中,这立即执行,且在另一个情况中,创建推迟一定时间长度,例如,直到如步骤610中确定的那样,运行更新的图像的父程序集。在步骤630中,将父程序集的类别分配至图像。
防病毒应用在其运行中使用信任类别,例如,其除去具有信任或不信任的类别的本机图像,或大致限制其使用,例如,防病毒应用限制其对由操作系统提供的资源的访问。
在一个示例性方面中,防病毒应用可执行检测到的父程序集的防病毒扫描,且从防病毒分析中排除机器代码的本机图像,但使父程序集的防病毒扫描的结果与机器代码的本机图像相关联。在仅扫描的父程序集时,这改善了计算机系统的防病毒分析的性能,同时由其创建的机器代码的本机图像将承继程序集的信任类别和/或危险状态(判定)。因此,未执行本机图像的防病毒扫描。
图7示出了公开的系统和方法可根据示例性方面在其上实施的通用计算机系统(其可为个人计算机或服务器)的实例。如图所示,计算机系统包括中央处理单元21、系统存储器22和连接各种系统构件(包括与中央处理单元21相关联的存储器)的系统总线23。系统总线23实现为从现有技术中获知的任何总线结构,依次包括总线存储器或总线存储器控制器,外围总线和本地总线,其能够与任何其它总线构架交互。系统存储器包括永久性存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统(BIOS)26包括确保信息在个人计算机20的元素之间传输的基本进程,如,借助于ROM24加载操作系统时的那些程序。
个人计算机20继而又包括用于读取和写入数据的硬盘27、用于在可移动磁盘29上读取和写入的磁盘驱动器28以及用于在可移动光盘31,如CD-ROM、DVD-ROM和其它光学信息介质上读取和写入的光学驱动器30。硬盘27、磁盘驱动器28和光学驱动器30分别穿过硬盘接口32、磁盘接口33和光学驱动器接口34连接到系统总线23上。驱动器和对应的计算机信息介质为用于个人计算机20的计算机指令、数据结构、程序模块和其它数据的储存的功率独立模块。
本公开内容提供了使用硬盘27、可移动磁盘29和可移动光盘31的系统的实施方式,但应当理解的是,有可能使用其它类型的计算机信息介质56(固态驱动器、闪存卡、数字盘、随机存取存储器(RAM)等),其能够储存可由计算机可读的形式的数据,其经由控制器55连接到系统总线23上。
计算机20具有文件系统36,所记录的操作系统35、以及附加的程序应用37、其它程序模块38和程序数据39被存储在其中。用户能够通过使用输入装置(键盘40、鼠标42)将命令和信息输入个人计算机20中。其它输入装置(未示出)可使用:麦克风、操纵杆、游戏控制器、扫描仪等。此类输入装置通常经由继而又连接到系统总线上的串行端口46插入计算机系统20中,但它们可以以其它方式连接,例如,借助于并行端口、游戏端口或通用串行总线(USB)。显示器47或其它类型的显示装置也穿过接口如视频适配器48连接到系统总线23上。除显示器47之外,个人计算机可配备有其它外围输出装置(未示出),如,扬声器、打印机等。
个人计算机20能够在网络环境中使用,使用网络连接到一个或多个远程计算机49。远程计算机(或多个计算机)49也是个人计算机或服务器,其具有所描述的个人计算机20(如图4中所示)的性质中大部分或所有上述元素。其它装置也可存在于计算机网络中,如,路由器、网络基站、对等装置或其它网络节点。
网络连接可形成局域计算机网络(LAN)50和广域计算机网络(WAN)。此网络用于企业计算机网络和内部公司网络中,且它们一般可访问因特网。在LAN或WAN网络中,个人计算机20通过网络适配器或网络接口51连接到局域网络50上。当使用网络时,个人计算机20可使用调制解调器54或其它模块来用于提供与广域计算机网络如因特网的通信。可为内部或外部装置的调制解调器54由串行端口46连接到系统总线23上。应当注意的是,网络连接仅为示例,且不必绘出网络的准确构造,即,实际上存在由技术通信模块形成一个计算机与另一个计算机的连接的其它方式。
在各种方面中,本文所述的系统和方法可在硬件、软件、固件或它们的任何组合中实施。如果在软件中实施,则方法可储存为非暂时性计算机可读介质上的一个或多个指令或代码。计算机可读介质包括数据储存器。举例来说但不限制的是,此计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM、闪速存储器或其它类型的电学、磁性或光学储存介质,或可用于传送或储存指令或数据结构形式的期望程序代码且可由通用计算机的处理器访问的任何其它介质。
在各种方面中,本公开中以模块为术语的方式描述了系统和方法。如本文所使用的。如本文使用的术语"模块"是指使用硬件来实施的现实世界的装置、构件或构件布置,例如,如,通过专用集成电路(ASIC)或字段可编程门阵列(FPGA),或作为硬件和软件的组合,如,通过微处理器系统和一组指令来实施模块的功能,其(在执行时)将微处理器系统转换成专用装置。模块还可实施为两者的组合,其中某些功能由硬件单独促进,而其它功能由硬件和软件的组合来促进。在某些实施方式中,模块的至少一部分(且有时全部)可在通用计算机的处理器上执行(如,在以上的图6中更详细描述的处理器)。因此,各个模块均可以以多种适合的构造实现,且不应当限于本文列举的任何特定实施方式。
为了清楚起见,本文并未公开这些方面的所有常规特征。将认识到的是,在本公开内容的任何实际实施方式的开发中,必须进行许多实施方式特有的决定,以便实现开发者特定的目标,且这些特定目标将对于不同的实施方式和不同的开发者变化。将理解的是,此开发努力可能很复杂且耗时,但仍将是受益于本公开内容的本领域的普通技术人员的工程的常规任务。
此外,将理解的是,本文使用的措辞或术语为了描述而非限制的目的,使得本说明书的措辞或术语将由本领域的技术人员鉴于本文提出的教导内容和方针与相关领域中的技术人员的知识组合来理解。此外,不期望说明书或权利要求中的任何用语归于不常见或特殊的意义,除非明确地如此阐明。
本文公开的各种方面包含本文通过图示提到的已知模块的目前和未来的已知的等同物。此外,尽管已经示出和描述了一些方面和应用,但受益于本公开内容的本领域的技术人员将清楚的是,比上文提到的更多的改型是可能的,而不会脱离本文公开的发明构想。

Claims (12)

1.一种用于控制机器代码的本机图像访问装置的操作系统的资源的方法,所述方法包括:
由硬件处理器获得所述机器代码的本机图像;
由所述硬件处理器识别父程序集,所述本机图像由所述父程序集创建;
由所述硬件处理器确定所述父程序集的信任类别;
由所述硬件处理器基于所述父程序集的信任类别来确定所述本机图像的信任类别;以及
由所述硬件处理器限制具有不信任的信任类别的所述本机图像访问所述装置的操作系统的资源。
2.根据权利要求1所述的方法,其中,所述本机图像的信任类别对应于所述父程序集的信任类别。
3.根据权利要求1所述的方法,其中,所述方法还包括:
确定所述本机图像与所述父程序集之间的对应关系;以及
基于所确定的对应关系确定所述本机图像是否改变。
4.一种用于控制机器代码的本机图像访问装置的操作系统的资源的方法,所述方法包括:
由硬件处理器限制对所述机器代码的本机图像的写入访问;
由所述硬件处理器识别用于创建具有限制的写入访问的所述本机图像的父程序集;
由所述硬件处理器基于所述父程序集更新所述本机图像;
由所述硬件处理器确定所述父程序集的信任类别;
由所述硬件处理器将所述父程序集的信任类别分配至更新的本机图像;以及
由所述硬件处理器限制具有不信任的信任类别的所述更新本机图像访问所述装置的操作系统的资源。
5.根据权利要求4所述的方法,其中,写入访问限于除ngen.exe外的所有程序。
6.根据权利要求4所述的方法,其中,更新所述机器代码的本机图像包括以所述父程序集的机器代码的新本机图像替换具有所述限制的写入访问的所述本机图像。
7.一种用于控制机器代码的本机图像对装置的操作系统的资源的访问的系统,所述系统包括:
硬件处理器,其构造成:
获得所述机器代码的本机图像;
识别父程序集,所述本机图像由所述父程序集创建;
确定所述父程序集的信任类别;
基于所述父程序集的信任类别确定所述本机图像的信任类别;以及
限制具有不信任的信任类别的所述本机图像访问所述装置的操作系统的资源。
8.根据权利要求7所述的系统,其中,所述本机图像的信任类别对应于所述父程序集的信任类别。
9.根据权利要求1所述的系统,其中,所述处理器还构造成:
确定所述本机图像与所述父程序集之前的对应关系;以及
基于所确定的对应关系确定所述本机图像是否改变。
10.一种用于控制机器代码的本机图像对装置的操作系统的资源的访问的系统,所述系统包括:
硬件处理器,其构造成:
限制对所述机器代码的本机图像的写入访问;
识别用于创建具有限制的写入访问的所述本机图像的父程序集;
基于所述父程序集更新所述本机图像;
确定所述父程序集的信任类别;
将所述父程序集的信任类别分配至更新的本机图像;以及
限制具有不信任的信任类别的所述更新的本机图像访问所述装置的操作系统的资源。
11.根据权利要求10所述的系统,其中,写入访问限于除ngen.exe外的所有进程。
12.根据权利要求10所述的系统,其中,更新所述机器代码的本机图像包括以所述父程序集的机器代码的新本机图像替换具有限制写入访问的所述本机图像。
CN201610067701.6A 2015-03-31 2016-01-29 控制机器代码的本机图像访问操作系统资源的系统及方法 Active CN105631337B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2015111422 2015-03-31
RU2015111422A RU2635271C2 (ru) 2015-03-31 2015-03-31 Способ категоризации сборок и зависимых образов
US14/811,135 US9384364B1 (en) 2015-03-31 2015-07-28 System and method of controlling access of a native image of a machine code to operating system resources
US14/811,135 2015-07-28

Publications (2)

Publication Number Publication Date
CN105631337A true CN105631337A (zh) 2016-06-01
CN105631337B CN105631337B (zh) 2018-05-29

Family

ID=56234946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610067701.6A Active CN105631337B (zh) 2015-03-31 2016-01-29 控制机器代码的本机图像访问操作系统资源的系统及方法

Country Status (5)

Country Link
US (2) US9384364B1 (zh)
EP (1) EP3076292B1 (zh)
JP (1) JP6469028B2 (zh)
CN (1) CN105631337B (zh)
RU (1) RU2635271C2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110531971A (zh) * 2019-08-29 2019-12-03 深圳市今天国际物流技术股份有限公司 访问代码自动生成方法、装置、计算机设备及存储介质

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI536798B (zh) * 2014-08-11 2016-06-01 虹光精密工業股份有限公司 影像分檔方法
KR20180073041A (ko) * 2016-12-22 2018-07-02 삼성전자주식회사 전자 장치, 그 제어 방법 및 컴퓨터 판독가능 기록 매체
US10713359B2 (en) 2017-09-29 2020-07-14 AO Kaspersky Lab System and method of identifying a malicious intermediate language file
RU2660643C1 (ru) * 2017-09-29 2018-07-06 Акционерное общество "Лаборатория Касперского" Система и способ выявления вредоносного CIL-файла
DE102018000471A1 (de) * 2018-01-22 2019-07-25 Giesecke+Devrient Mobile Security Gmbh Blockchain-basiertes Identitätssystem
US10846403B2 (en) * 2018-05-15 2020-11-24 International Business Machines Corporation Detecting malicious executable files by performing static analysis on executable files' overlay
CN108984413A (zh) * 2018-07-24 2018-12-11 浙江数链科技有限公司 分支代码管理方法及装置
CN113168474A (zh) * 2019-06-10 2021-07-23 谷歌有限责任公司 固件的安全验证
JP7335591B2 (ja) * 2019-07-22 2023-08-30 コネクトフリー株式会社 コンピューティングシステムおよび情報処理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169999A1 (en) * 2001-05-14 2002-11-14 Microsoft Corporation Placing exception throwing instructions in compiled code
CN101359355A (zh) * 2007-08-02 2009-02-04 芯微技术(深圳)有限公司 Windows系统下受限帐户提升用户权限的方法
CN101615230A (zh) * 2009-08-07 2009-12-30 浪潮电子信息产业股份有限公司 一种文件可信执行和可信保护的方法
CN102663318A (zh) * 2012-03-22 2012-09-12 百度在线网络技术(北京)有限公司 浏览器及客户端

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579478A (en) * 1995-05-16 1996-11-26 Hewlett-Packard Company System administration module for an operating system affords graded restricted access privileges
US6321337B1 (en) * 1997-09-09 2001-11-20 Sanctum Ltd. Method and system for protecting operations of trusted internal networks
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US7051322B2 (en) * 2002-12-06 2006-05-23 @Stake, Inc. Software analysis framework
US20060143689A1 (en) * 2004-12-21 2006-06-29 Docomo Communications Laboratories Usa, Inc. Information flow enforcement for RISC-style assembly code
BRPI0614089A8 (pt) * 2005-08-06 2017-01-17 Secured Dimensions Ltd Método para evitar engenharia reversa de software, modificação não autorizada e interceptação de dados de tempo de execução
US7395394B2 (en) * 2006-02-03 2008-07-01 Hewlett-Packard Development Company, L.P. Computer operating system with selective restriction of memory write operations
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US9152789B2 (en) 2008-05-28 2015-10-06 Zscaler, Inc. Systems and methods for dynamic cloud-based malware behavior analysis
US9250938B2 (en) * 2008-10-15 2016-02-02 Microsoft Technology Licensing, Llc Caching runtime generated code
US8752016B2 (en) * 2008-12-15 2014-06-10 Apple Inc. Converting JavaScript into a device-independent representation
US8621647B1 (en) * 2010-01-11 2013-12-31 Google Inc. Restricting privileges of first privileged process in operating system using second privileged process
US8924922B2 (en) * 2010-06-14 2014-12-30 Microsoft Corporation Pre-compiling hosted managed code
US20120157049A1 (en) * 2010-12-17 2012-06-21 Nichola Eliovits Creating a restricted zone within an operating system
JP2012164081A (ja) * 2011-02-04 2012-08-30 Toshiba Corp 中間コード検査システム、中間コード検査方法、及び中間コード検査プログラム
US9584877B2 (en) * 2011-06-16 2017-02-28 Microsoft Technology Licensing, Llc Light-weight validation of native images
US9569184B2 (en) * 2012-09-05 2017-02-14 Microsoft Technology Licensing, Llc Generating native code from intermediate language code for an application
US8732674B1 (en) * 2012-11-14 2014-05-20 Microsoft Corporation Revertable managed execution image instrumentation
US9053108B2 (en) * 2013-02-05 2015-06-09 International Business Machines Corporation File system extended attribute support in an operating system with restricted extended attributes
US11100242B2 (en) * 2014-05-30 2021-08-24 Apple Inc. Restricted resource classes of an operating system
US20160048409A1 (en) * 2014-08-12 2016-02-18 Peter Briel System and method for automatic initiation and management of a guest operating system which enables a restriction of access to the host machine

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169999A1 (en) * 2001-05-14 2002-11-14 Microsoft Corporation Placing exception throwing instructions in compiled code
EP1258805A2 (en) * 2001-05-14 2002-11-20 Microsoft Corporation Placing exception throwing instruction in compiled code
CN101359355A (zh) * 2007-08-02 2009-02-04 芯微技术(深圳)有限公司 Windows系统下受限帐户提升用户权限的方法
CN101615230A (zh) * 2009-08-07 2009-12-30 浪潮电子信息产业股份有限公司 一种文件可信执行和可信保护的方法
CN102663318A (zh) * 2012-03-22 2012-09-12 百度在线网络技术(北京)有限公司 浏览器及客户端

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110531971A (zh) * 2019-08-29 2019-12-03 深圳市今天国际物流技术股份有限公司 访问代码自动生成方法、装置、计算机设备及存储介质
CN110531971B (zh) * 2019-08-29 2023-01-03 深圳市今天国际物流技术股份有限公司 访问代码自动生成方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
RU2015111422A (ru) 2016-10-27
US20160292450A1 (en) 2016-10-06
US9384364B1 (en) 2016-07-05
RU2635271C2 (ru) 2017-11-09
JP6469028B2 (ja) 2019-02-13
US9460306B1 (en) 2016-10-04
EP3076292A1 (en) 2016-10-05
EP3076292B1 (en) 2017-07-19
CN105631337B (zh) 2018-05-29
JP2016197399A (ja) 2016-11-24

Similar Documents

Publication Publication Date Title
CN105631337A (zh) 控制机器代码的本机图像访问操作系统资源的系统及方法
US11100546B2 (en) Method and system for provenance tracking in software ecosystems
EP1577767B1 (en) Code rewriting
JP5992622B2 (ja) 悪意あるアプリケーション診断装置及び方法
EP2807598B1 (en) Identifying trojanized applications for mobile environments
US8627293B2 (en) Detecting applications in a virtualization environment
US20110173643A1 (en) USING TRANSIENT PCRs TO REALISE TRUST IN APPLICATION SPACE OF A SECURE PROCESSING SYSTEM
CN103329093A (zh) 更新软件
KR20200052957A (ko) 보안 제어 방법 및 컴퓨터 시스템
US20220198003A1 (en) Detecting added functionality in open source package
US11533182B2 (en) Identity-based security platform and methods
JPWO2011142095A1 (ja) 情報処理装置および情報処理方法
CN105701405A (zh) 对软件程序集的本机图像进行防病毒检查的系统和方法
CN105760787A (zh) 用于检测随机存取存储器中的恶意代码的系统及方法
US20210150028A1 (en) Method of defending against memory sharing-based side-channel attacks by embedding random value in binaries
Fan et al. OPS: Offline patching scheme for the images management in a secure cloud environment
Ahamed et al. Security audit of docker container images in cloud architecture
Lanet et al. Memory forensics of a java card dump
RU2628920C2 (ru) Способ обнаружения вредоносных сборок
CN113010268B (zh) 恶意程序识别方法及装置、存储介质、电子设备
RU2617925C2 (ru) Способ антивирусной проверки компьютерной системы
RU2625052C1 (ru) Способ ограничения доступа образа машинного кода к ресурсам операционной системы
US20240134979A1 (en) Systems and Methods for API Security Integration
CN113139197B (zh) 一种项目验签方法、装置和电子设备
US20230315867A1 (en) Lifecycle management of secrets in a cloud microservices architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant