Il GUID è visibile durante la compilazione di un progetto .NET?

2

So che se una persona ha un GUID da una macchina, quella persona può capire se un'altra guida appartiene a quella macchina.

In un progetto .NET (csproj e il file di soluzione degli studi visivi) vengono generati GUID. Se dovessi compilare questo progetto i GUID sarebbero nel mio eseguibile, quindi una persona può dire se un programmatore sviluppa due progetti diversi?

    
posta 18.05.2012 - 12:39
fonte

2 risposte

4

No. EDIT: In realtà, forse. Vedi sotto.

Il compilatore si preoccupa solo dei file sorgente. Se vuoi che un GUID sia presente nell'assembly, devi codificarlo. Ecco come funziona, ad esempio, il materiale di interoperabilità COM: decori l'assembly nel codice con un attributo che contiene il GUID.

Tuttavia, se un GUID è hardcoded nell'origine per qualcosa come COM e il GUID è stato generato sullo stesso computer, utilizzando la versione 1, è possibile rintracciare il computer su cui è stato codificato. Vedi qui: link

EDIT: Si scopre che ho sbagliato leggermente. È un dettaglio di implementazione in uno dei compilatori, ma nella versione corrente del compilatore viene utilizzato un GUID per distinguere le versioni di build, ad es. ogni volta che si preme F5, quindi tutte le build indipendentemente dal cambio di codice sono univoche per computer.

    
risposta data 18.05.2012 - 23:18
fonte
1

I GUID nei file proj e solution vengono generati quando si creano i file di progetto e di soluzione, quindi la copia dell'origine e la ricompilazione su un'altra macchina probabilmente non cambieranno i GUID (non l'ho provato, ma suppongo che siano " Cambiamo solo quando spostiamo le cose in Visual Studio).

Inoltre, non penso che quei GUID finiranno nell'eseguibile finale, dovresti essere più preoccupato dei GUID definiti nell'origine, principalmente in Properties / AssembyInfo.cs (potrebbero essere definiti altrove, ma è lì che Visual Studio li inserisce per impostazione predefinita). Questi GUID non cambiano se non li si sostituisce esplicitamente, quindi se si crea un progetto open source, non è possibile rintracciarlo sul computer, ad esempio il GUID dell'elenco di assembly.

Detto questo, chi sa cosa sta aggiungendo il compilatore .Net come metadati extra? È possibile che generi GUID per il confronto delle versioni tra i file PDB e l'eseguibile per esempio (tuttavia suppongo che un hash sia più probabile)? Il modo migliore per testare questo è creare lo stesso progetto su due macchine e quindi confrontare i binarys.

Off topic: non essere curioso, ma sono abbastanza curioso riguardo la preoccupazione?

    
risposta data 19.05.2012 - 12:41
fonte

Leggi altre domande sui tag