Grado di offuscamento

3

Supponiamo di avere il seguente codice:

namespace MobileApp
{
    public class Storage
    {
        public Storage()
        {

        }

        public bool Save()
        {
            bool success = false;

            try
            {
                var settings = IsolatedStorageSettings.ApplicationSettings;

                if (settings.Contains("AppInformation7563"))
                {
                    settings["AppInformation7563"] = "GG3MDhlxnZDdDx7";
                }
                else
                {
                    settings.Add("AppInformation7563", "GG3MDhlxnZDdDx7");
                }

                settings.Save();
                success = true;
            }
            catch (Exception)
            {
                success = false;
            }
            return success;
        }

        public string Load()
        {
            string app = "false";

            try
            {
                var settings = IsolatedStorageSettings.ApplicationSettings;

                if (settings.Contains("AppInformation7563"))
                {
                    app = settings["AppInformation7563"].ToString();
                }
            }
            catch (Exception)
            {
                app = "false";
            }
            return app;
        }
    }
}

Fondamentalmente, questo codice memorizza una password segreta nella memoria isolata di Windows Phone in modo che questa password venga passata ogni volta che viene effettuata una chiamata al servizio web.

Se oscurassi il codice usando DotFuscator, anche "AppInformation7653" e "GG3MDhlxnZDdDx7" saranno offuscati? O rimarranno gli stessi, solo i nomi delle classi e delle variabili sono cambiati?

Grazie mille:)

    
posta Matthew 18.07.2013 - 14:58
fonte

2 risposte

5

DotFuscator "crittografa" i letterali delle stringhe, anche se mi preoccupo per l'uso della parola "crittografia" in quel contesto . I valori di stringa "AppInformation7653" e "GG3MDhlxnZDdDx7" non appariranno "così come sono" nell'assieme risultante, ma il codice contiene necessariamente tutto ciò che è necessario per ricostruire i rispettivi valori in fase di esecuzione. Quindi non credete che tale offuscamento possa effettivamente vanificare reverse engineering ; potrebbe solo scoraggiare il meno motivato o competente degli attaccanti, ma gli abili aggressori ridaccheranno solo ai tuoi deboli tentativi di offuscamento.

Come al solito, l'offuscamento del codice serve più a dare una sensazione di sicurezza che a rendere le cose più sicure. Il vero valore dell'offuscamento è che dimostra il tuo intento di mantenere un po 'segreti gli interni del codice, cosa che può essere utile in alcune situazioni legali (un reverse-engineer non sarà in grado di affermare che "non ha fatto" so ", in buona fede, che il codice non doveva essere esaminato in quel modo). Come tutto ciò che è legale, questo può o non può funzionare in una giurisdizione specifica, e io non sono comunque competente a fornire una consulenza legale specifica.

    
risposta data 18.07.2013 - 15:28
fonte
2

I tuoi nomi di classi e metodi pubblici non cambieranno , perché sono esternamente referenziabili, non possono. Poiché i tipi pubblici possono essere utilizzati da altre librerie e applicazioni che l'obfuscator non ha conoscenza, devono essere preservati.

Per quanto riguarda i valori stringa, possono o meno essere offuscati. Di solito lo sono, ma non ho usato DotFuscator, quindi non so esattamente come funzioni. Dovresti creare una build offuscata e quindi ispezionarla usando uno strumento come Reflector o ILSpy per determinare esattamente cosa è stato in grado di fare al tuo assembly.

    
risposta data 18.07.2013 - 15:21
fonte

Leggi altre domande sui tag