Abstract: Software is securely distributed with limited usage rights. The software may be an executable program and/or one or more data files such as image or multimedia data files. The software includes an access control object which prevents at least some usage of the software without use of a first access control code. The first access control code is produced based on selected information characteristic of the user's computer system. The access control code is produced in a server computer to which the user directs a request for the access control code. The user makes a payment to receive the access control code, which is then downloaded to the user's computer system.
Abstract: A method of macro-compressing a software product made up of one or more separate software packages matches strings having a predetermined minimum length with each other. The matching strings are expanded in size by including adjacent software. A compressed software object is formed by producing software blocks from the largest expanded matching strings and including assembly information that tells how to reconstruct the remaining strings from the software blocks. The software packages may either be data objects or executable objects.
A method of producing a maximally compressed software product first macro-compresses the software product, and subsequently micro-compresses it. Micro-compression matches strings of the macro-compressed software product, each having a predetermined maximum size and separated from each other by a maximum distance, and eliminates redundant strings.
Abstract: A method and system for producing multiple copies of an executable software object, in which a copy is functionally identical to all other copies while being structurally unique, alter the source code according to parameters specified by a seed and a set of preferences. High-level source code is translated to assembly code. Selected procedures from the assembly code are blended to form larger procedures functionally equivalent to the original procedures. Instructions within procedures are reshuffled, while the original flow of execution is conserved. Dummy opcodes are interspersed with executable instructions. The resulting modified code is translated to object code and an executable object is constructed. The invention is also embodied as a computer readable program product on a computer readable medium. Each copy bears a unique fingerprint that allows the producer of the product to exercise control over the use of the software product and prevent unauthorized use and copying.