Java / C # - Quando dovrebbe essere considerato AOT se il reverse engineering è un problema?

4

Lungo e breve è davvero nel titolo della domanda. Per un linguaggio che compila in un linguaggio intermedio come MSIL o codice byte Java, se c'è preoccupazione su qualcosa come reverse engineering o hacking per disabilitare le funzionalità di sicurezza, si dovrebbe considerare la compilazione AOT (in anticipo) piuttosto che solo l'offuscamento? Ovviamente, c'è un po 'di spazio di manovra in questa domanda perché non c'è una risposta che non immaginerei, ma quando inizieresti a eseguire una compilazione AOT prima di distribuire qualcosa rispetto a inviarla offuscata?

Per tutti coloro che si imbattono in questo e non hanno familiarità:

Inserimento di Wikipedia su compilatori AOT: link

Caratteristica del compilatore AOT mono: link

    
posta trycatch 21.09.2011 - 18:49
fonte

4 risposte

0

Comprendo che gli assembly .NET (e, presumo che i file java. class) includano un valore hash di qualche tipo. Se il valore hash fallisce quando viene caricato .class o assembly, credo che sia stato respinto e che venga lanciata un'eccezione. Quindi, se qualcuno decidesse di prendere un editor esadecimale in un assembly o in un file .class, dovrebbe sapere come è stato calcolato il valore hash e aggiornare anche quella parte del file con il valore corretto.

Inoltre, gli assembly .NET possono anche essere Strongly Named che possono anche aiutare a garantire integrità e provenienza degli assiemi.

    
risposta data 23.09.2011 - 12:18
fonte
1

should AOT (ahead of time) compilation be considered rather than just obfuscation?

Sebbene probabilmente non sia il tuo intento, ciò può essere interpretato come "dovremmo usare la compilazione AOT anziché l'offuscamento", il che implica che la compilazione AOT > offuscazione. Questo non è necessariamente il caso, infatti, direi che una buona offuscazione è migliore della compilazione AOT, dal momento che almeno irriterà leggermente la persona che fa il RE in assemblea. A lungo termine, tuttavia, nessuno dei due sarà di grande aiuto; tutto può essere rotto, dato abbastanza tempo.

    
risposta data 23.09.2011 - 16:04
fonte
1

Non distribuire. Esporre tramite web o qualcosa come Citrix. Bloomberg ha costruito un business da molti miliardi di dollari facendo ciò ei suoi utenti lo adorano. (Beh, non sembra che siamo in grado di fornire molto conforto con AOT o Obfuscation).

    
risposta data 12.10.2011 - 10:25
fonte
0

Sarà molto più difficile mantenere versioni diverse. Dovresti usare un linguaggio come C ++ o se sei bloccato con Java, puoi usare un caricatore di classi personalizzato invece di offuscare. Tutto il codice può essere REd con il tempo; Mi piacerebbe solo che la legge faccia il tuo lavoro per te e offusca.

    
risposta data 21.09.2011 - 20:30
fonte

Leggi altre domande sui tag