Three methods are disclosed for protecting software applications from unauthorized distribution and use (piracy). The first method involves using values generated by a conventional ESD (Electronic Security Device) to encrypt and/or decrypt user data (such as a file) that is generated and used by the application. In a preferred embodiment, the user data is encrypted (such as during a write to memory) using values returned by the ESD, and the user data is later decrypted using like values returned by a software-implemented ESD simulator. The second and third methods involve the use of special development tools that make the task of analyzing the application's copy protection code (such as the code used to encrypt and/or decrypt user data) significantly more difficult. Specifically, the second method involves using pseudocode to implement some or all of the application's copy protection functions. The pseudocode for a given function is generated (preferably in encrypted form) from actual code using a special development tool, and is then imbedded within the application together with a corresponding pseudocode interpreter. The interpreter fetches, decrypts and executes the pseudocode when the function is called. Because no disassemblers or other development tools exist for analyzing the pseudocode, the task of analyzing the copy protection functions becomes significantly more complex. The third method involves the use of a special obfuscation tool to convert the code for selected copy-protection functions into unnecessarily long, inefficient sequences of machine code. In one implementation of the obfuscation tool, the developer can control the quantity of code that is generated by specifying one or more control parameters. The three methods can also be used to protect software license management systems from security attacks.

Tre metodi sono rilevati per le applicazioni di protezione del software da distribuzione e da uso non autorizzati (pirateria). Il primo metodo coinvolge usando i valori generati da un ESD convenzionale (dispositivo di sicurezza elettronico) per cifrare e/o decrypt i dati dell'utente (quale una lima) che sono generati ed usati dall'applicazione. In un metodo di realizzazione preferito, i dati dell'utente sono cifrati (quale durante la scrittura alla memoria) usando i valori restituiti dal ESD ed i dati dell'utente sono più successivamente usando decrypted come i valori restituiti da un simulatore software-effettuato di ESD. I secondi e terzi metodi coinvolgono l'uso degli attrezzi di sviluppo speciali che fanno l'operazione di analizzare il codice di protezione di copia dell'applicazione (quale il codice usato per cifrare e/o decrypt i dati dell'utente) sensibilmente più di difficile. Specificamente, il secondo metodo coinvolge usando lo pseudocode per effettuare alcune o tutte le funzioni di protezione di copia dell'applicazione. Lo pseudocode per una data funzione è generato (preferibilmente nella forma cifrata) dal codice reale per mezzo di un attrezzo di sviluppo speciale ed allora è incluso all'interno dell'applicazione insieme ad un interpretatore corrispondente di pseudocode. L'interpretatore prende, decrypts ed esegue lo pseudocode quando la funzione è denominata. Poiché nessuno smontatore o altri attrezzi di sviluppo esiste per analizzare lo pseudocode, l'operazione di analizzare le funzioni di protezione di copia diventa sensibilmente più del complesso. Il terzo metodo coinvolge l'uso di un attrezzo speciale di confusione convertire il codice per le funzioni selezionate di copia-protezione in sequenze inutilmente lunghe e inefficienti del codice di macchina. In un'esecuzione dell'attrezzo di confusione, lo sviluppatore può controllare la quantità di codice che è generato specificando uno o più parametri di controllo. I tre metodi possono anche essere usati per proteggere i sistemi di amministrazione dell'autorizzazione del software dagli attacchi di sicurezza.

 
Web www.patentalert.com

< (none)

< Picture-in-picture and multiple video streams using slice-based encoding

> Methods and apparatus for committing configuration changes to managed devices prior to completion of the configuration change

> (none)

~ 00050