Domanda

C'è qualche modo per offuscare eseguibili o le librerie basate su C per prevenire decompilazione?

È stato utile?

Soluzione

No. È possibile rendere più difficile per decompilare ma non si può prevenire di esso. Il mio consiglio è quello di smettere di sprecare il vostro tempo e invece di concentrarsi sulla realizzazione di un prodotto fantastico con caratteristiche sempre migliori.

Poi la gente sarà disposta a pagare per questo.

Il problema principale è che l'unico modo per rendere il codice non-decifrabile è quello di rendere non-eseguibile. Tutto ciò che può essere caricato in un PC può essere violata. Le persone che fanno di ingegneria per divertimento, il profitto o la fama invertire sono generalmente molto bravo e sarà davvero non essere minimamente per fasi in tutto ciò che fate per cercare di fermarli.

Essi hanno accesso a strumenti che rendono il lavoro di decifrare il codice molto più facile che il lavoro avrete offuscando esso :-) Molto meglio per convincere il mondo in generale che il software sia un valore di acquisto, e di vedere la pirateria come un'opportunità per convertire possibilmente "ladri" per gli utenti genuini.

Ad esempio, per saperne di perché Sono non pagare per il software e provare a sistemare le cose. Non sarai mai di convertire il 100% della popolazione, alcuni pirata il codice solo per il gusto di farlo.

Controlla la serie di articoli in esecuzione su su techdirt riguardante CWF + RTB (contatto con i fan più ragione comprare). Ho trovato molti dei punti sollevati ci potrebbe essere applicabile al settore del software.

Altri suggerimenti

Il modo più semplice : Comprare un prodotto packer / cryptor / obfuscator. Alcuni sono costosi e utilizzati nei giochi, alcuni non lo sono. Google per loro da parole d'ordine come "protezione contro la copia", ecc.

Il modo più veloce : pacchetto con UPX e poi storpiare il intestazione da qualche parte in modo che sarà ancora caricato in memoria ed eseguire bene, ma l'utilità upx fallirà con un errore (provare il campo di versione). 95% rinuncerà se l'utilità upx fallisce.

Il modo più duro : Scrivi la tua packer

.

Ah, dimenticavo:

reale modo semplice : Basta spedire così com'è. No davvero - qualunque cosa tu faccia la gente può ancora decodificare il codice. La quantità di sforzo si mette in proprio limita quanti possono invertire tale tendenza.

compilare con ottimizzazione completa.

"eseguibili offuscato" non ha senso. L'hardware deve essere in grado di "capire" il codice in grado di eseguirla, e l'hardware può capire, un ingegneria umana inversa può capirlo. Il massimo che si può fare sarà rendere più noioso di capire, ma probabilmente non di molto, e ad un costo.

Per rendere più difficile? Sicuro. Si prega di non farlo.

Per impedirlo? No. Qualsiasi sistema che sta per eseguire il binario sarà necessario il software per decifrare qualsiasi schema si arriva con. Ed essi saranno in grado di decompilare che e poi vedere come i binari oscurate vengono interpretati.

Penso che se si parla di compilato binario non c'è molto che si può fare, (forse solo applicare UPX o strumento correlato), che non fa un sacco di sence dal momento che può essere invertito.

Se si parla di scrittura di nuovo codice, provare Auto Modyfing C Codice che sarà probabilmente il modo più duro di ri ingegnere l'applicazione.

La compilazione di codice C con un compilatore ottimizzato rende impossibile ripristinare il codice sorgente originale o qualcosa che assomiglia anche lontanamente esso. E 'molto più sicuro rispetto a qualsiasi delle obfuscators Java o .NET che sono popolari in questi giorni. Assicurarsi di togliere l'eseguibile se si vuole renderlo più piccolo e nascondere eventuali nomi dei simboli prima del rilascio. Tuttavia, si noti che questo rende anche il debugging ( quando l'applicazione si blocca) praticamente impossibile.

Anche così, se qualcuno vuole davvero incidere il vostro software, lo farà a livello di montaggio, possibilmente con il software del caricatore o altro inganno - non importa che cosa si cerca di fare per impedirglielo. Molte aziende hanno cercato, ma nessuno sono riusciti. Utilizzando hack come questo solo vanificare l'utente finale in quanto potrebbero bloccarsi l'applicazione o persino andare in crash il debugger incorporato Windows.

Esci sprecare il vostro tempo a pensare offuscamento, mentre si dovrebbe migliorare il programma, invece.

Decompilazione ( Nessun Altro Gotos ) e sia la pratica offuscamento ( Flowtables ) e la teoria (indistinguibilità offuscamento) sono aree attive di ricerca e quindi non ci sono soluzioni - solo strumenti, tecniche e competenze. Se si vuole veramente il vostro codice per essere impermeabile alla decomplilation, creare una web app, e mettere il lato server del codice sensibile. Ma se sei bloccato al modello di dare a qualcuno un binario, allora si deve giudicare con saggezza il trade-off si vuole fare tra sicurezza e prestazioni. Offuscamento ha un costo, ed è ancora mai perfetto. Alcune opzioni

  • Utilizzare un software diverso da UPX (UPX viene installato in molte distribuzioni Linux). Il costo delle prestazioni è bassa e la maggior parte delle persone non hanno la capacità di decomprimere manualmente un binario per l'analisi statica. Ma per invertitori esperti, il costo del disimballaggio è irrilevante
  • Scopri Tigress, un virtualizzatore / obfuscator diversificando con ricche funzioni per il C source-to-source offuscamento. Per una migliore prestazione, fare affidamento sulle trasformazioni di supporto, appiattimento del flusso di controllo, funzione di fusione / scissione, codifica letterale
  • Se si desidera una protezione ancora maggiore, controlla grandi trasformazioni del Tigress:. Virtualizzazione, JITing, ecc, ma sono abbastanza certo questi sono più costosi e gli utenti potrebbero notare un rallentamento se si utilizzano queste trasformazioni

Non fatevi scoraggiare dal lavoro seminale di Barak et al sull'impossibilità di scatola nera offuscamento. Egli dimostra soltanto l'impossibilità di scatola obfuscators neri, non l'impossibilità di molti offuscamenti pratici e utili. (Scatola nera offuscamento essendo il funzionamento interno del programma sono completamente incomprensibile) Inoltre non scoraggiatevi dai pirati. C'è sempre gente che ne fanno un punto di acquistare il prodotto se è buono.

Perché offuscare il codice se c'è un guadagno commerciale da esso? Per essere onesti, supponiamo che il codice commerciale è ottimizzato abbastanza e offuscato, e le opere, poi la madre di un tutto cosa imbarazzante è successo - un problema tecnico .... si è bloccato imho, come il codice binario di produzione è offuscato, rendendo più difficile di debug dove il glitch sta accadendo e difficili da replicare, esso sarà bloccato nella lista BUGS sempre ...

Per esempio, cercando di trovare la traccia dello stack, si ritroverà con la perdita più peli che mai a cercare di capire il codice smontata a lavorare fuori WTF sta succedendo in là, risme infinite loop di spaghetti. In breve, non farlo!

ci si ritroverà con la perdita di denaro nel tentativo di eseguire il debug del problema tecnico ... o devi essere un esperto assemblatore brillante di leggere la memoria discariche e lavorare fuori dal codice offuscato ... Non gettarlo via, basta avere il tuo bel lavoro del prodotto e venderlo ... Certo, c'è un sacco di persone che hanno tempo a disposizione per romperlo dal reverse-engineering del codice ...

Il segreto per battere che sta seguendo il principio - rilascio di frequente, il rilascio spesso , apportare miglioramenti, come si rilascia spesso, in questo modo le più recenti e le caratteristiche più grandi sarebbero più up-to-date, allora il tempo necessario per un cracker per smontarlo e lavorare fuori! Guardate il codice sorgente di Linux, le patch sono disponibili in, poi viene rilasciato ... se si mantiene questo principio in mente, attraverso il rilascio di nuova versione con più funzioni a un ritmo molto più veloce allora si vince!

Un modo per rendere le cose un po 'più difficile è per il confezionamento di loro. UPX si può confezionare i binari che rende più difficile per decompilare fuori dalla scatola. Tecnicamente è possibile disfare e poi decompilare ma sarà alzare il tiro un po '. Supponendo che si sta eseguendo su un sistema operativo user vaniglia non c'è un bel po 'che si può fare per prevenire la decompilazione senza utilizzare brutti scherzi.

Se si vuole veramente per jumble in su è necessario un programma separato per farlo. Come sviluppatore si scrive il codice in forma più pulita e più leggibile. Messaggio di compilazione si esegue l'applicazione separata per fare l'offuscamento. È possibile acquistare tali applicazioni per circa $ 100K.

Se la vostra intenzione è quella di fermare il codice venga invertita costruito che probabilmente funzionerà. Se la vostra intenzione è quella di impedire a qualcuno di violare la sicurezza poi offuscamento da solo non si fermerà un attaccante determinato. A un certo punto c'è una decisione sì / no non hanno bisogno di capire il codice per scoprire che né di aggirarlo.

Piccolo compilatore C modificato per produrre codice offuscato: http://blogs.conus.info/node/58

Per fornire un supporto teorico per le risposte qui: nel 2001 Barak et. al. dimostrato che programma offuscamento è impossibile in generale .

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