Il potatura del codice è correlato all'offuscamento?

-1

Dalla mia ricerca, molti pacchetti di offuscamento / ottimizzazione includono una funzione chiamata potatura in cui il software rimuoverà il codice morto durante l'elaborazione.

I seguenti pacchetti includono sia l'offuscamento che l'eliminazione del codice come funzionalità (per citarne alcuni):

Vedo il filo comune che entrambe le operazioni richiedono la scansione e l'analisi di un assieme, ma sono curioso di sapere se le due funzionalità sono o potrebbero essere fondamentalmente correlate. La ragione per cui le chiedo è che stiamo prendendo in considerazione la possibilità di disabilitare il potatura del codice nel nostro ambiente (problema non correlato), ma la nostra preoccupazione è che potrebbe potenzialmente ridurre l'efficacia del processo di offuscamento e quindi proteggere la nostra proprietà intellettuale.

Il codice potrebbe o potrebbe influire sull'offuscamento della potatura e in che modo?

    
posta Kevin McCormick 28.02.2012 - 19:10
fonte

2 risposte

2

L'esistenza di un codice morto non aumenterebbe l'offuscamento, quando decompilando / deoffuscando il codice, il flusso del programma è sempre perso, le funzioni non sono ordinate nel modo in cui sarebbe naturalmente disposto da uno sviluppatore, quindi una volta l'output è reso, l'utente cerca sempre i punti di ingresso in oggetti / funzioni prima di iniziare a mappare i metodi / funzioni e le loro relazioni.

Il codice aggiuntivo non utilizzato potrebbe essere fonte di confusione per le persone che stanno tentando di riutilizzare il codice dopo che il codice è stato emesso, ma non renderebbe più difficile l'output del codice per gli algoritmi creare in primo luogo. Gli strumenti funzionerebbero allo stesso modo e non offrirebbero alcuna protezione aggiuntiva.

Alcune volte il codice morto viene effettivamente aggiunto per aumentare l'offuscamento (quindi non eliminarlo sembra che sarebbe meglio) ma in realtà è fatto per evitare il rilevamento. Come visto qui: link

    
risposta data 28.02.2012 - 23:20
fonte
1

L'offuscamento ha a che fare con l'occultamento o la dissimulazione dell'intento originale del codice di essere facilmente compreso dagli umani.

Rimuovere il codice morto (il codice che non è mai stato eseguito indipendentemente dagli input) è una tecnica di ottimizzazione che ha a che fare con il fatto che l'eseguibile usi meno tempo o spazio o entrambi.

La maggior parte, se non tutti i pacchetti elencati non riguardano solo l'offuscamento, ma fanno un sacco di cose per rendere il codice meno tempo o spazio o entrambi insieme ad altre funzionalità.

Alcune di queste ottimizzazioni potrebbero essere considerate per rendere più difficile la deduzione del flusso logico del codice da dedurre per un essere umano. La rimozione del codice morto probabilmente non è una di quelle ottimizzazioni.

    
risposta data 28.02.2012 - 23:56
fonte

Leggi altre domande sui tag