Blog

9 Mar 2017

Sviluppo software: cos'è un gancio?

Sviluppo software: cos'è un gancio?

Dovremmo sapere su alcuni tipi di gancio.

Cos'è un gancio?Nello sviluppo del software, Hooking è un'idea che consente di cambiare la condotta di un programma. Il codice di possibilità ti offre di cambiare il primo comportamento di qualcosa senza modificare il codice della classe di confronto. Questo è finito sovrascrivendo le strategie di aggancio.

Questo tipo di utilizzo è estremamente utile per l'aggiunta di nuove funzionalità alle applicazioni, incoraggiando inoltre la corrispondenza tra procedure alternative e messaggi del sistema. I ganci tendono a ridurre l'esecuzione del sistema espandendo il carico di preparazione che il sistema deve eseguire per ciascun messaggio. Dovrebbe essere introdotto solo quando richiesto e evacuato alla prima occasione.

Immagina di utilizzare un sistema di gestione dei clienti (CMS) da un estraneo e potresti chiedere a un super executive di essere avvertito via email ogni volta che viene distribuito un altro post e che questa condotta non è l'impostazione predefinita del dispositivo. Ci sarebbero un paio di rotte in avanti:

Cambiare il codice sorgente CMS non è un pensiero intelligente, dopotutto nel successivo aggiornamento del dispositivo si dovrà affrontare la difficoltà di perdere il proprio cambiamento o non avere la capacità di continuare tutto aggiornato;

  • Crea il tuo CMS particolare è un altro pensiero terribile, tutto sommato, non hai abbastanza energia o risorse sufficienti per fare nuove cose o anche tenere il passo su cosa fabbricare;
  • Scopri la probabilità di utilizzare un hook, ovvero controlla se il CMS cerca in moduli o moduli esterni gli elementi di un nome offerto da eseguire al minuto desiderato, per questa situazione, la distribuzione di nuovi post.
  • La parte per terra di utilizzare i ganci fluttua generalmente da un dispositivo all'altro. La posizione favorevole degli hook non è quella di modificare il primo codice. In tutti i manuali di grande pratica di tutti i dispositivi open source che hanno aggiornamenti intermittenti, il mantra che si ripara non cambia il centro. Nonostante i rinfreschi inimmaginabili, ogni individuo che viene più tardi a fare manutenzione non penserà al cambiamento, e la persona che discute a stento non è te, non l'apparato.

L'estensibilità è un altro punto di vista preferito dell'utilizzo di strategie di aggancio che consentono all'applicazione di aumentare le interfacce stabili. Le strategie di aggancio separano le interfacce stabili e la condotta di uno spazio di varietà che può emergere dall'istanziazione di un'applicazione per un'impostazione specifica.

Soluzioni tecnologiche innovative offre formazione per lo sviluppo del software a Gurgaon, Delhi NCR in India.

Ganci come modelli di design

È interessante notare che numerosi disegni di contorno (tutti) esemplificano la semantica per i ganci. Parlano di come eseguire sottosistemi di aree problematiche. Alcuni dipendono dalla regola dello sviluppo del distacco: Abstract, Factory, Builder, Command, Interpreter, Observer, Prototype, State e Strategy.

Altri in entrambi gli esempi di unificazione e sviluppo delle partizioni: Template Method e Bridge.

La semantica viene ordinariamente comunicata nel nome della tecnica di aggancio (ad esempio, nel comando, la strategia è chiamata execute ()).

Metodo virtuale Hooking

Sviluppo di software - Che cosa è un punto di aggancio Le tecniche 1 vengono introdotte in un percorso indistinguibile dalle strategie statiche, ma poiché le tecniche virtuali possono essere modificate, il compilatore non conosce l'indirizzo di una specifica capacità virtuale quando viene richiamato nel codice. Il compilatore, quindi, assembla una Virtual Method Table (VMT), che consente di interrogare gli indirizzi di capacità in runtime. Ogni singola strategia virtuale viene attivata in fase di runtime tramite VMT. Il VMT di una domanda contiene tutte le strategie virtuali per i suoi precursori e in aggiunta quelle che proclama. Pertanto, le tecniche virtuali utilizzano più memoria rispetto alle strategie degli elementi, nonostante siano più veloci.

Poiché VMT è una tabella che contiene i puntatori con gli indirizzi di memoria per le capacità dell'interfaccia, è necessario sostituire il primo indirizzo di memoria con un indirizzo di un hook hook legittimo. Lungo queste linee, la tecnica chiamata verrà sovrascritta e verrà eseguita la nuova condotta della capacità.

API di aggancio

Sviluppo software - Che cos'è un punto di aggancio 2La procedura API di hooking consente di reinventare gli elementi del sistema operativo. Con la possibilità di acquisire tali costi, è possibile modificare i loro parametri modificando l'attività che verrebbe eseguita inizialmente.

È concepibile, ad esempio, per annullare un record specifico, mantenere un'applicazione in esecuzione e richiedere all'affermazione del cliente di risparmiare un archivio sul cerchio, eccetera.

In effetti, il più grande taglio di decisione è nella zona della sicurezza, ad esempio, antivirus e antispyware. Comunque sia, nel nostro ordinario sviluppo ci sono circostanze in cui l'API di Hooking può essere la via d'uscita principale.

Interfaccia di programmazione L'hooking, nella nostra specifica circostanza, implica ottenere un'API dal sistema operativo, o da qualsiasi DLL, e cambiare la sua tipica esecuzione in un'altra, più esattamente, in un'altra capacità. Esistono fondamentalmente due approcci:

EAT e IAT: tutti gli EXE / DLL contengono API per importare e tabelle tariffarie. Queste tabelle contengono puntatori che mostrano il punto di ingresso dell'API. Modificando questi puntatori, facendoli indicare la nostra richiamata, abbiamo un gancio. Sia come sia, se questo EXE / DLL non importa le API, questa strategia non funzionerà;

Sovrascrittura di codice semplice: come detto in precedenza, nel caso in cui fosse pensabile aggiungere una chiamata al nostro callback all'inizio del codice API, potremmo "collegarlo", facendo funzionare la nostra capacità in qualunque punto l'API fosse chiamata. Comunque sia, c'è un problema: se dopo che il nostro codice è stato gestito, avremmo dovuto chiamare la prima API, ricorreremo alla nostra callback e sarebbe stato creato uno stack flood. Una soluzione è quella di fissare l'hook per avere la capacità di chiamare l'API, ri-provare una volta che è stato eseguito. Sia come sia, in questo punto centrale, è possibile effettuare alcune chiamate API e non eseguire la nostra callback;

Inline Hook è il punto in cui otteniamo le principali linee guida di una capacità e scambiamo per un Jump, Push o Call per la nostra capacità.

Lettura prescritta: il sistema di lavoro Windows supporta inoltre l'API di hooking. Dovremmo sapere come funzionano le funzioni di aggancio dell'API di Windows?

Occasione Hooking

Sviluppo di software - Che cosa è un hook-point Le tecniche di hook di 3A separano le interfacce stabili e la condotta di uno spazio di varietà che può emergere dall'istanziazione di un'applicazione per un particolare scenario e avviene un'inversione del controllo. Gli operatori occasionali di oggetti modificano i passaggi di preparazione. Alla fine della giornata, quando si verifica un'occasione, il conduttore risponde a strategie di aggancio evocativo su oggetti pre-registrati che svolgono particolari attività di preparazione all'occasione. Casi di occasioni: messaggi di finestre, pacchi che atterrano dai porti di corrispondenza.

All'interno di IAT Hooking

Sviluppo software - Che cos'è un processo Hook-Point 4Each in Windows ha una tabella chiamata Importa indirizzo tabella (IAT), che memorizza i puntatori alle capacità inviate dalle DLL di ciascuna procedura. Questa tabella viene popolata progressivamente con l'indirizzo degli elementi delle DLL in fase di esecuzione.

Usando capacità particolari, possiamo rendere la tabella IAT scrivibile, essendo concepibile per cambiare il suo indirizzo con un indirizzo di una capacità personalizzata, rinominando la tabella come read-semplicemente dopo questo cambiamento. Nel momento in cui la procedura tenta di chiamare la capacità, il suo indirizzo viene ottenuto nella tabella IAT e viene restituito un puntatore. Poiché la tabella IAT è stata modificata, la capacità personalizzata viene impostata della prima capacità e viene ottenuto il codice infuso nella procedura.

Netfilter Hook

Sviluppo software - Che cos'è un punto di aggancio 5Netfilter è un sottosistema di pezzi Linux più notevole di 2.4. È responsabile del bundle di separazione, NAT, firewall, reindirizzamento, tra gli altri. Netfilter è eccezionalmente estensibile e la sua documentazione è finita. Lascia la possibilità di utilizzare Hooks nel codice del kernel, rendendo il suo utilizzo estremamente flessibile e generalmente ricevuto dal gruppo. Questi Hook lasciano alcuni risultati immaginabili e possono essere utilizzati come trigger per occasioni specifiche.

Conclusione:

Sviluppo del software - Che cosa è un gancio - Conclusione Le procedure di aggancio della programmazione sono efficaci e aprono un campo di esiti concepibili per gli ingegneri del software, tuttavia dovrebbero essere utilizzate con attenzione poiché includono una complessità più evidente nel flusso di procedure e cambiano il primo condotta del sistema operativo, delle applicazioni o di altri segmenti del software, rendendo difficile comprendere la logica del software. Oltre a ciò, come specificato in precedenza in questo articolo, l'utilizzo di questi sistemi senza paradigmi può indebolire l'esecuzione delle applicazioni.

&bsp

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