c# - Why is the CLR's jmp instruction unverifiable? -


I know about jmp instruction for a while, but it never hit me due to not being insecure . Recently CIL was the reason to check glasses.

Because call , callvirt , or Collie , where the collar stack frame will remain on the stack seen in the code access protection stack vols in the future (perhaps indirectly) by Cali, a jmp directional collar stack frame Tears before turning it into a bud and thus can be invisible to any cas stack walk that cali can trigger

Edit: I think the novel is wrong about the answer after the wrong. Now I think that (checkable) tail The difference between the CL sequence and (unverifiable) jmp sequences can be that the tail calls to the arguments need to call the evaluation stack where they can be validated normally, while evaluating a jmp The stack is required to be empty and jump-A is the successor of the arguments of jump-er. jmp There is probably no reason to complicate the verifier to check the instructions But it may be that it is similar to the ones used on the tail.call sequence. Which should be in the same assembly as collar and cali, which at least clarify the rules specified above from my CAS. Danny () calls).

If so, this would be the relevant part of the device: (Part III III, Section 3.37)

The existing logic has been moved to the destination system.

The evaluation stack should be blank when this instruction is executed. Calling conference, number and type of logic at the destination address must match the current method.


Comments