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?
544 views Asked by tgiphil At
1
There are 1 answers
Related Questions in .NET
- file download method in visual studio 2017
- Repository manager receives the wrong connection string in .net core
- MongoDb not connecting C#
- The current .NET SDK does not support targeting .NET Core 6.0. Brand new WPF Project VS Community 2022 17.9.5
- Why Scanning GSI on DynamoDb doesnt work as fast as expected when using CONTAINS?
- Are "blittable types" really unmanaged types for StructLayout Sequential
- Failed to fetch dynamically imported module on Blazor JS Interop
- Problem to upload several images per one request
- Implementing Azure AD B2C Authentication in .NET 8 Blazor Project (RenderMode: InteractiveAuto)
- Stripe connect payout - throws exceptions
- 'IOException: The cloud file provider is not running', when trying to delete 'cloud' folder
- Azure Application Insights Not Displaying Custom Logs for Azure Functions with .NET 8
- Convert C# DateTime.Ticks to Bigquery DateTime Format
- Socket.io nodejs server .NET connection
- Producer Batching Service Bus Vs Kafka
Related Questions in CIL
- Boxing System.RuntimeArgumentHandle
- Where and how are IL opcodes implemented in the .NET runtime source code
- .NET reflection emit - what am I doing wrong in writing this method in MSIL?
- View Intermediate Language code in Visual Studio
- How to parse a method invocation in IL bytes?
- How are memory allocations handled in "bytecode based" languages?
- Using Harmony to patch the real content of an async method for a Unity game
- Undefined behavior when trying to Memory.Slice using il.Emit
- How to emit IL for ref locals using ILGenerator?
- CIL code parses "15" into 15,000000000000004
- CIL shows `box` ops when the generic type is constrained to a class
- Is the C# compiler able to optimize a statement like someEnumerable.Count() < 2?
- Why is there a `.constrained` opcode preceeding the `call` opcode when calling an abstract static function?
- C# find what the last interacted with instance in the call stack is
- Insert method call into setter causes Invalid IL code
Related Questions in PEVERIFY
- Why does peverify give me an "unable to resolve token" error for plain and simple managed code?
- Wrap IL into an assembly written on disk in C# / .NET Core?
- PEVerify Defect: It reports "Type load failed" on valid class compiled with csc.exe for compact framework
- C# System.TypeInitializationException When Generic Types used
- Verification error on unsafe c# return type using Peverify and ILVerify
- How can I ensure an unverifiable .NET assembly is valid?
- Why is this code failing to verify?
- How to diagnose "Type load failed" from PEVerify
- How to correct Stack UNDERflow error
- Is PEVerify warning about duplicate methods wrong here?
- How can I investigate issues after obfuscation in .net?
- What does "Illegal use of type 'void' in signature" mean?
- Changing callvirt to call in IL
- Can PEVerify tell me the severity of each error?
- Invoke developer command prompt from python
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?
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)
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.