Foremost è necessario ricordare che iOS non consente JIT (just in time) la compilazione. Ciò significa che tutto deve passare attraverso il compilatore AOT (anticipo).
Il risultato è che tutto il codice IL da assembly viene convertito in ARM nativo (v6, v7 e/o il pollice) istruzioni e che l'IL si non è richiesto più.
Ciò significa che, quando si sta creando per Release|iPhone
, il codice IL verrà rimosso dagli assiemi. Dal momento che viene rimosso, non sarà presente (da decompilare) nell'applicazione che pubblichi.
NOTE
i complessi saranno ancora all'interno dell'applicazione perché è ancora necessaria metadati (ad esempio System.Reflection
ha bisogno). Quindi i nomi dei simboli e i file delle risorse non saranno manomessi/criptati come fanno generalmente gli offuscatori;
È possibile smontare assembly ARM (che sarebbe vero anche se offuscato le assemblee prima della compilazione AOT), ma è molto più più difficile da capire (e tornare a C#) di IL è.
Estrazione assemblee del IPA e procesing li romperà almeno firma dell'applicazione (è possibile ri-firmarlo). Sarà anche probabile che interrompa molte altre cose (poiché il codice farà riferimento a nomi/strutture che potrebbero essere cambiati). Non penso che funzionerà (ma dipende dalle opzioni che useresti dal tuo obfuscator).
grazie. riflettore – BlueSky
grazie. Sì, capisco che è un compilatore AOT in monotipo. ma ho sbagliato, perché ieri ho messo le DLL (dal pacchetto ipa) negli strumenti riflettore, ho visto molto codice C#. Ora lo rivedo, è solo un metodo di stub, nessun codice di logica aziendale. grazie mille, grazie al team di xamarin che ha portato un prodotto così buono. – BlueSky