Abstract: Various techniques to detect and prevent reverse engineering of computer programs are disclosed. A program may be used as a key in an asymmetric cryptographic scheme, where modification of the program would destroy its usefulness as a key. An operator may be dispersed among different lines of code, so that unauthorized insertion or removal of lines of code causes the code to fail. Content of memory may be hashed at different times to detect unauthorized memory access. Code may be modified and hashes computed and compared to hashes expected from such modification. A duration of execution may be measured and compared to an expected duration, where deviation from expected may indicated unauthorized modification of code. Variables may be mapped according to a secret agreed logic to thwart eavesdropping. A program may be made labyrinthine and complex, so that its useful flow paths are difficult to discern.
Abstract: A system includes a plurality of computer devices connected to a network. The computer devices are operable by a plurality of users. The system further includes a server connected to the network. The server is to communicate data with the plurality of computer devices. The system further includes a bridge device connected to the network. The bridge device is to receive connection requests from the plurality of computer devices via the network. The bridge device is further to receive connection requests from the server via the network. The bridge device is further to mediate data communications between the plurality of computer devices and the server by communicating data through open connections made based on connection requests received from the plurality of computer devices and the server.