SYSTEM AND METHOD FOR BLURRING INSTRUCTIONS AND DATA VIA BINARY OBFUSCATION
    1.
    发明申请
    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。 该可执行指令集可以包括一个或多个非分支指令,可选地跟随分支指令。 第一和第二位置的放置可以基于诸如高速缓存大小的目标计算架构的特征。

    System and method for executing an encrypted binary from a memory pool
    2.
    发明授权
    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
    3.
    发明申请
    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 branch function based obfuscation
    4.
    发明授权
    System and method for branch function based obfuscation 有权
    基于分支函数的混淆的系统和方法

    公开(公告)号:US08751823B2

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

    申请号:US13195748

    申请日:2011-08-01

    IPC分类号: G06F21/22

    CPC分类号: G06F21/14 G06F2221/033

    摘要: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating branches in computer code. A compiler or a post-compilation tool can obfuscate branches by receiving source code, and compiling the source code to yield computer-executable code. The compiler identifies branches in the computer-executable code, and determines a return address and a destination value for each branch. Then, based on the return address and the destination value for each branch, the compiler constructs a binary tree with nodes and leaf nodes, each node storing a balanced value, and each leaf node storing a destination value. The non-leaf nodes are arranged such that searching the binary tree by return address leads to a corresponding destination value. Then the compiler inserts the binary tree in the computer-executable code and replaces each branch with instructions in the computer-executable code for performing a branching operation based on the binary tree.

    摘要翻译: 本文公开了用于在计算机代码中模糊分支的系统,方法和非暂时的计算机可读存储介质。 编译器或后编译工具可以通过接收源代码来模糊分支,并编译源代码以产生计算机可执行代码。 编译器识别计算机可执行代码中的分支,并确定每个分支的返回地址和目标值。 然后,基于每个分支的返回地址和目的地值,编译器构造具有节点和叶节点的二叉树,每个节点存储平衡值,并且每个叶节点存储目的地值。 非叶节点被布置为使得通过返回地址搜索二叉树导致相应的目的地值。 然后,编译器将二进制树插入计算机可执行代码,并用计算机可执行代码中的指令替换每个分支,以执行基于二叉树的分支操作。

    SYSTEM AND METHOD FOR BINARY LAYOUT RANDOMIZATION
    5.
    发明申请
    SYSTEM AND METHOD FOR BINARY LAYOUT RANDOMIZATION 审中-公开
    用于二进制布局约束的系统和方法

    公开(公告)号:US20120260106A1

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

    申请号:US13081994

    申请日:2011-04-07

    IPC分类号: G06F12/14

    CPC分类号: G06F21/14 G06F12/1408

    摘要: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for binary layout randomization. A system performs binary layout randomization by loading computer code into memory and identifying a section of the computer code to randomize. A loader remaps the section of computer code to a different location in memory utilizing a remapping algorithm. The loader can shuffle sections of code in place or move sections of code elsewhere. The loader patches relative addresses to point to the updated locations in memory. After the system patches the addresses, the system executes the computer code from memory. In one embodiment, the system encrypts the computer code prior to loading the computer code into memory. The loader decrypts the encrypted computer code prior to remapping the section of computer code to a different location in memory. Optionally, the loader can decrypt the encrypted computer code after patching relative addresses.

    摘要翻译: 本文公开了用于二进制布局随机化的系统,方法和非暂时计算机可读存储介质。 系统通过将计算机代码加载到内存中并识别计算机代码的一部分来随机化来执行二进制布局随机化。 使用重新映射算法,加载器将计算机代码的部分重新映射到存储器中的不同位置。 加载器可以将代码段拖放到位或将代码段移到其他位置。 加载程序将相对地址补丁指向内存中更新的位置。 系统修补地址后,系统会从内存中执行计算机代码。 在一个实施例中,系统在将计算机代码加载到存储器之前加密计算机代码。 在重新映射计算机代码部分到存储器中的不同位置之前,加载器解密加密的计算机代码。 可选地,加载器可以在修补相对地址之后对加密的计算机代码进行解密。

    System and method for blurring instructions and data via binary obfuscation
    6.
    发明授权
    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。 该可执行指令集可以包括一个或多个非分支指令,可选地跟随分支指令。 第一和第二位置的放置可以基于诸如高速缓存大小的目标计算架构的特征。

    SYSTEM AND METHOD FOR BRANCH FUNCTION BASED OBFUSCATION
    7.
    发明申请
    SYSTEM AND METHOD FOR BRANCH FUNCTION BASED OBFUSCATION 有权
    基于分支函数的OBFUSC的系统和方法

    公开(公告)号:US20130036473A1

    公开(公告)日:2013-02-07

    申请号:US13195748

    申请日:2011-08-01

    IPC分类号: G06F21/00 G06F9/38 G06F9/45

    CPC分类号: G06F21/14 G06F2221/033

    摘要: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating branches in computer code. A compiler or a post-compilation tool can obfuscate branches by receiving source code, and compiling the source code to yield computer-executable code. The compiler identifies branches in the computer-executable code, and determines a return address and a destination value for each branch. Then, based on the return address and the destination value for each branch, the compiler constructs a binary tree with nodes and leaf nodes, each node storing a balanced value, and each leaf node storing a destination value. The non-leaf nodes are arranged such that searching the binary tree by return address leads to a corresponding destination value. Then the compiler inserts the binary tree in the computer-executable code and replaces each branch with instructions in the computer-executable code for performing a branching operation based on the binary tree.

    摘要翻译: 本文公开了用于在计算机代码中模糊分支的系统,方法和非暂时的计算机可读存储介质。 编译器或后编译工具可以通过接收源代码来模糊分支,并编译源代码以产生计算机可执行代码。 编译器识别计算机可执行代码中的分支,并确定每个分支的返回地址和目标值。 然后,基于每个分支的返回地址和目的地值,编译器构造具有节点和叶节点的二叉树,每个节点存储平衡值,并且每个叶节点存储目的地值。 非叶节点被布置为使得通过返回地址搜索二叉树导致相应的目的地值。 然后,编译器将二进制树插入计算机可执行代码,并用计算机可执行代码中的指令替换每个分支,以执行基于二叉树的分支操作。

    System and method for entropy pool verification
    8.
    发明授权
    System and method for entropy pool verification 有权
    熵池验证的系统和方法

    公开(公告)号:US08656363B2

    公开(公告)日:2014-02-18

    申请号:US12815298

    申请日:2010-06-14

    IPC分类号: G06F9/44 G06F11/30 G06F12/14

    摘要: Disclosed are systems, methods, and non-transitory computer-readable storage media for detecting changes in a source of entropy. A system configured to practice the method generates a cyclic graph based at least in part on the values in the entropy pool. Using the cyclic graph and one or more starting points, the system establishes one or more baseline properties for the cyclic graph. These properties can include the number of steps required to identify a cycle in the graph or the number of steps required to traverse the graph from one or more starting points to a selected end point. The computed properties are then stored for later use. As execution progresses, the system monitors the entropy pool to detect a change by regenerating the cyclic graph and using the stored properties.

    摘要翻译: 公开了用于检测熵源中的变化的系统,方法和非暂时的计算机可读存储介质。 配置为实施该方法的系统至少部分地基于熵池中的值来生成循环图。 使用循环图和一个或多个起始点,系统建立循环图的一个或多个基线属性。 这些属性可以包括识别图形中的循环所需的步骤数量,或者从一个或多个起始点到所选终点遍历图形所需的步骤数。 然后将计算的属性存储以供以后使用。 随着执行的进行,系统通过重新生成循环图并使用存储的属性来监视熵池来检测变化。

    SYSTEM AND METHOD FOR ENFORCING SOFTWARE SECURITY THROUGH CPU STATISTICS GATHERED USING HARDWARE FEATURES
    9.
    发明申请
    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周期计数的原子指令。 要获取有关特定部分代码的信息,软件开发人员可以在所需代码段周围插入启动和停止指令。 对于识别的代码块中的每个指令,执行指令时,计数器递增。 计数器可以存储在专用寄存器中。 收集的统计信息可以用于各种目的,例如检测未经授权的代码修改或测量代码性能。

    SYSTEM AND METHOD FOR ENTROPY POOL VERIFICATION
    10.
    发明申请
    SYSTEM AND METHOD FOR ENTROPY POOL VERIFICATION 有权
    入侵池验证的系统和方法

    公开(公告)号:US20110307873A1

    公开(公告)日:2011-12-15

    申请号:US12815298

    申请日:2010-06-14

    IPC分类号: G06F9/44

    摘要: Disclosed are systems, methods, and non-transitory computer-readable storage media for detecting changes in a source of entropy. A system configured to practice the method generates a cyclic graph based at least in part on the values in the entropy pool. Using the cyclic graph and one or more starting points, the system establishes one or more baseline properties for the cyclic graph. These properties can include the number of steps required to identify a cycle in the graph or the number of steps required to traverse the graph from one or more starting points to a selected end point. The computed properties are then stored for later use. As execution progresses, the system monitors the entropy pool to detect a change by regenerating the cyclic graph and using the stored properties.

    摘要翻译: 公开了用于检测熵源中的变化的系统,方法和非暂时的计算机可读存储介质。 配置为实施该方法的系统至少部分地基于熵池中的值来生成循环图。 使用循环图和一个或多个起始点,系统建立循环图的一个或多个基线属性。 这些属性可以包括识别图中的周期所需的步骤数量,或者从一个或多个起始点到所选终点遍历图形所需的步骤数。 然后将计算的属性存储以供以后使用。 随着执行的进行,系统通过重新生成循环图并使用存储的属性来监视熵池来检测变化。