Qualsiasi soluzione completa per la protezione del codice binario e l'anti-reverse-engineering? [chiuso]

18

Qualcuno sa di buoni prodotti con funzionalità complete di hardening binario e anti-reverse-engineering? O meglio, qualcuno ha visto una recensione indipendente che confronta i prodotti che eseguono questi tipi di protezione del codice binario? Ne ho trovati solo uno o due che offrono soluzioni complete:

  1. Arxan GuardIt link
  2. PikeWerks link

Di questi anche Arxan sembra il più completo in termini di meccanismi di protezione. I tipi di funzionalità che sto cercando includono:

  • protezione contro il reverse engineering
  • protezione contro attacchi BORE (interruzione una volta eseguita ovunque)
  • protezione contro la manomissione
  • protezione contro la modifica binaria

Per fornire queste funzionalità, i prodotti implementerebbero molte tecniche diverse nelle categorie più ampie di:

  • offuscamento binario statico e dinamico
  • macchine virtuali
  • crittografia statica e di runtime
  • checksum e tempistiche
  • anti-debugging
  • l'autenticazione

Ad esempio, per implementare l'offuscamento binario statico, il prodotto dovrebbe offrire molte tecniche diverse dalla costante di base e dalla rinominazione all'esportazione a chaffing di percorsi, inserimento di codice falso e altro. Per un buon riferimento, consultare il documento di Andrew Griffith su Schemi di protezione binaria all'indirizzo felinemenace. org .

Non ne so molto di PikeWerks, ma mi piace come il prodotto di Arxan suona come si integra facilmente in un ambiente di costruzione, quindi non è richiesto alcun codice personalizzato. Inoltre sembra avere capacità non solo di difendere ma di rilevare e reagire agli attacchi.

* Aggiornamento * Avrei dovuto elencare i requisiti della piattaforma: Linux, x86, x64, Java, C e C ++.

    
posta Weber 09.12.2010 - 19:06
fonte

7 risposte

9

Più investi nella protezione del tuo binario dai cracker:

  • minore è il costo del progetto che viene investito per aggiungere valore al cliente
  • più diventa costoso il tuo prodotto, allontanando i clienti legittimi
  • maggiore è il tempo di immissione sul mercato, consentendo a un concorrente meno conservativo di eseguire più rapidamente

Le macchine virtuali sono parte integrante del modo in cui i reparti IT vengono eseguiti ora. Evita di correre in una VM e eviti di vendere il tuo prodotto a una parte del mercato.

L'autenticazione a prova di manomissione / autenticazione dovrebbe probabilmente essere gestita da una funzione del sistema operativo: so che Windows, Mac OS e molte piattaforme smartphone lo supportano già. La mia principale area di competenza è OS X, che ha una bandiera "kill" tale che un processo che diventa non firmato può volontariamente suicidarsi. Un'applicazione può testare la propria firma, che viene fornita con la condizione che se la tua app è stata decifrata puoi presumere che il test sia stato modificato o rimosso.

Le tecniche di offuscamento / crittografia sono inutili: ad un certo punto la CPU deve vedere le istruzioni che deve effettivamente essere eseguita, e in questo momento queste istruzioni possono essere scaricate per generare il binario "pulito".

    
risposta data 09.12.2010 - 23:19
fonte
6

Riassumendo tutte le risposte precedenti - è impossibile proteggere la tua applicazione con una garanzia del 100%. Se il software è buono, prima o poi verrà incrinato, se la protezione è difficile, allora verrà cardata (comprata illegalmente, ma con licenza legale) e verrà trovato il modo in cui eseguire il software senza pagare per questo. Basta guardare IDA Pro - penso che l'autore di questo software sappia davvero come proteggere il suo software, tuttavia, possiamo trovare versioni crackate su Internet. Quindi, se vuoi iniziare a vendere il tuo programma, sii pronto per la corsa eterna tra cracker e sviluppatori, che stanno cercando di pensare a cosa fare dopo il rilascio per cambiare / migliorare la protezione.

Senza gli aspetti filosofici della protezione binaria, solitamente vengono utilizzati diversi metodi di protezione:

  • collegamento all'hardware;
  • controlli CRC;
  • Nascondere il punto di ingresso originale;
  • diversi trucchi di disimballaggio: applicazione di algoritmi di decompressione insoliti;
  • importazione e altre sezioni dannose;
  • diversi trucchi anti-debugging tramite bug debugger;

Tutto ciò è in grado di essere aggirato. Inoltre, rallenta il software, a volte porta a nuovi bug e problemi di instabilità.

Di solito gli sviluppatori applicano al loro software:

  • code mixing (scrambling), offuscamento;
  • crittografia dell'applicazione;
  • utilizzo di pseudo-codice;
  • errori intenzionali che spuntano tramite EH;

Ancora una volta, in qualsiasi modo è in grado di aggirare questa protezione. Tuttavia, la crittografia sembra più consigliabile e la migliore soluzione oggi. Ma potrebbe essere difficile da implementare in modo sicuro, inoltre, potrebbe rallentare notevolmente il software.

E infine il software di protezione. Da quello che ho sentito essere buono:

Non approfondirò l'osservazione di ciascuno dei suddetti software, dovresti farlo da solo. Se stai pensando di acquistare la licenza di uno di quei protettori, pensa ai tuoi sforzi, alle possibili questioni riguardanti le protezioni.

    
risposta data 10.12.2010 - 12:23
fonte
4

Uso il server SLP di InishTech. link È stato precedentemente sviluppato da Microsoft e trasformato in una società di terze parti.

SLP è una tecnologia che protegge il software in esecuzione su piattaforme Windows e risolve molti, se non tutti i tuoi dubbi. Ho comunicato con il proprio rappresentante di vendita e hanno piani economici per piccoli sviluppatori, startup e implementazioni personalizzate del software.

Gestisce inoltre licenze software, misurazione e prova prima dell'acquisto in combinazione con la protezione del codice di base.

    
risposta data 10.12.2010 - 16:17
fonte
2

Inizierò dicendo che non esiste un modo garantito per applicare queste cose. La mia raccomandazione è di non spedire i tuoi algoritmi personalizzati al client, tenerli su un server che è sotto il tuo controllo.

    
risposta data 09.12.2010 - 22:49
fonte
2

Quei prodotti che hai identificato fanno quello che dicono che faranno, ma quello che Woot4Moo e Graham Lee hanno detto è vero. Non è possibile impedire il reverse engineering. Non è una discussione filosofica, è una semplice realtà. Le persone che lo fanno meglio sembrano essere i cattivi, finora, ma chiunque può aspettarsi di fare è rallentare un attacco.

Che cosa stai cercando di ottenere da esso? Se stai semplicemente proteggendo il tuo IP, dimenticalo. Se il meccanismo principale è top secret, non mettere l'app di dominio pubblico. Se stai semplicemente cercando di rallentare i cattivi, usa una di quelle app che hai già menzionato.

Ma ricorda - non credere che non sarà hackerato e non promettere nulla del genere agli stakeholder: -)

    
risposta data 10.12.2010 - 10:04
fonte
2

Quello che stai cercando di fare non è solo un problema difficile da risolvere, è un problema probabilmente impossibile da risolvere. Se si consegna il programma a un utente che ha il controllo completo del proprio ambiente operativo, semplicemente non è possibile controllare come verrà eseguito. Non è solo difficile, è impossibile.

Puoi renderlo più difficile per lui, ma ognuna di queste tattiche e tecniche ha un costo, e in un modo molto reale riduce il valore complessivo del tuo software al consumatore, come discusso in altre risposte.

Invece, se sei preoccupato, dovresti concentrarti su un servizio a valore aggiunto che colleghi i tuoi clienti paganti a un sistema tu controllo, non a loro. Se gli utenti ottengono un valore aggiunto legando il loro software ad un account esterno (ad esempio un account sul tuo server), puoi utilizzare quel link per identificare in modo positivo i tuoi clienti paganti.

    
risposta data 12.12.2011 - 02:54
fonte
0

Molto d'accordo con gli altri poster, @Graham, @Rory, @Ams, ecc ...
Ciò renderà solo più difficile e preverrà la pirateria casuale. Se qualcuno vuole davvero ottenere il tuo codice, lo farà. Nel peggiore dei casi possono collegare un debugger e ottenere il codice macchina decrittografato.

Ne aggiungerò un'altra molto buona: SmartAssembly di Red-Gate .

    
risposta data 11.12.2010 - 22:17
fonte