Domanda

Sono un programmatore. Ho circa 5 anni di esperienza di programmazione in diversi tipi di lingue. Mi è stato di circa circa la mia velocità codice, su come ottimizzare la memoria che utilizza il mio codice, e circa il buon stile di codifica e così via. Ma non hanno mai pensato a quanto sicuro il mio codice è. Così ho smontato il mio codice per vedere che cosa può fare un hacker. Sarebbe facile da decifrare il mio codice? E ho visto che si tratta! E 'molto facile, perché ero l'archiviazione

  1. il numero di serie come stringa
  2. codici di cifratura-decifratura così

Quindi, se qualcuno ha la minima conoscenza di assemblatore lui / lei può solo semplice simulatore e dopo 10-20 minuti di debug il mio codice è rotto !!! Anche potrebbe essere fatto aprendo l'exe con notepad immagino! : -)

Quindi quello che chiedo sono i seguenti:

  1. Dove devo conservare questo tipo di informazioni di sicurezza?
  2. Quali sono le strategie comuni di fornire un codice di sicurezza?
È stato utile?

Soluzione

La prima cosa che dobbiamo capire è che non sarete mai impedire a un determinato invertitore di cracking eventuali schemi di protezione perché tutto ciò che il codice può fare, l'inversore finirà per trovare il modo di replicarlo. L'unico modo è possibile ottenere qualsiasi tipo di protezione affidabile è quello di avere il programma fornito sia niente di più che un cliente muto e avere il peso del software su alcuni server invertitore non ha accesso a.

Con quella di mezzo, si può certamente fare è difficile per una sarebbe invertitore di rompere le protezioni dei tuoi. offuscamento è il tipo di primo passo per raggiungere questo. Non ho esperienza con obfuscators ma sono sicuro che potete trovare alcuni suggerimenti per un po 'su SO. Anche se si sta utilizzando un linguaggio di basso livello come C / C ++, è sufficiente compilare il codice con ottimizzazione completa e stripping tutti i simboli di debug si ottiene una discreta quantità di offuscamento.

questo articolo a pochi anni fa, ma io continuo a pensare IT di tecniche reggono oggi. E 'uno degli sviluppatori di un videogioco chiamato Spyro parlando l'insieme delle tecniche hanno usato per prevenire la pirateria. Essi sostengono che non era fino a 3 mesi dopo il rilascio di una versione di cracking si sono resi disponibili, il che è abbastanza impressionante.

Altri suggerimenti

Se siete preoccupati per la pirateria, poi ci sono molte strade che si possono prendere. Rendere il codice di sicurezza più stretta (offuscamento, codici di licenza, vincolante il software per un PC particolare, di protezione hardware / dongle, ecc) è uno, ma vale la pena tenendo presente che tutti pezzo di software può essere incrinato se qualcuno sufficientemente di talento può essere disturbato.

Un altro approccio è quello di considerare il modello di pricing per il software. Se si carica $ 1000 copie, poi c'è un grande incentivo per qualcuno di avere un andare a romperlo. Se si carica solo $ 5 allora perché qualcuno dovrebbe preoccuparsi di crack?

Quindi, ciò che è necessario è un equilibrio. Anche la protezione più semplice si fermerà persone comuni che fanno copie casuali. Oltre a ciò, le tecniche semplici (di offuscamento e di licenza codici) e una strategia di prezzo ragionevole terrà più aspiranti cracker a bada da fare che non vale la pena il fastidio di cracking. Dopo di che, si inizia a entrare in sempre più sofisticate tecniche (dongle / CD che hanno bisogno di essere presente per eseguire il software, solo essere in grado di eseguire il software dopo l'accesso a un sistema di licenze on-line), che prende un sacco di fatica / costo per implementare e di aumentare in modo significativo il rischio di clienti veri fastidiosi (ricordare come tutti infastiditi ottenuto quando hanno comprato la metà di vita ma non sarebbe farli giocare il gioco?) - a meno che non si dispone di un prodotto mainstream popolare (cioè un flusso di entrate enorme per proteggere), probabilmente non ha più molto senso andare a quel molto sforzo.

Lo rendono web app.

E 'generalmente non essere ben protetto a meno che non ci sia un servizio esterno a fare la verifica che si è in controllo di - e che il servizio può ancora essere falsificato da chi vuole davvero "crack" esso. Al contrario, la fiducia del cliente e fornire solo una protezione minima del copyright. Sono sicuro che c'era un articolo o un podcast su questo da Joel Spolsky da qualche parte ... ecco un altro Relativo alla domanda SO .

Non ho idea se sarà fare a meno di Windows fornisce (dal 2000) un meccanismo per recuperare e memorizzare crittografato informazioni e inoltre è possibile a Salt Questa archiviazione su una base per-applicazione, se necessario: Data Protection API ( DPAPI )

Questo è su una macchina o di un livello di utente, ma la memorizzazione di pubblicazioni periodiche e forse alcuni tasti suo utilizzo potrebbe essere migliore di averli nascosti nella domanda?

Che tipo di sicuro stai parlando? Fissare dal punto di vista che si sono a guardia bene i tuoi dati degli utenti? Se è così, studiare qualche reale la crittografia e utilizzare esistenti le librerie per crittografare i dati. L'API Win32 è abbastanza buono per questo.

Ma se si sta parlando di fermare un cracker di rubare la vostra applicazione? Ci sono molti metodi, ma solo rinunciare. Essi rallentano cracker verso il basso, non li fermano.

In primo luogo è necessario definire ciò che il codice deve essere protetto contro, essendo sicuro come tale è privo di significato.

Ti sembra di essere preoccupati per il reverse engineering e gli utenti che generano codici di licenza senza pagare, anche se non si dice così. Per rendere questo più difficile si può offuscare il codice e le informazioni chiave in vari modi. C'è spazio anche tecniche per rendere l'uso di debugger più difficile, per evitare che il reverse engineering dal fare un passo attraverso il codice e vedere le informazioni in modo chiaro. Ma questo fa solo reverse engineering po 'più difficile, non impossibile

Un'altra minaccia per la sicurezza comune è l'esecuzione di codice indesiderato, ad esempio tramite buffer overflow.

Una tecnica semplice per farlo è quello di XOR su tutto il codice e XOR indietro quando ne avete bisogno ... ma questo ha bisogno di una conoscenza innata di montaggio ... Non sono sicuro, ma si potrebbe provare questo:

void (*encryptionFunctn)(void);
void hideEncryptnFunctn(void)
{
    volatile char * i;
    while(*i!=0xC0) // 0xC0 is the opcode for ret
    {
        *i++^=0x45; // or any other code
    }
}

Per evitare che gli hacker contro la visualizzazione del codice, è necessario utilizzare un obfuscator. Un obfuscator utilizzerà diverse tecniche che rendono estremamente difficile fare senso del codice offuscato. Alcune tecniche utilizzate sono la crittografia stringa, simbolo ridenominazione, controllo di offuscamento del flusso, ecc Scopri Crypto Obfuscator che in aggiunta ha anche esterna chiamata al metodo nascondiglio, Anti-Reflector, Anti-Debug, etc

L'obiettivo è quello di erigere il maggior numero possibile di ostacoli nel percorso di un potenziale hacker.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top