Skip to Content
Nueva versión 12 disponible 🎉

Cobertura

El proxy dinámico sustituye las instrucciones directas call, callvirt y newobj, y cubre las llamadas estáticas, de instancia, virtuales y de interfaz, los métodos de acceso de propiedades y eventos, la construcción de objetos, las llamadas sobre tipos genéricos (por ejemplo List<int>.Add) y las llamadas a métodos genéricos, incluidos los operadores de LINQ como Where, Select y OrderBy.

Para que el programa ofuscado se comporte exactamente igual que el original, unas pocas llamadas no pasan deliberadamente por un proxy y se dejan como llamadas directas:

  • Métodos sensibles al llamador, cuyo resultado depende del método o del ensamblado que llama: Assembly.GetExecutingAssembly, Assembly.GetCallingAssembly y MethodBase.GetCurrentMethod. Hacerlos pasar por un proxy cambiaría el llamador observado y devolvería un resultado incorrecto.
  • Valores devueltos por referencia (ref), que un delegado no puede devolver.
  • Constructores de tipos de valor y constructores de delegados.
  • Métodos genéricos de tipos genéricos, y llamadas genéricas cuyos argumentos de tipo son tipos abiertos, por referencia o de puntero.

Estas llamadas se ejecutan sin cambios; todas las demás llamadas elegibles pasan por un proxy.

Last updated on