Blog

9 Mar 2017

Desenvolvimento de software: o que é um gancho?

Desenvolvimento de software: o que é um gancho?

Devemos saber sobre alguns tipos de gancho.

O que é um gancho?No desenvolvimento de software, Hooking é uma idéia que permite alterar a conduta de um programa. O código de possibilidade oferece-lhe para alterar a primeira conduta de algo sem alterar o seu código da classe de comparação. Isso é terminado por substituir as estratégias de gancho.

Esse tipo de uso é extremamente útil devido à adição de novas funcionalidades às aplicações, além de encorajar a correspondência entre procedimentos alternativos e mensagens do sistema. Os ganchos tendem a reduzir a execução do sistema expandindo a carga de preparação que o sistema precisa executar para cada mensagem. Deve ser introduzido apenas quando necessário e evacuado o mais cedo possível.

Imagine que você esteja utilizando um Sistema de Gerenciamento de Cliente (CMS) de um estranho e você pode querer que um super executivo seja avisado por e-mail sempre que outra postagem foi distribuída e que essa conduta não é o padrão do dispositivo. Haveria algumas rotas para a frente:

Alterar o código-fonte do CMS não é um pensamento inteligente, afinal, na próxima atualização do dispositivo, você enfrentará a dificuldade de perder sua mudança ou não terá a capacidade de continuar tudo atualizado;

  • Faça o seu próprio CMS particular é outro pensamento terrível, todas as coisas consideradas, você não tem energia suficiente ou ativos suficientes para fazer coisas novas ou até mesmo manter o que fabricar;
  • Explore a probabilidade de utilizar um gancho, ou seja, verifique se o CMS olha em módulos ou módulos externos para elementos de um nome oferecido para ser executado no minuto desejado, para esta situação, a distribuição de novas postagens.
  • A parte de baixo para terra de usar ganchos flutua geralmente de dispositivo para instrumento. A posição favorável principal dos ganchos não é mudar o primeiro código. Em todos os manuais de boas práticas de todos os dispositivos de código aberto que possuem atualizações intermitentes, o mantra que se repete não altera o centro. Apesar de tornar as atualizações inimagináveis, qualquer indivíduo que venha mais tarde a fazer manutenção não pensará na mudança, e a pessoa que dificilmente discute isso é você, não o aparato.

A extensibilidade é outro ponto de vista preferido de utilizar estratégias de gancho que permitem ao aplicativo aumentar suas interfaces estáveis. As estratégias de gancho desacoplam interfaces estáveis ​​e a realização de um espaço variado que pode surgir da instanciação de um aplicativo para uma configuração específica.

Soluções tecnológicas inovadoras oferece treinamento de desenvolvimento de software em Gurgaon, Delhi NCR, na Índia.

Ganchos como padrões de design

É intrigante notar que inúmeros (todos) desenhos de destaques exemplificam a semântica para ganchos. Eles falam sobre como executar sub-sistemas de áreas problemáticas. Alguns dependem da regra do desenvolvimento do destacamento: Abstrato, Fábrica, Construtor, Comando, Intérprete, Observador, Protótipo, Estado e Estratégia.

Outros em ambos os exemplos de unificação e desenvolvimento de partição: Template Method e Bridge.

A semântica normalmente é comunicada no nome da técnica de gancho (por exemplo, no Comando, a estratégia é chamada de executar ()).

Enquete de tabela de métodos virtuais

Desenvolvimento de Software - O que é um Hook - Point 1 As técnicas virtuais são trazidas em uma rota indistinguível de estratégias estáticas, mas como as técnicas virtuais podem ser alteradas, o compilador não conhece o endereço de uma capacidade virtual específica quando você o chama no código. O compilador, portanto, monta um Virtual Method Table (VMT), que fornece uma maneira de consultar os endereços de capacidade em tempo de execução. Cada estratégia virtual única é ativada em tempo de execução através do VMT. O VMT de uma questão contém todas as estratégias virtuais para seus precursores e, adicionalmente, aquelas que ele proclama. Portanto, as técnicas virtuais utilizam mais memória do que estratégias de elementos, apesar de serem mais rápidas.

Uma vez que o VMT é uma tabela que contém os ponteiros com endereços de memória para as capacidades da interface, o que deve ser feito é suplantar o primeiro endereço de memória com um endereço de um trabalho de gancho legítimo. Nessa linha, a técnica chamada será substituída e a nova conduta cobiçada da capacidade será executada.

Hooking API

Desenvolvimento de Software - O que é um procedimento Hook - Point 2The Hooking API verdadeiramente permite que você reinvente os elementos do sistema de trabalho. Com a capacidade de capturar esses encargos, você pode alterar seus parâmetros alterando a atividade que seria executada inicialmente.

É concebível, por exemplo, trocar o cancelamento de um registro específico, manter um aplicativo de execução e exigir uma afirmação do cliente para poupar um arquivo para o círculo, e assim por diante.

Na verdade, o maior corte de decisão é na região de segurança, por exemplo, antivírus e anti-spyware. Seja como for, existem circunstâncias em nosso desenvolvimento comum em que a API de Hooking, pode ser a saída principal.

Interface de programação O engano, em nossa circunstância específica, implica a obtenção de uma API a partir do sistema operacional, ou de qualquer DLL, e altera a sua execução típica para outro lugar, de forma mais precisa, para outra capacidade. Existem basicamente duas abordagens:

EAT e IAT: todos os EXE / DLL contém API para importar e tabelas de tarifas. Essas tabelas contêm ponteiros que mostram o ponto de entrada da API. Ao alterar esses ponteiros, fazendo com que eles indiquem nosso retorno de chamada, temos um gancho. Seja como for, se este EXE / DLL não importar APIs, esta estratégia não funcionará;

Sobreposição direta de código: Como dito anteriormente, no caso de ser possível adicionar uma chamada ao nosso retorno de chamada para o início do código da API, poderíamos "enganchá-lo", fazendo com que nossa capacidade fosse executada em qualquer ponto em que a API fosse chamada. Seja como for, há um problema: se depois de nosso código ser manipulado, precisávamos chamar a primeira API, voltaríamos ao retorno de chamada e uma inundação de pilha seria criada. Um arranjo é consertar o gancho para ter a capacidade de chamar a API, tentando novamente, uma vez que ela é executada. Seja como for, em meio a esse centro, algumas chamadas de API podem ser feitas e não executariam nosso retorno de chamada;

O Inline Hook é o ponto em que obtemos as principais diretrizes de uma capacidade, e trocamos por um Jump, Push ou um Call para nossa capacidade.

Leitura prescrita: o sistema de trabalho do Windows adicionalmente suporta a API de encriptação. Devemos saber como funciona a API do Windows API?

Enchimento da Ocasião

Desenvolvimento de Software - O que é um Gancho - As técnicas de gancho Point 3As desacoplam as interfaces estáveis ​​e a condução de um espaço variado que pode emergir da instanciação de uma aplicação para uma determinada configuração ocorre uma inversão de controle. Os manipuladores de ocasião de objetos modificam as etapas de preparação. No final do dia, quando uma ocasião acontece, o manipulador responde estratégias de gancho conjurantes sobre objetos pré-inscritos que executam atividades de preparação de ocasião específica. Casos de ocasiões: mensagens de janela, pacotes que chegam de portas de correspondência.

Dentro de IAT Hooking

Desenvolvimento de Software - O que é um processo Hook - Point 4Each no Windows possui uma tabela chamada Import Address Table (IAT), que armazena ponteiros para as capacidades enviadas pelas DLLs de cada procedimento. Esta tabela é preenchida progressivamente com o endereço dos elementos das DLLs em tempo de execução.

Usando capacidades específicas, podemos tornar a tabela IAT passível de escrita, sendo concebível para alterar seu endereço por um endereço de uma capacidade personalizada, denunciando a tabela como lida - simplesmente após essa alteração. No momento em que o procedimento tenta chamar a capacidade, seu endereço é obtido na tabela IAT e um ponteiro é retornado. À medida que a tabela IAT foi alterada, a capacidade personalizada é configurada na primeira capacidade e o código infundido no procedimento é obtido.

Netfilter Hook

Desenvolvimento de Software - O que é um Hook - O Point 5Netfilter é um subsistema Linux mais notável que o 2.4. É responsável pela separação de pacotes, NAT, firewall, redirecionamento, entre outros. O Netfilter é excepcionalmente extensível e sua documentação está concluída. Isso deixa a probabilidade de utilizar Ganchos no código do Kernel, tornando sua utilização extremamente flexível e geralmente recebida pelo grupo. Esses Ganchos deixam alguns resultados concebíveis e podem ser usados ​​como gatilhos para ocasiões específicas.

Conclusão:

Desenvolvimento de software - O que é um gancho - conclusão Os procedimentos de programação de engate são eficazes e abrem um escopo de resultados concebíveis para engenheiros de software, no entanto, deve ser utilizado com alerta, pois incluem uma complexidade mais proeminente no fluxo de procedimentos e alterar o primeiro conduta do sistema operacional, aplicativos ou outros segmentos de software, dificultando a compreensão da lógica do software. Além disso, conforme especificado anteriormente neste artigo, a utilização desses sistemas sem paradigma pode prejudicar a execução dos aplicativos.

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