SYSTEM AND METHOD FOR ENFORCING SOFTWARE SECURITY THROUGH CPU STATISTICS GATHERED USING HARDWARE FEATURES
    21.
    发明申请
    SYSTEM AND METHOD FOR ENFORCING SOFTWARE SECURITY THROUGH CPU STATISTICS GATHERED USING HARDWARE FEATURES 审中-公开
    通过使用硬件特性获得CPU统计信息执行软件安全的系统和方法

    公开(公告)号:US20120179898A1

    公开(公告)日:2012-07-12

    申请号:US12987743

    申请日:2011-01-10

    IPC分类号: G06F9/30

    摘要: This disclosure is directed to measuring hardware-based statistics, such as the number of instructions executed in a specific section of a program during execution, for enforcing software security. The counting can be accomplished through a specific set of instructions, which can either be implemented in hardware or included in the instruction set of a virtual machine. For example, the set of instructions can include atomic instructions of reset, start, stop, get instruction count, and get CPU cycle count. To obtain information on a specific section of code, a software developer can insert start and stop instructions around the desired code section. For each instruction in the identified code block, when the instruction is executed, a counter is incremented. The counter can be stored in a dedicated register. The gathered statistics can be used for a variety of purposes, such as detecting unauthorized code modifications or measuring code performance.

    摘要翻译: 本公开涉及测量基于硬件的统计,诸如在执行期间在程序的特定部分中执行的指令的数量,用于执行软件安全性。 计数可以通过一组特定的指令来实现,这些指令可以在硬件中实现,也可以包含在虚拟机的指令集中。 例如,该指令集可以包括复位,开始,停止,获取指令计数以及获取CPU周期计数的原子指令。 要获取有关特定部分代码的信息,软件开发人员可以在所需代码段周围插入启动和停止指令。 对于识别的代码块中的每个指令,执行指令时,计数器递增。 计数器可以存储在专用寄存器中。 收集的统计信息可以用于各种目的,例如检测未经授权的代码修改或测量代码性能。

    Software or other information integrity verification using variable block length and selection
    22.
    发明授权
    Software or other information integrity verification using variable block length and selection 有权
    使用可变块长度和选择的软件或其他信息完整性验证

    公开(公告)号:US07841010B2

    公开(公告)日:2010-11-23

    申请号:US11651359

    申请日:2007-01-08

    IPC分类号: G06F7/04 G06F17/30 H04N7/16

    CPC分类号: G06F21/64

    摘要: An integrity verification process and associated apparatus to detect tampering or other alterations to computer code (software) or other computer files, and especially useful to detect tampering with code by hackers who might try to plant their own malicious code in the software. To make the verification process more robust versus hackers, each e.g., object code file to be protected is first selected using some sort of rule, then partitioned into variable length blocks or portions, the lengths varying in an unpredictable manner. Each portion has its checksum or hash value computed. An accompanying verification file is created which includes a vector for each portion including the portion's start address in memory, length, and the computed checksum or hash value. When the code is later to be run (executed) the verification file is conventionally read and each portion is verified by computing its checksum or hash value using the same algorithm as before, and comparing that to the value in the associated verification file vector. Lack of a match in the two values indicates tampering, so execution of the code can be halted.

    摘要翻译: 完整性验证过程和相关联的设备,用于检测对计算机代码(软件)或其他计算机文件的篡改或其他更改,并且特别有用于检测骇客可能尝试在软件中种植自己的恶意代码的篡改代码。 为了使验证过程比黑客更健壮,每个例如待保护的目标代码文件首先使用某种规则来选择,然后被分割成可变长度的块或部分,长度以不可预测的方式变化。 每个部分都有其计算的校验和或散列值。 创建伴随的验证文件,其中包括每个部分的向量,包括部分在内存中的起始地址,长度以及计算的校验和或哈希值。 当代码稍后运行(执行)时,常规地读取验证文件,并且通过使用与之前相同的算法计算其校验和或散列值来验证每个部分,并将其与相关联的验证文件向量中的值进行比较。 两个值中缺少匹配表示篡改,因此可以停止执行代码。

    Data protection for opaque data structures
    23.
    发明授权
    Data protection for opaque data structures 有权
    不透明数据结构的数据保护

    公开(公告)号:US09424049B2

    公开(公告)日:2016-08-23

    申请号:US13615974

    申请日:2012-09-14

    摘要: Methods, media and systems that use an encoded opaque pointer in an API between a client process and a library process. An encoded opaque pointer, in one embodiment, can be received by the library process from the client process, and the library process can decode the opaque pointer to obtain an address in memory containing a data structure pointed to by the opaque pointer. The library process can operate on the data structure to create a revised or processed data structure, stored in the same or different address in heap memory or stack memory, and the library process can encode and return a new opaque pointer, for the processed data structure, to the client process.

    摘要翻译: 在客户端进程和库进程之间的API中使用编码的不透明指针的方法,介质和系统。 在一个实施例中,编码的不透明指针可以由库进程从客户端进程接收,并且库进程可以对不透明指针进行解码以获得包含由不透明指针指向的数据结构的存储器中的地址。 库过程可以对数据结构进行操作以创建存储在堆存储器或堆栈存储器中的相同或不同地址中的修改或处理的数据结构,并且库过程可以编码并返回新的不透明指针,用于处理的数据结构 ,到客户端进程。

    Software or other information integrity verification using variable block length and selection
    24.
    发明申请
    Software or other information integrity verification using variable block length and selection 有权
    使用可变块长度和选择的软件或其他信息完整性验证

    公开(公告)号:US20080168564A1

    公开(公告)日:2008-07-10

    申请号:US11651359

    申请日:2007-01-08

    IPC分类号: G06F12/14

    CPC分类号: G06F21/64

    摘要: An integrity verification process and associated apparatus to detect tampering or other alterations to computer code (software) or other computer files, and especially useful to detect tampering with code by hackers who might try to plant their own malicious code in the software. To make the verification process more robust versus hackers, each e.g., object code file to be protected is first selected using some sort of rule, then partitioned into variable length blocks or portions, the lengths varying in an unpredictable manner. Each portion has its checksum or hash value computed. An accompanying verification file is created which includes a vector for each portion including the portion's start address in memory, length, and the computed checksum or hash value. When the code is later to be run (executed) the verification file is conventionally read and each portion is verified by computing its checksum or hash value using the same algorithm as before, and comparing that to the value in the associated verification file vector. Lack of a match in the two values indicates tampering, so execution of the code can be halted.

    摘要翻译: 完整性验证过程和相关联的设备,用于检测对计算机代码(软件)或其他计算机文件的篡改或其他更改,并且特别有用于检测骇客可能尝试在软件中种植自己的恶意代码的篡改代码。 为了使验证过程比黑客更健壮,每个例如待保护的目标代码文件首先使用某种规则来选择,然后被分割成可变长度的块或部分,长度以不可预测的方式变化。 每个部分都有其计算的校验和或散列值。 创建伴随的验证文件,其中包括每个部分的向量,包括部分在内存中的起始地址,长度以及计算的校验和或哈希值。 当代码稍后运行(执行)时,常规地读取验证文件,并且通过使用与之前相同的算法计算其校验和或散列值来验证每个部分,并将其与相关联的验证文件向量中的值进行比较。 两个值中缺少匹配表示篡改,因此可以停止执行代码。

    Protection of audio or video data in a playback device
    25.
    发明申请
    Protection of audio or video data in a playback device 有权
    保护播放设备中的音频或视频数据

    公开(公告)号:US20080165961A1

    公开(公告)日:2008-07-10

    申请号:US11651300

    申请日:2007-01-08

    IPC分类号: H04N7/167

    摘要: Method and apparatus to prevent hacking of encrypted audio or video content during playback. Hackers, using a debugging attachment or other tools, can illicitly access encrypted data in memory in a playback device when the data is decrypted during playback and momentarily stored in digital form. This hacking is defeated here by methodically “poisoning” the encrypted data so that it is no longer playable by a standard decoder. The poisoning involves deliberate alteration of certain bit values. On playback, the player invokes a special secure routine that provides correction of the poisoned bit values, for successful playback.

    摘要翻译: 播放期间防止加密音频或视频内容黑客入侵的方法和装置。 使用调试附件或其他工具的黑客可以在播放过程中解密数据并立即以数字形式存储时非法访问播放设备中的加密数据。 这个黑客在这里通过有条不紊地“中毒”加密的数据,使其不能被标准解码器播放,从而被击败。 中毒涉及故意改变某些位值。 在播放时,播放器调用特殊的安全程序,提供中毒位值的校正,以便成功播放。

    System and method for executing an encrypted binary from a memory pool
    26.
    发明授权
    System and method for executing an encrypted binary from a memory pool 有权
    从内存池执行加密二进制的系统和方法

    公开(公告)号:US08756434B2

    公开(公告)日:2014-06-17

    申请号:US13083497

    申请日:2011-04-08

    IPC分类号: G06F12/14

    摘要: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for executing encrypted computer code. A system configured to practice the method receives a request to execute encrypted computer code. In response to the request, the system identifies a portion of the encrypted computer code for execution and decrypts the portion to yield decrypted computer code. Then the system stores the decrypted computer code in a pool of memory and executes the decrypted computer code from the pool of memory. The system can store the decrypted computer code in the pool of memory based on a randomization algorithm so that identical executions of the encrypted computer code result in selections of different available memory locations within the pool of memory. Related portions can be stored non-consecutively in the pool of memory. The pool of memory can store different portions of decrypted computer code over time.

    摘要翻译: 这里公开了用于执行加密的计算机代码的系统,方法和非暂时的计算机可读存储介质。 配置为执行该方法的系统接收执行加密的计算机代码的请求。 响应于该请求,系统识别加密的计算机代码的一部分用于执行,并解密部分以产生解密的计算机代码。 然后,系统将解密的计算机代码存储在存储器池中,并从存储器池中执行解密的计算机代码。 系统可以基于随机化算法将解密的计算机代码存储在存储器池中,使得加密的计算机代码的相同执行导致在存储器池内的不同可用存储器位置的选择。 相关部分可以非连续地存储在存储器池中。 内存池可以随时间存储解密的计算机代码的不同部分。

    SYSTEM AND METHOD FOR EXECUTING AN ENCRYPTED BINARY FROM A MEMORY POOL
    27.
    发明申请
    SYSTEM AND METHOD FOR EXECUTING AN ENCRYPTED BINARY FROM A MEMORY POOL 有权
    从记忆池执行加密二进制的系统和方法

    公开(公告)号:US20120260102A1

    公开(公告)日:2012-10-11

    申请号:US13083497

    申请日:2011-04-08

    IPC分类号: G06F12/14

    摘要: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for executing encrypted computer code. A system configured to practice the method receives a request to execute encrypted computer code. In response to the request, the system identifies a portion of the encrypted computer code for execution and decrypts the portion to yield decrypted computer code. Then the system stores the decrypted computer code in a pool of memory and executes the decrypted computer code from the pool of memory. The system can store the decrypted computer code in the pool of memory based on a randomization algorithm so that identical executions of the encrypted computer code result in selections of different available memory locations within the pool of memory. Related portions can be stored non-consecutively in the pool of memory. The pool of memory can store different portions of decrypted computer code over time.

    摘要翻译: 这里公开了用于执行加密的计算机代码的系统,方法和非暂时的计算机可读存储介质。 配置为执行该方法的系统接收执行加密的计算机代码的请求。 响应于该请求,系统识别加密的计算机代码的一部分用于执行,并解密部分以产生解密的计算机代码。 然后,系统将解密的计算机代码存储在存储器池中,并从存储器池中执行解密的计算机代码。 系统可以基于随机化算法将解密的计算机代码存储在存储器池中,使得加密的计算机代码的相同执行导致在存储器池内的不同可用存储器位置的选择。 相关部分可以非连续地存储在存储器池中。 内存池可以随时间存储解密的计算机代码的不同部分。

    SYSTEM AND METHOD FOR BLURRING INSTRUCTIONS AND DATA VIA BINARY OBFUSCATION
    28.
    发明申请
    SYSTEM AND METHOD FOR BLURRING INSTRUCTIONS AND DATA VIA BINARY OBFUSCATION 有权
    用于通过二进制补偿来引导指令和数据的系统和方法

    公开(公告)号:US20120284688A1

    公开(公告)日:2012-11-08

    申请号:US13100041

    申请日:2011-05-03

    IPC分类号: G06F9/44

    CPC分类号: G06F21/14 G06F21/125

    摘要: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating a computer program. A system configured to practice the method identifies a set of executable instructions at a first location in an instruction section of the computer program and identifies a second location in a data section of the computer program. Then the system moves the set of executable instructions to the second location and patches references in the computer program to the set of executable instructions to point to the second location. The instruction section of the computer program can be labeled as _TEXT,_text and the data section of the computer program is labeled as _DATA,_data. The set of executable instructions can include one or more non-branching instructions optionally followed by a branching instruction. The placement of the first and second locations can be based on features of a target computing architecture, such as cache size.

    摘要翻译: 本文公开了用于模糊计算机程序的系统,方法和非暂时的计算机可读存储介质。 被配置为练习该方法的系统在计算机程序的指令部分中的第一位置识别一组可执行指令,并且识别计算机程序的数据部分中的第二位置。 然后系统将可执行指令集移动到第二位置,并将计算机程序中的引用修补到指向第二位置的可执行指令集。 计算机程序的指令部分可以标记为_TEXT,_text,计算机程序的数据部分标记为_DATA,_data。 该可执行指令集可以包括一个或多个非分支指令,可选地跟随分支指令。 第一和第二位置的放置可以基于诸如高速缓存大小的目标计算架构的特征。

    COMPUTER OBJECT CODE OBFUSCATION USING BOOT INSTALLATION
    29.
    发明申请
    COMPUTER OBJECT CODE OBFUSCATION USING BOOT INSTALLATION 有权
    使用引导安装的计算机对象代码OBFUSCATION

    公开(公告)号:US20090235089A1

    公开(公告)日:2009-09-17

    申请号:US12047207

    申请日:2008-03-12

    IPC分类号: G06F21/00

    CPC分类号: G06F21/14 G06F21/577

    摘要: In the field of computer software, obfuscation techniques for enhancing software security are applied to compiled (object) software code. The obfuscation results here in different versions (instances) of the obfuscated code being provided to different installations (recipient computing devices). The complementary code execution uses a boot loader or boot installer-type program at each installation which contains the requisite logic. Typically, the obfuscation results in a different instance of the obfuscated code for each intended installation (recipient) but each instance being semantically equivalent to the others. This is accomplished in one version by generating a random value or other parameter during the obfuscation process, and using the value to select a particular version of the obfuscating process, and then communicating the value along with boot loader or installer program software. This boot loader then selects which particular process to use for the code execution at the time of installation in accordance with the value. This results in different versions of the obfuscated code being provided to each recipient installation, which further enhances security of the code against reverse engineering by hackers.

    摘要翻译: 在计算机软件领域,用于增强软件安全性的混淆技术应用于编译(对象)软件代码。 这里的混淆结果在不同版本(实例)的混淆代码提供给不同的安装(收件人计算设备)。 互补代码执行在每个安装时使用引导加载程序或引导安装程序类型程序,其中包含必需的逻辑。 通常,混淆导致每个预期安装(接收者)的混淆代码的不同实例,但每个实例在语义上等同于其他安装。 这在一个版本中通过在混淆过程中产生随机值或其他参数来实现,并且使用该值来选择混淆过程的特定版本,然后与引导加载程序或安装程序软件一起传送该值。 然后,该引导加载程序根据该值选择在安装时用于执行代码的特定进程。 这导致了向每个接收方安装提供了不同版本的混淆代码,这进一步增强了代码的安全性,防止了黑客的反向工程。

    System and method for blurring instructions and data via binary obfuscation
    30.
    发明授权
    System and method for blurring instructions and data via binary obfuscation 有权
    通过二进制混淆模糊指令和数据的系统和方法

    公开(公告)号:US08615735B2

    公开(公告)日:2013-12-24

    申请号:US13100041

    申请日:2011-05-03

    IPC分类号: G06F9/44

    CPC分类号: G06F21/14 G06F21/125

    摘要: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating a computer program. A system configured to practice the method identifies a set of executable instructions at a first location in an instruction section of the computer program and identifies a second location in a data section of the computer program. Then the system moves the set of executable instructions to the second location and patches references in the computer program to the set of executable instructions to point to the second location. The instruction section of the computer program can be labeled as _TEXT,_text and the data section of the computer program is labeled as _DATA,_data. The set of executable instructions can include one or more non-branching instructions optionally followed by a branching instruction. The placement of the first and second locations can be based on features of a target computing architecture, such as cache size.

    摘要翻译: 本文公开了用于模糊计算机程序的系统,方法和非暂时的计算机可读存储介质。 被配置为练习该方法的系统在计算机程序的指令部分中的第一位置识别一组可执行指令,并且识别计算机程序的数据部分中的第二位置。 然后系统将可执行指令集移动到第二位置,并将计算机程序中的引用修补到指向第二位置的可执行指令集。 计算机程序的指令部分可以标记为_TEXT,_text,计算机程序的数据部分标记为_DATA,_data。 该可执行指令集可以包括一个或多个非分支指令,可选地跟随分支指令。 第一和第二位置的放置可以基于诸如高速缓存大小的目标计算架构的特征。