Blog

9 Di 2017

Softwareentwicklung: Was ist ein Haken?

Softwareentwicklung: Was ist ein Haken?

Wir sollten über einige Arten von Haken wissen.

Was ist ein Haken?In der Software-Entwicklung ist Hooking eine Idee, die es erlaubt, das Verhalten eines Programms zu ändern. Der Möglichkeitscode bietet Ihnen an, das erste Verhalten von etwas zu ändern, ohne Ihren Code der Vergleichsklasse zu ändern. Dies wird durch Überschreiben der Hook-Strategien beendet.

Diese Art der Verwendung ist äußerst hilfreich, weil Anwendungen neue Funktionalitäten hinzugefügt werden, was zusätzlich die Übereinstimmung zwischen alternativen Prozeduren und Nachrichten des Systems fördert. Hooks neigen dazu, das System zu reduzieren, indem sie die vorbereitende Last erweitern, die das System für jede Nachricht ausführen muss. Es sollte nur bei Bedarf eingeführt und bei nächster Gelegenheit evakuiert werden.

Stellen Sie sich vor, dass Sie ein Kundenverwaltungssystem (CMS) von einem Außenstehenden verwenden, und Sie möchten möglicherweise, dass ein Superexperte per E-Mail jedes Mal benachrichtigt wird, wenn ein anderer Beitrag verteilt wird und dass dieses Verhalten nicht der Standard des Geräts ist. Es würde ein paar Routen vorwärts geben:

Ändern Sie den CMS-Quellcode ist kein kluger Gedanke, schließlich in der folgenden Aktualisierung des Geräts werden Sie die Schwierigkeit zu stellen, Ihre Änderung zu verlieren oder nicht die Fähigkeit haben, alles aktualisiert fortzusetzen;

  • Machen Sie Ihr eigenes CMS ist ein weiterer schrecklicher Gedanke, alles in allem, Sie haben nicht genügend Energie oder Vermögenswerte genug, um neue Dinge zu machen oder sogar zu halten, was zu fabrizieren;
  • Erkunden Sie die Wahrscheinlichkeit der Verwendung eines Hooks, dh prüfen Sie, ob das CMS in externen Modulen oder Modulen nach Elementen eines angebotenen Namens sucht, die in der gewünschten Minute ausgeführt werden, und zwar für die Verteilung neuer Posts.
  • Der bodenständige Teil der Verwendung von Haken schwankt im Allgemeinen von Gerät zu Gerät. Die grundsätzlich günstige Position der Haken besteht nicht darin, den ersten Code zu ändern. In allen großartigen Übungshandbüchern aller Open-Source-Geräte, die zeitweise aktualisiert werden, ändert sich das Mantra, das sich selbst wiederholt, nicht das Zentrum. Ungeachtet der Tatsache, dass Erfrischungen unvorstellbar sind, wird jede Person, die später zur Pflege kommt, nicht über die Veränderung nachdenken, und die Person, die sie kaum diskutiert, ist Sie, nicht der Apparat.

Die Erweiterbarkeit ist ein weiterer bevorzugter Standpunkt der Verwendung von Hook-Strategien, die es der Anwendung erlauben, ihre stabilen Schnittstellen zu erweitern. Hook-Strategien entkoppeln stabile Interfaces und leiten einen Variationsraum, der sich aus der Instanziierung einer Anwendung für eine bestimmte Einstellung ergeben kann.

Innovative Technologielösungen bietet Software Development Training in Gurgaon, Delhi NCR in Indien.

Haken als Entwurfsmuster

Es ist faszinierend zu bemerken, dass zahlreiche (alle) Entwurfsentwürfe Semantiken für Haken veranschaulichen. Sie sprechen darüber, wie Subsysteme von Problembereichen ausgeführt werden. Einige hängen von der Regel der Loslösungsentwicklung ab: Abstrakt, Fabrik, Erbauer, Befehl, Interpreter, Beobachter, Prototyp, Staat und Strategie.

Andere in beiden Beispielen für Vereinheitlichung und Partitionsentwicklung: Template-Methode und Bridge.

Semantik wird normalerweise im Hook-Technik-Namen mitgeteilt (zum Beispiel wird die Strategie im Command als execute () bezeichnet).

Virtuelle Methode Tabelle Hooking

Softwareentwicklung - Was ist ein Hook - Point 1Virtuelle Techniken werden in eine nicht unterscheidbare Route von statischen Strategien gebracht, aber da virtuelle Techniken geändert werden können, kennt der Compiler die Adresse einer bestimmten virtuellen Kapazität nicht, wenn Sie sie in Ihrem Code aufrufen. Der Compiler stellt somit eine Virtuelle Methodentabelle (VMT) zusammen, die eine Möglichkeit bietet, Kapazitätsadressen in Runtime abzufragen. Jede einzelne virtuelle Strategie wird zur Laufzeit über die VMT aktiviert. Die VMT einer Frage enthält alle virtuellen Strategien für ihre Vorläufer und zusätzlich die, die sie proklamiert. Daher verwenden virtuelle Techniken mehr Speicher als Elementstrategien, obwohl sie schneller laufen.

Da VMT eine Tabelle ist, die die Zeiger mit Speicheradressen für die Schnittstellenkapazitäten enthält, sollte die erste Speicheradresse durch eine Adresse einer legitimen Hook-Arbeit ersetzt werden. In diesem Sinne wird die aufgerufene Technik überschrieben und das neue begehrte Verhalten der Kapazität wird ausgeführt.

Hooking API

Softwareentwicklung - Was ist ein Hook - Point 2Das Hooking-API-Verfahren erlaubt es Ihnen wirklich, die Elemente des Arbeitssystems neu zu erfinden. Mit der Fähigkeit, solche Gebühren zu erfassen, können Sie ihre Parameter ändern, indem Sie die Aktivität ändern, die ursprünglich durchgeführt würde.

Es ist beispielsweise vorstellbar, die Löschung eines bestimmten Datensatzes abzubrechen, eine Anwendung am Laufen zu halten und eine Kundenbestätigung zu verlangen, um ein Archiv für den Kreis zu verschonen, und so weiter.

In der Tat ist der größte Teil der Entscheidung in der Sicherheitsbereich, zum Beispiel, Antiviren-und Anti-Spyware. Wie dem auch sei, es gibt Umstände in unserer normalen Entwicklung, bei denen die Hooking-API der Hauptausweg sein kann.

Programmierschnittstelle Hooking impliziert unter bestimmten Umständen, dass eine API vom Betriebssystem oder von einer beliebigen DLL abgerufen wird und die typische Ausführung an anderer Stelle, genauer gesagt, auf eine andere Kapazität geändert wird. Es gibt grundsätzlich zwei Ansätze:

EAT und IAT: Alle EXE / DLL enthält API zum Importieren und Tariftabellen. Diese Tabellen enthalten Zeiger, die den API-Einstiegspunkt anzeigen. Indem wir diese Zeiger ändern und sie so auf unseren Rückruf hinweisen, haben wir einen Haken. Wie auch immer, wenn diese EXE / DLL APIs nicht importiert, wird diese Strategie nicht funktionieren;

Unkompliziertes Code-Überschreiben: Wie bereits erwähnt, könnten wir im Falle, dass es möglich wäre, einen Call zu unserem Callback hinzuzufügen, "hooken" und unsere Kapazität an jedem Punkt ausführen, an dem die API aufgerufen wurde. Wie dem auch sei, es gibt ein Problem: Wenn wir nach der Verarbeitung unseres Codes die erste API aufrufen müssten, würden wir auf unseren Rückruf zurückgreifen und eine Stapelflut würde erstellt werden. Eine Anordnung ist, den Haken zu fixieren, um die Fähigkeit zu haben, die API aufzurufen und sie erneut zu versuchen, sobald sie ausgeführt ist. Wie dem auch sei, unter diesem zentralen Grund können einige API-Aufrufe getätigt werden und würden unseren Rückruf nicht ausführen;

Inline Hook ist der Punkt, an dem wir die wichtigsten Richtlinien einer Kapazität erhalten, und wir handeln für einen Sprung, einen Push oder einen Call für unsere Kapazität.

Vorgeschrieben lesen: Windows Working System unterstützt zusätzlich die Hooking API. Wir sollten wissen, wie Windows API-Hooking funktioniert?

Gelegenheits-Hooking

Software-Entwicklung - Was ist ein Hook - Point 3As Hook-Techniken entkoppeln stabile Schnittstellen und die Durchführung einer Vielzahl von Raum, die aus der Instanziierung einer Anwendung für eine bestimmte Einstellung entstehen kann, geschieht eine Umkehrung der Kontrolle. Objekte Gelegenheitshandler ändern Vorbereitungsschritte. Am Ende des Tages, wenn eine Gelegenheit eintritt, reagiert der Handler mit Zauberstrategien auf vorinskribierte Objekte, die bestimmte Gelegenheitsvorbereitungsaktivitäten ausführen. Fälle von Anlässen: Fenstermeldungen, Bündel, die von Korrespondenzhäfen landen.

In IAT Hooking

Softwareentwicklung - Was ist ein Hook - Point 4Each-Prozess in Windows hat eine Tabelle namens Import Address Table (IAT), die Zeiger auf die Kapazitäten speichert, die von den DLLs jeder Prozedur gesendet werden. Diese Tabelle wird fortlaufend mit der Adresse der Elemente der DLLs zur Laufzeit gefüllt.

Unter Verwendung bestimmter Kapazitäten können wir die IAT-Tabelle beschreibbar machen, wobei es vorstellbar ist, ihre Adresse durch eine Adresse einer benutzerdefinierten Kapazität zu ändern, wobei die Tabelle als gelesen deklariert wird - einfach nach dieser Änderung. An dem Punkt, an dem die Prozedur versucht, die Kapazität aufzurufen, wird ihre Adresse in die IAT-Tabelle übernommen, und ein Zeiger wird zurückgegeben. Wenn die IAT-Tabelle geändert wurde, wird die benutzerdefinierte Kapazität der ersten Kapazität eingerichtet, und der in die Prozedur infundierte Code wird abgerufen.

Netfilter Haken

Softwareentwicklung - Was ist ein Hook - Point 5Netfilter ist ein Linux-Teilsystem, das bemerkenswerter ist als 2.4. Es ist verantwortlich für Bundle-Trennung, NAT, Firewall, Umleitung, unter anderem. Netfilter ist außergewöhnlich erweiterbar und die Dokumentation ist fertig. Es bleibt die Wahrscheinlichkeit der Verwendung von Hooks im Kernel-Code, was seine Verwendung extrem flexibel macht und im Allgemeinen von der Gruppe erhalten wird. Diese Haken lassen einige denkbare Ergebnisse und können als Auslöser für bestimmte Anlässe ausfüllen.

Fazit:

Software-Entwicklung - Was ist ein Hook - FazitDie Hooking-Programmierung Verfahren sind effektiv und eröffnen eine Reihe von denkbaren Ergebnisse für Software-Ingenieure, aber es sollte mit Alarm eingesetzt werden, da sie eine größere Komplexität im Strom der Verfahren enthalten und die erste ändern Verhalten des Betriebssystems, der Anwendungen oder anderer Software-Segmente, wodurch es schwierig wird, die Gründe für Software zu verstehen. Ansonsten, wie zuvor in diesem Artikel angegeben, kann die Verwendung dieser Systeme ohne Paradigma die Ausführung der Anwendungen beeinträchtigen.

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