Blog

9 Mar 2017

Desarrollo de software: ¿Qué es un gancho?

Desarrollo de software: ¿Qué es un gancho?

Deberíamos saber sobre algunos tipos de gancho.

¿Qué es un gancho?En el desarrollo de software, el enganche es una idea que permite cambiar la conducta de un programa. El código de posibilidad le ofrece cambiar la primera conducta de algo sin cambiar su código de la clase de comparación. Esto se termina sobrescribiendo las estrategias de gancho.

Este tipo de uso es extremadamente útil a la hora de agregar nuevas funcionalidades a las aplicaciones, además de fomentar la correspondencia entre los procedimientos alternativos y los mensajes del sistema. Los ganchos tienden a la ejecución del sistema de reducción al expandir la carga de preparación que el sistema necesita realizar para cada mensaje. Debería introducirse justo cuando sea necesario y evacuarse a la primera oportunidad.

Imagine que está utilizando un Sistema de gestión de clientes (CMS) de una persona ajena a la empresa y que desee que se avise a un super ejecutivo por correo electrónico cada vez que se distribuya otra publicación y que esta conducta no sea la predeterminada del dispositivo. Habría un par de rutas hacia adelante:

Cambiar el código fuente de CMS no es una idea inteligente, después de todo, en la siguiente actualización del dispositivo, se enfrentará a la dificultad de perder el cambio o no tendrá la capacidad de continuar con la actualización;

  • Hacer su propio CMS en particular es otro pensamiento terrible, considerando todos los aspectos, no tiene suficiente energía o activos suficientes para hacer cosas nuevas o incluso mantener lo que fabrica;
  • Explore la probabilidad de utilizar un gancho, es decir, verifique si el CMS busca módulos o módulos externos para que los elementos de un nombre ofrecido se ejecuten en el minuto deseado, para esta situación, la distribución de nuevas publicaciones.
  • La parte práctica de la utilización de ganchos fluctúa generalmente de un dispositivo a otro. La posición favorable principal de los ganchos no es cambiar el primer código. En todos los manuales de gran práctica de todos los dispositivos de código abierto que tienen actualizaciones intermitentes, el mantra que se repite a sí mismo no cambia el centro. A pesar de hacer que las actualizaciones sean inimaginables, cualquier persona que venga después a hacer mantenimiento no pensará en el cambio, y la persona que apenas lo discute es usted, no el aparato.

La extensibilidad es otro punto de vista preferido de la utilización de estrategias de enlace que permiten a la aplicación aumentar sus interfaces estables. Las estrategias de gancho desacoplan interfaces estables y la conducta de un espacio de variedad que puede surgir de la instanciación de una aplicación para una configuración específica.

Soluciones tecnológicas innovadoras ofrece capacitación en desarrollo de software en Gurgaon, Delhi NCR en India.

Ganchos como patrones de diseño

Es intrigante observar que numerosos (todos) diseños de esquema ejemplifican la semántica para los ganchos. Hablan sobre cómo ejecutar subsistemas de áreas problemáticas. Algunos dependen de la regla del desarrollo del desapego: Resumen, Fábrica, Constructor, Comando, Intérprete, Observador, Prototipo, Estado y Estrategia.

Otros en ambos ejemplos de unificación y desarrollo de partición: Método de plantilla y Puente.

La semántica se comunica normalmente en el nombre de la técnica de enlace (por ejemplo, en el comando, la estrategia se llama ejecutar ()).

Tabla de métodos virtuales de enganche

Desarrollo de software: qué es un Hook-Point Las técnicas 1 virtuales se traducen en una ruta indistinguible de las estrategias estáticas, pero como las técnicas virtuales se pueden cambiar, el compilador no conoce la dirección de una capacidad virtual específica cuando la llama en su código. El compilador, por lo tanto, ensambla una Tabla de métodos virtuales (VMT), que brinda un camino para consultar las direcciones de capacidad en tiempo de ejecución. Cada estrategia virtual individual se activa en tiempo de ejecución a través del VMT. El VMT de una pregunta contiene todas las estrategias virtuales para sus precursores y, además, los que proclama. Por lo tanto, las técnicas virtuales utilizan más memoria que estrategias de elementos, a pesar de que se ejecutan más rápido.

Como VMT es una tabla que contiene los punteros con direcciones de memoria para las capacidades de la interfaz, lo que se debe hacer es reemplazar la primera dirección de memoria con una dirección de un trabajo de enlace legítimo. En esta línea, se sobrescribirá la técnica llamada y se ejecutará la nueva conducta codiciada de la capacidad.

API de enganche

Desarrollo de software: qué es un Hook-Point 2 El procedimiento de la API de enganche realmente le permite reinventar los elementos del sistema en funcionamiento. Con la capacidad de capturar dichos cargos, puede cambiar sus parámetros cambiando la actividad que se realizaría inicialmente.

Es concebible, por ejemplo, cancelar una pieza de un registro específico, evitar que una aplicación se ejecute, y exigir que un cliente afirme guardar un archivo en el círculo, etcétera.

De hecho, el mayor corte de decisión se encuentra en la región de la seguridad, por ejemplo, antivirus y antispyware. Sea como sea, hay circunstancias en nuestro desarrollo ordinario donde la API de enganche puede ser la principal salida.

Interfaz de programación Enlazar, en nuestra circunstancia específica, implica obtener una API del SO, o de cualquier DLL, y cambiar su ejecución típica a otro lugar, más exactamente, a otra capacidad. Hay fundamentalmente dos enfoques:

EAT e IAT: todos los EXE / DLL contienen API para importar y tablas de tarifas. Estas tablas contienen punteros que muestran el punto de entrada API. Al cambiar estos punteros, haciéndolos indicar nuestra devolución de llamada, tenemos un gancho. Sea como fuere, si este EXE / DLL no importa API, esta estrategia no funcionará;

Sobrescritura de código directa: como se dijo anteriormente, en el caso de que fuera concebible agregar una llamada a nuestra devolución de llamada hacia el inicio del código API, podríamos "conectarlo", haciendo que nuestra capacidad se ejecute en cualquier punto que se llame a la API. Sea como sea, hay un problema: si después de manejar nuestro código, necesitábamos llamar a la primera API, recurrimos a nuestra devolución de llamada, y se crearía una inundación de la pila. Una disposición es arreglar el gancho para que tenga la capacidad de llamar a la API y volver a intentarlo una vez que se haya ejecutado. Sea como fuere, en medio de este terreno central, se pueden hacer algunas llamadas API y no ejecutar nuestra devolución de llamada;

Inline Hook es el punto en el cual obtenemos las principales pautas de una capacidad, y cambiamos por un Jump, Push o Call para nuestra capacidad.

Lectura prescrita: el sistema de trabajo de Windows también respalda el enganche de la API. ¿Deberíamos saber cómo funciona la API de Windows?

Enganche de ocasión

Desarrollo de software: ¿qué es un enganche? Las técnicas de enganche 3As del gancho desacoplan las interfaces estables y la conducta de un espacio variado que puede surgir a partir de la creación de instancias de una aplicación para una configuración particular ocurre una inversión de control. Los manejadores de ocasión de objetos modifican los pasos de preparación. Al final del día, cuando ocurre una ocasión, el controlador responde estrategias de invocación de conjurar objetos preinscritos que ejecutan determinadas actividades de preparación de ocasiones. Casos de ocasiones: mensajes de ventana, paquetes que aterrizan desde puertos de correspondencia.

Dentro de IAT Enganche

Desarrollo de software: qué es un proceso Hook-Point 4Each en Windows tiene una tabla llamada Import Address Table (IAT), que almacena punteros a las capacidades enviadas por las DLL de cada procedimiento. Esta tabla se llena progresivamente con la dirección de los elementos de las DLL en tiempo de ejecución.

Usando capacidades particulares, podemos hacer que la tabla IAT se pueda escribir, siendo concebible cambiar su dirección por una dirección de una capacidad personalizada, redefiniendo la tabla como leída, simplemente después de este cambio. En el momento en que el procedimiento intenta llamar a la capacidad, su dirección se obtiene en la tabla IAT y se devuelve un puntero. Como se ha cambiado la tabla IAT, la capacidad personalizada se establece de la primera capacidad y se obtiene el código infundido en el procedimiento.

Netfilter Hook

Desarrollo de software: qué es un Hook-Point 5Netfilter es un subsistema de piezas de Linux más notable que 2.4. Está a cargo de la separación de paquetes, NAT, firewall, redirección, entre otros. Netfilter es excepcionalmente extensible y su documentación está terminada. Deja la posibilidad de utilizar Ganchos en el código Kernel, lo que hace que su utilización sea extremadamente flexible y generalmente la reciba el grupo. Estos ganchos dejan algunos resultados imaginables y pueden cumplimentarse como factores desencadenantes para ocasiones específicas.

Conclusión:

Desarrollo de software - Qué es un enganche - conclusión Los procedimientos de enganche de programación son efectivos y abren un alcance de resultados concebibles para los ingenieros de software, sin embargo, deben utilizarse con alertas ya que incluyen una complejidad más prominente en la secuencia de procedimientos y cambian el primero conducta del sistema operativo, aplicaciones u otros segmentos de software, lo que hace difícil comprender la lógica del software. Aparte de eso, como se especifica anteriormente en este artículo, la utilización de estos sistemas sin paradigma puede degradar la ejecución de las aplicaciones.

GTranslate Your license is inactive or expired, please subscribe again!