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?
497 Views Asked by tgiphil At
1
There are 1 best solutions below
Related Questions in .NET
- non- terminal symbol and symbol rules explain and especially is the expr reserved?
- Jison parser: Retrieve n number of text after a specific token
- Using lex to tokenize without failing
- What are the Bison/yacc grammars for these
- Trying to find Shift/Reduce conflict in Grammar
- menhir - associativity rules for reducing sequences of expressions
- Shift/reduce conflits on ocamlyacc
- flex 2.5.35 gives error when ctrl-M used in lex file
- Convert HTML table into plain text using Lex and Yacc
- Lex/Yacc: "line 1: syntax error, unexpected $end, expecting FUNCTION" lex compile error
Related Questions in CIL
- non- terminal symbol and symbol rules explain and especially is the expr reserved?
- Jison parser: Retrieve n number of text after a specific token
- Using lex to tokenize without failing
- What are the Bison/yacc grammars for these
- Trying to find Shift/Reduce conflict in Grammar
- menhir - associativity rules for reducing sequences of expressions
- Shift/reduce conflits on ocamlyacc
- flex 2.5.35 gives error when ctrl-M used in lex file
- Convert HTML table into plain text using Lex and Yacc
- Lex/Yacc: "line 1: syntax error, unexpected $end, expecting FUNCTION" lex compile error
Related Questions in PEVERIFY
- non- terminal symbol and symbol rules explain and especially is the expr reserved?
- Jison parser: Retrieve n number of text after a specific token
- Using lex to tokenize without failing
- What are the Bison/yacc grammars for these
- Trying to find Shift/Reduce conflict in Grammar
- menhir - associativity rules for reducing sequences of expressions
- Shift/reduce conflits on ocamlyacc
- flex 2.5.35 gives error when ctrl-M used in lex file
- Convert HTML table into plain text using Lex and Yacc
- Lex/Yacc: "line 1: syntax error, unexpected $end, expecting FUNCTION" lex compile error
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 # Hahtags
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.