The Most Important File Format
Transcript of The Most Important File Format
![Page 1: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/1.jpg)
Jb Evain@jbevain
Visual StudioPlatform Team
Mono contributor
![Page 2: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/2.jpg)
Visual Studio Tools for Unity
![Page 3: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/3.jpg)
The most important file format…
![Page 4: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/4.jpg)
… for .NET developers
![Page 5: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/5.jpg)
You consume it
![Page 6: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/6.jpg)
You produce it
![Page 7: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/7.jpg)
A binary format
![Page 8: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/8.jpg)
the .NET assembly
![Page 9: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/9.jpg)
![Page 10: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/10.jpg)
.NET assembly
=
Windows executable
![Page 11: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/11.jpg)
![Page 12: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/12.jpg)
Why should you care
¯\_(ツ)_/¯
![Page 13: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/13.jpg)
Chapter 1The data
![Page 14: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/14.jpg)
PE fileHEADERS
SECTION
SECTION
![Page 15: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/15.jpg)
.NET metadataHEADERS
Strings
Types MethodsFields Parameters …
Blobs GuidsHeaps
Tables
![Page 16: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/16.jpg)
![Page 17: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/17.jpg)
.NET metadatavoid Foo::Bar(int i)
Strings
FooBar
i
Type
#1
Method
#1
Parameter
#1
Blobs
instance void(int)Heaps
Tables
![Page 18: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/18.jpg)
![Page 19: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/19.jpg)
.NET IL
Tables
Heaps
IL
![Page 20: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/20.jpg)
Chapter 2The tools
![Page 21: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/21.jpg)
using System.Reflection;
![Page 22: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/22.jpg)
Not great for
Reading assemblies as data Reading IL code Modifying assemblies
![Page 23: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/23.jpg)
1. IKVM.Reflection
![Page 24: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/24.jpg)
Great for
Creating new assemblies Porting System.Reflection code
![Page 25: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/25.jpg)
2. System.Reflection.Metadata
![Page 26: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/26.jpg)
Great for
Reading metadata (very) quickly
![Page 27: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/27.jpg)
3. Mono.Cecil
![Page 28: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/28.jpg)
Great for
Analyzing assemblies Modifying assemblies
![Page 29: The Most Important File Format](https://reader035.fdocuments.net/reader035/viewer/2022062406/55c41fc8bb61eb63398b45d2/html5/thumbnails/29.jpg)
Thank you!
@jbevain