La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog: ambiente di esecuzione.

Presentazioni simili


Presentazione sul tema: "Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog: ambiente di esecuzione."— Transcript della presentazione:

1 Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog: ambiente di esecuzione

2 Chi siamo Un gruppo di 5 persone con tanta voglia diUn gruppo di 5 persone con tanta voglia di Studiare a fondo le tecnologieStudiare a fondo le tecnologie Capire il behind the scenesCapire il behind the scenes Implementare soluzioni realiImplementare soluzioni reali Confrontarsi con le problematiche realiConfrontarsi con le problematiche reali Sperimentare nuove ideeSperimentare nuove idee Facciamo Corsi, Conferenze, TrainingFacciamo Corsi, Conferenze, Training Scriviamo libriScriviamo libri

3 Chi siete ? Chi conosce Java?Chi conosce Java? Chi conosce Visual Basic?Chi conosce Visual Basic? Chi conosce C++?Chi conosce C++? Chi conosce COM?Chi conosce COM? Chi conosce C#?Chi conosce C#? Chi conosce VB.NET?Chi conosce VB.NET?

4 Agenda Ambiente di esecuzioneAmbiente di esecuzione Codice IL e codice nativoCodice IL e codice nativo MSILMSIL JITJIT NGENNGEN Ruolo dei metadatiRuolo dei metadati Verifica (PEVERIFY)Verifica (PEVERIFY) Runtime hostRuntime host DecompilazioneDecompilazione

5 Cosa è.NET È un ambiente di esecuzione (runtime environment)È un ambiente di esecuzione (runtime environment) Semplifica lo sviluppo e il deploymentSemplifica lo sviluppo e il deployment Aumenta laffidabilità del codiceAumenta laffidabilità del codice È completamente indipendente da COMÈ completamente indipendente da COM È fortemente integrato con COMÈ fortemente integrato con COM Unifica il modello di programmazioneUnifica il modello di programmazione

6 Ambiente di esecuzione Concetti chiave:Concetti chiave: MSIL: Microsoft Intermediate LanguageMSIL: Microsoft Intermediate Language CLR: Common Language RuntimeCLR: Common Language Runtime CTS: Common Type SystemCTS: Common Type System CLS: Common Language SpecificationCLS: Common Language Specification

7 Codice interpretato Interprete Output Sorgenti

8 Codice nativo Codice nativo (.EXE) Output Compilatore Sorgenti

9 Codice MSIL Codice nativo Output Compilatore JIT Codice MSIL (Assembly).EXE/.DLL Compilatore.NET Sorgenti

10 Codice MSIL Codice nativo Output Sorgenti Compilatore JIT Codice MSIL (Assembly).EXE/.DLL Compilatore.NET Codice + metadati

11 Codice MSIL Codice nativo Output Compilatore JIT Codice MSIL (Assembly).EXE/.DLL Compilatore.NET Sorgenti Ambiente di esecuzione.NET Runtime

12 Motori JIT Inizialmente previsti 4 motori:Inizialmente previsti 4 motori: MotoreDescrizione Dove si trova JIT Attuale implementazione OptiJit Codice più ottimizzato Non implementato FastJit Esecuzione JIT più veloce.NET Compact Framework Native (Pre-Jit) Compilazione preventiva, assembly compilato salvato in GAC NGEN.EXE

13 Uso di NGEN Va bene su librerie di base che non hanno forti dipendenze da altri assemblyVa bene su librerie di base che non hanno forti dipendenze da altri assembly Codice nativo valido solo per la macchina su cui si compila con NGENCodice nativo valido solo per la macchina su cui si compila con NGEN Non si può ridistribuire su altri PCNon si può ridistribuire su altri PC Minori ottimizzazioniMinori ottimizzazioni In certi casi compila comunque con JITIn certi casi compila comunque con JIT Modificata versione di un componente globale da cui dipendeModificata versione di un componente globale da cui dipende Non riesegue NGEN in automaticoNon riesegue NGEN in automatico

14 Metadati Concetto chiave in.NETConcetto chiave in.NET Informazioni sui tipi di un assemblyInformazioni sui tipi di un assembly Generati automaticamente dai compilatoriGenerati automaticamente dai compilatori Estendibili da terze partiEstendibili da terze parti Formato binario rappresentabile con XML:Formato binario rappresentabile con XML: XML Schema (XSD)XML Schema (XSD) Serializzazione e deserializzazione oggetti a runtime in XMLSerializzazione e deserializzazione oggetti a runtime in XML Convertibile da/a COM type libraryConvertibile da/a COM type library

15 Metadati Descrizione di tipi e assemblyDescrizione di tipi e assembly Simile a COM Type LibrarySimile a COM Type Library Simile a RTTI C++Simile a RTTI C++ Metadati (+ codice) Debugger SchemaGenerator Profiler Altri Compilatori Proxy Generator Type Browser Compilatore Codice sorgente Codifica XML (SDL) Serialization (es. SOAP) Designers Reflection

16 Metadati Descrizione di un assemblyDescrizione di un assembly Identità: nome, versione, cultura [, pubblic key]Identità: nome, versione, cultura [, pubblic key] Tipi esportatiTipi esportati Assembly da cui dipendeAssembly da cui dipende Permessi necessari per lesecuzionePermessi necessari per lesecuzione Descrizione dei tipiDescrizione dei tipi Nome, visibilità, classe base, interfacce implementateNome, visibilità, classe base, interfacce implementate Attributi customAttributi custom Definiti dallutenteDefiniti dallutente Definiti dal compilatoreDefiniti dal compilatore Definiti dal FrameworkDefiniti dal Framework

17 Tool che usano i metadati CompilatoriCompilatori Compilazione condizionaleCompilazione condizionale Ambienti RADAmbienti RAD Informazioni sulle proprietà dei componentiInformazioni sulle proprietà dei componenti CategoriaCategoria DescrizioneDescrizione Editor personalizzati di tipi di proprietàEditor personalizzati di tipi di proprietà Analisi dei tipiAnalisi dei tipi IntellisenseIntellisense ILDASMILDASM

18 Compilatori e metadati Import dei tipi di dati cross-languageImport dei tipi di dati cross-language Emettono i metadati insieme al codiceEmettono i metadati insieme al codice Descrivono i tipi definiti e usatiDescrivono i tipi definiti e usati Registrano gli assembly esterni referenziatiRegistrano gli assembly esterni referenziati Registrano informazioni di versioneRegistrano informazioni di versione Possono interpretare attributi customPossono interpretare attributi custom ObsoleteObsolete CLS Compliance (conformità CLS)CLS Compliance (conformità CLS) Compilazione condizionale (es. debug)Compilazione condizionale (es. debug) Attributi specifici del linguaggioAttributi specifici del linguaggio

19 Type safety Isolamento della memoriaIsolamento della memoria Consente lesecuzione sicura di più applicazioni nello stesso processoConsente lesecuzione sicura di più applicazioni nello stesso processo Type safety (sicurezza dei tipi)Type safety (sicurezza dei tipi) Assicura isolamento della memoriaAssicura isolamento della memoria Assicura operazioni corrette rispetto al sistema di sicurezzaAssicura operazioni corrette rispetto al sistema di sicurezza Non è richiesta dal RuntimeNon è richiesta dal Runtime VerificationVerification Assicura type safetyAssicura type safety

20 Type safety Si eliminano:Si eliminano: Cast non sicuriCast non sicuri Variabili non inizializzateVariabili non inizializzate Indici di array fuori limite (out-of-bounds)Indici di array fuori limite (out-of-bounds) PEVERIFY.EXEPEVERIFY.EXE Tool linea di comando per verificare requisiti di type safety di un assemblyTool linea di comando per verificare requisiti di type safety di un assembly

21 Processo Win32 (app.exe) MSCOREE.DLL Managed World Runtime Host Esecuzione di unapplicazione.NETEsecuzione di unapplicazione.NET MSCORLIB.DLL MYCOMCLASS.DLL KERNEL.DLL MYNETCLASS.DLL Marshaling

22 Runtime Host MSCOREE.DLLMSCOREE.DLL Ultima DLL COM rimasta...Ultima DLL COM rimasta... _CorDllMain: Entry-point del loader per caricare ed eseguire il codice IL_CorDllMain: Entry-point del loader per caricare ed eseguire il codice IL MSCORLIB.DLLMSCORLIB.DLL Implementa CTS (Common Type System)Implementa CTS (Common Type System) Contiene BCL (Base Class Library)Contiene BCL (Base Class Library) Non si vede con DEPENDS.EXE, usare ADEPENDS.EXENon si vede con DEPENDS.EXE, usare ADEPENDS.EXE Diversi tipi processi hostDiversi tipi processi host Shell exe, ASP.NET, Internet Explorer, Servizi NTShell exe, ASP.NET, Internet Explorer, Servizi NT

23 Modello di esecuzione Class Loader IL to native code compiler CPU Security System Code Managers Managed Native Code Assembly Prima chiamata al metodo Primo riferimento al tipo Execution Support

24 Decompilazione Grazie al codice IL e ai metadati è più facile fare reverse engineeringGrazie al codice IL e ai metadati è più facile fare reverse engineering Non è evitabile in senso assolutoNon è evitabile in senso assoluto Si può rendere più ostico il compito di ricostruire il codice originale (o qualcosa che ci assomigli)Si può rendere più ostico il compito di ricostruire il codice originale (o qualcosa che ci assomigli) Tecniche disponibili:Tecniche disponibili: ObfuscationObfuscation Compilazione in codice nativoCompilazione in codice nativo

25 Tool di decompilazione ILDASMILDASM Si ottiene il sorgente IL che può essere modificato e ricompilatoSi ottiene il sorgente IL che può essere modificato e ricompilato Anakrino Il primo decompilatore che ricostruisce codice C# da qualsiasi linguaggioIl primo decompilatore che ricostruisce codice C# da qualsiasi linguaggio Reflector Decompilatore che supporta decompilazione in C#, VB.NET e Delphi (da qualsiasi linguaggio originale)Decompilatore che supporta decompilazione in C#, VB.NET e Delphi (da qualsiasi linguaggio originale) Salamander Meno diffuso, è un prodotto commerciale:Meno diffuso, è un prodotto commerciale:

26 Tool di obfuscation Demeanor Dotfuscator preemptive.com/products/dotfuscator/index.htmlDotfuscator preemptive.com/products/dotfuscator/index.html eXtensible C# C# Spices.NET LSW-IL Obfuscator Obfuscator Salamander XenoCode

27 Tool per avere eseguibili unmanaged Creano un eseguibile unmanaged che scompatta lassembly in memoria e lo esegueCreano un eseguibile unmanaged che scompatta lassembly in memoria e lo esegue I metadati non sono visibili direttamenteI metadati non sono visibili direttamente Prodotti disponibili:Prodotti disponibili: Deploy.NET Thinstall

28 Tool per creare codice nativo Conversione del codice IL in codice nativo, lasciando un formato di eseguibile managed (con metadati, eventualmente offuscati)Conversione del codice IL in codice nativo, lasciando un formato di eseguibile managed (con metadati, eventualmente offuscati) Risultato analogo ad eseguibile prodotto in Managed C++ con #pragma unmanagedRisultato analogo ad eseguibile prodotto in Managed C++ con #pragma unmanaged Massima compatibilità con altri assemblyMassima compatibilità con altri assembly Problemi di portabilità su diversi processoriProblemi di portabilità su diversi processori Minori ottimizzazioni del JITMinori ottimizzazioni del JIT Solo un prodotto:Solo un prodotto: Salamander.NET Protector Protector

29 Considerazioni finali Un mondo nuovo per sviluppareUn mondo nuovo per sviluppare Framework di classi già molto estesoFramework di classi già molto esteso Ma soprattutto coerente!Ma soprattutto coerente! Quasi tutto completamente estendibileQuasi tutto completamente estendibile Alta integrabilità con il codice esistenteAlta integrabilità con il codice esistente Ottima piattaforma per sviluppare componenti COMOttima piattaforma per sviluppare componenti COM A prima vista è tutto semplice, ma è bene sapere cosa cè dietro (tanto!!)A prima vista è tutto semplice, ma è bene sapere cosa cè dietro (tanto!!)

30 Altre Informazioni Dove posso ottenere maggiori informazioniDove posso ottenere maggiori informazioni msdn.microsoft.commsdn.microsoft.com Developer resourcesDeveloper resources Microsoft Visual Studio.NETMicrosoft Visual Studio.NET Microsoft.NET Framework SDKMicrosoft.NET Framework SDK Microsoft Developer NetworkMicrosoft Developer Network

31 Introduction to.NET I vostri feedback sono importanti ScriveteciScriveteci Grazie della partecipazione –A presto


Scaricare ppt "Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog: ambiente di esecuzione."

Presentazioni simili


Annunci Google