In other words: For a .NET assembly to be verified, do any of the referenced assembly need to be read and analyzed too? What does PEVerify tool do?
Can a .NET assembly be verified independently of any other assemblies it might reference?
539 Views Asked by tgiphil At
1
There are 1 best solutions below
Related Questions in .NET
- Does compiler optimize operation on const variable and literal const number?
- What is the point of definnig Asp.net Intrinsic Objects In different places and what is the different betwen them?
- Deleting Orphans with Fluent NHibernate
- IOrderedEnumerable to vb.net IOrderedEnumerable Conversion
- What is this namespace ITypeOfObjectsBoundToListBox ? Couldn't find it
- .net rest service with JSON string and consumed with java client
- What is best way to check if any of the property of object is null or empty?
- Telerik's WPF RadColorPicker NoColorText property not working
- Possible consequences of duplicate ProgId for different classes
- How are multiple requests to Task.Run handled from a resource management standpoint?
- Optimizing C++ call from C#
- Make a per-web-application object available to Web API and SignalR controllers
- System.ComponentModel.DataAnnotations.Schema namespace conflict
- LINQ Except/Distinct based on few columns only, to not add duplicates
- Not displaying content by its URL string - absolute urls
Related Questions in CIL
- Test if a given object reference is valid
- MSIL store a value of structure to return
- Changing internal class to public (CIL, Mono.Cecil)
- What is to be considered the "natural alignment" for OpCodes.Ldobj?
- Some questions about the usage of MethodImpl Attribute
- Probably redundantly opcode when explicit base type cast
- C# Getting PropertyInfo within setter using PropertyBuilder
- Properly emit property
- In the IL code produced, there are some lines missing. What task does the in between lines perform?
- Why is there no .NET RuntimePropertyHandle and PropertyInfo.GetPropertyFromHandle?
- How to diagnose "Type load failed" from PEVerify
- Are the placeholders of Generics compiled as an actual data type?
- msil ".maxstack 1" pushes more than 1 value
- CIL - How do I use a public static literal field?
- Why does tail call optimization need an op code?
Related Questions in PEVERIFY
- How to diagnose "Type load failed" from PEVerify
- Where can I download PEVerify.exe tool?
- Why does a program with a PEVerified Stack Overflow Scenario (maxstack) Not Crash the CLR?
- Why does peverify give me an "unable to resolve token" error for plain and simple managed code?
- Why is this code failing to verify?
- Can PEVerify tell me the severity of each error?
- Changing callvirt to call in IL
- Is PEVerify warning about duplicate methods wrong here?
- Can a .NET assembly be verified independently of any other assemblies it might reference?
- log4net doesn't pass verification when compiling
- peverify error "Stack depth differs depending on path"
- How can I ensure an unverifiable .NET assembly is valid?
- PEVerify MD Error: 0x8013124C
- Why does this line cause a VerificationException when running under .NET 4?
- Is there an API for verifying the MSIL of a dynamic assembly at runtime?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The assembly format is pretty self contained. But there's indeed a few things that PEVerify needs to check in referenced assemblies.
Generic instantiations
In the assembly, when you use a generic type or a generic method, the original generic arity is not preserved, and you have to load the definition of the type or of the method to properly verify the instantiation, both for arity (does the instantiation have the proper number of generic arguments?) and for constraints (does the generic argument satisfy the generic constraint specified on the generic parameter?). The verification will fail if PEVerify can not find the referenced assemblies.
Referenced members accessibility
If you call a method or manipulate a field defined in another assembly, PEVerify will try to load the assembly defining the member to check that the member has an appropriate visibility.
It will fail to verify if it can not find the assembly, with an “Unable to resolve token” error otherwise.
There's a couple of other cases where to properly read a piece of metadata you have to resolve a reference to a type, and thus, load its containing assembly, but I don't think PEVerify checks them:
Custom Attribute instantiation containing enums:
For instance:
[AttributeUsage (AttributeTargets.Field)]
You have to load the definition of AttributeTargets to know that it's backed by an int32 spanning over 4 bytes in the serialized custom attribute form.
Fields whose values are serialized in a binary form:
Some compiler may decide to store a constant value in a binary form in the assembly. In the case where the type of the constant is not a known primitive, you have to resolve the reference to this type to know its size.
But then again, I don't think PEVerify checks those cases. I'm actually pretty sure it doesn't check the encoding of custom attributes, for the second item, I'm not so sure.