Blogi

9 maaliskuu 2017

Ohjelmistokehitys: Mikä on koukku?

Ohjelmistokehitys: Mikä on koukku?

Meidän pitäisi tietää muutamia koukkuja.

Mikä on koukku?Ohjelmistokehityksessä Hooking on idea, joka mahdollistaa ohjelman toiminnan muuttamisen. Mahdollisuuskoodin avulla voit muuttaa jotain ensimmäistä käyttäytymistä muuttamatta vertailuryhmän koodia. Tämä on päättynyt korvaamalla koukkustrategiat.

Tällainen käyttö on äärimmäisen hyödyllistä uusien toimintojen lisäämiseksi sovelluksiin, mikä rohkaisee lisäksi vuorottelevien menettelyjen ja järjestelmän viestien välistä vastaavuutta. Koukut pyrkivät vähentämään järjestelmän suorituskykyä laajentamalla valmistavan kuorman, jonka järjestelmä tarvitsee suorittaa jokaiselle viestille. Se olisi esitettävä heti, kun sitä tarvitaan ja evakuoitiin mahdollisimman varhaisessa vaiheessa.

Kuvittele, että käytät asiakashallintajärjestelmää (CMS) ulkopuoliselta ja haluat, että ylivoimainen johtaja tulee varoittamaan sähköpostilla joka kerta, kun toinen viesti jaetaan, ja että tämä toiminta ei ole laitteen oletusarvo. Siellä olisi pari reittiä eteenpäin:

Muuta CMS-lähdekoodia ei ole älykäs ajatus, kun kaikki seuraavassa päivityksen laitteessa kohtaat vaikeuksia menettää muutos tai ei ole valmiuksia jatkaa kaikkea päivitetään;

  • Tee oma erityinen CMS on toinen kauhea ajatus, kaikki asiat katsotaan, sinulla ei ole riittävästi energiaa tai omaisuutta tarpeeksi tehdä uusia asioita tai edes pitää kiinni, mitä valmistaa;
  • Tutki koukun hyödyntämisen todennäköisyys, eli tarkista, onko CMS tarkasteltava ulkopuolisten moduulien tai moduulien avulla tarjottavan nimen elementtejä, jotka toteutetaan halutulla minuutilla, tässä tilanteessa uusien viestien jakaminen.
  • Koukkujen hyödyntäminen alas maan päällä vaihtelee yleensä laitteesta välineeksi. Koukkujen perimmäinen suotuisa asento ei ole muuttaa ensimmäistä koodia. Kaikissa avoimen lähdekoodin laitteissa, joissa on ajoittaisia ​​päivityksiä, käsikirjat, jotka ylläpitävät mantraa, eivät muuta keskusta. Huolimatta siitä, että virkistystä ei voi kuvitella, jokainen, joka tulee myöhemmin ylläpitämään, ei ajattele muutosta, ja henkilö, joka tuskin puhuu siitä, olet sinä etkä laite.

Laajennettavuus on toinen edullinen näkökohta, jossa hyödynnetään koukkustrategioita, joiden avulla sovellus voi lisätä vakioita rajapintojaan. Hook-strategiat irrottavat vakaat liitännät ja käyttäytyminen lajitelma-alueelta, joka voi tulla esiin sovelluksen tietyssä määrityksessä.

Innovatiiviset teknologiaratkaisut tarjoaa ohjelmistokehityskoulutusta Gurgaonissa, Delhi NCR Intiassa.

Koukut muotoiluina

On mielenkiintoista huomata, että lukuisat (kaikki) ääriviivat ovat esimerkkejä koukkujen semantiikasta. He puhuvat kuinka toteuttaa alajärjestelmät ongelmaluokkiin. Jotkut ovat riippuvaisia ​​irtautumiskehityksen säännöstä: tiivistelmä, tehdas, rakentaja, käsky, tulkki, tarkkailija, prototyyppi, valtio ja strategia.

Toiset molemmissa esimerkissä yhdistämisestä ja osioinnin kehittämisestä: Template Method ja Bridge.

Semantti on yleensä ilmoitettu koukku-tekniikan nimessä (esimerkiksi komennossa, strategiaa kutsutaan execute ()).

Virtual Method Table Hooking

Ohjelmistokehitys - Mikä on Hook-Point 1Virtual-tekniikat tuodaan erottamattomalla reitillä staattisista strategioista, mutta koska virtuaalitekniikoita voidaan muuttaa, kääntäjä ei tiedä tietyn virtuaalikapasiteetin osoitetta, kun soitat sen koodiin. Tällöin kääntäjä kokoaa Virtual Method Table (VMT) -menetelmän, joka antaa keinon tutkia kapasiteettitoimintoja rytmissä. Jokainen virtuaalinen strategia aktivoidaan ajon aikana VMT: n kautta. Kysymyksen VMT sisältää kaikki sen esiasteiden virtuaaliset strategiat ja lisäksi ne, joita se julistaa. Siksi virtuaalitekniikat käyttävät enemmän muistia kuin elementti- strategioita huolimatta siitä, että ne kulkevat nopeammin.

Koska VMT on taulukko, joka sisältää osoittimet, joilla on muistiosoitteet rajapintakapasiteeteille, pitäisi tehdä se, että korvataan ensimmäinen muistin osoite oikealla koukkutoiminnolla. Näiden rivien ohella kutsuttu tekniikka korvataan ja kapasiteetin uudet ylivoimaiset toimet toteutetaan.

Hooking API

Ohjelmistokehitys - Mikä on koukku-piste 2Koukku-API-proseduuri todella mahdollistaa uuden käyttöjärjestelmän elementtien keksimisen. Kun pystyt tallentamaan tällaiset maksut, voit muuttaa niiden parametreja muuttamalla alun perin suoritettavaa toimintaa.

On mahdollista esimerkiksi palauttaa tietyn tietueen, pitää sovellus käynnissä ja vaatia asiakkaan vahvistus varata arkiston ympyrä, etenkin.

Itse asiassa suurin päätösleveys on turvallisuuden alueella, esimerkiksi virustentorjuntaohjelmalla ja vakoiluohjelmien torjuntaohjelmilla. Olipa niin, niin voi olla tavallisessa kehityksessä olosuhteita, joissa Hooking-sovellusliittymä voi olla tärkein tie ulos.

Ohjelmointirajapinta Houkuttelemalla erityisessä tilanteessamme tarkoitetaan API: n hankkimista käyttöjärjestelmästä tai mistä tahansa DLL: stä ja muuttaa sen tyypillistä suoritusta muualle, tarkemmin sanoen toiseen kapasiteettiin. Periaatteessa on kaksi lähestymistapaa:

EAT ja IAT: kaikki EXE / DLL sisältää sovellusliittymän tuonti- ja hinnoittelutaulukot. Näissä taulukoissa on viitteitä, jotka osoittavat API-tulopisteen. Muuttamalla nämä osoittimet, jolloin ne osoittavat soittopyynnön, meillä on koukku. Olkoon niin, että jos tämä EXE / DLL ei tuota API: t, tämä strategia ei toimi;

Suoran koodin päällekirjoitus: Kuten aiemmin sanoin, siinä tapauksessa, että oli mahdollista lisätä puhelun soittopyyntömme API-koodin alkuun, voisimme "kytkeä sen", minkä ansiosta kapasiteettimme kulkee missä vaiheessa API kutsuttiin. Olkoon se, että se voi olla, on ongelma: jos koodin käsittelyn jälkeen tarvitsemme ensimmäisen sovellusliittymän, palaisimme takaisin soittopyyntömme ja syntyisi pino tulva. Yksi järjestely on korjata koukku, jotta se kykenee soittamaan sovellusliittymälle, yrittäen sitä uudelleen sen jälkeen, kun se toteutetaan. Olipa niin, että keskellä tätä keskustaan ​​voidaan tehdä muutamia API-puheluita, jotka eivät suorita soittopyyntömme;

Inline Hook on piste, jolla saamme kapasiteetin tärkeimmät suuntaviivat, ja käymme kauppaa Jump, Push tai Call for our capacity.

Sanottu lue: Windows-työjärjestelmä lisää myös koukkausliittymää. Meidän pitäisi tietää, miten Windowsin API-koukutus toimii?

Tilaisuus kiinnittyy

Ohjelmistokehitys - Mikä on koukku - Point 3As koukku tekniikoista irrottaa vakaa rajapinnat ja käyttäytyminen eri tilaa, joka voi syntyä soveltamisen instantiation tietyn asetuksen tapahtuu käänteinen ohjaus. Objektit tilaisuuksien käsittelijät muokkaavat valmisteluvaiheita. Päivän päätteeksi, kun tapahtuma tapahtuu, käsittelijä reagoi haastattelemalla koukku strategioita ennalta kirjoilla esineitä, jotka toteuttavat erityistä tilaisuutta valmistella toimintaa. Tapahtumatapaukset: ikkunaviestit, nippuset, jotka saapuvat kirjeenvaihtajaporteista.

Sisällä IAT-koukku

Ohjelmistokehitys - Mikä on Hook-Point 4-prosessi Windowsissa on taulukko nimeltä Import Address Table (IAT), joka tallentaa osoittimet kunkin prosessin DLL: n lähettämiin kapasiteetteihin. Tämä taulukko täyttyy progressiivisesti DLL-elementtien osoitteen kanssa ajon aikana.

Käyttämällä erityisiä kapasiteetteja voimme tehdä IAT-taulukon kirjoitettavaksi, koska se on mahdollista vaihtaa osoitteensa mukautetun kapasiteetin osoittamalla tavalla, joka merkitsee taulukon lukemaan yksinkertaisesti tämän muutoksen jälkeen. Siinä vaiheessa, kun menettely yrittää kutsua kapasiteettia, sen osoite on otettu IAT-taulukkoon ja osoitin palautetaan. Koska IAT-taulukkoa on muutettu, mukautettu kapasiteetti tuodaan ensimmäisen kapasiteetin käyttöön ja menettelyyn syötetty koodi on saatu.

Netfilter Hook

Ohjelmistokehitys - Mikä on Hook-Point 5Netfilter on Linuxin osaalijärjestelmä, joka on huomattavampi kuin 2.4. Se vastaa muun muassa nipun erottamisesta, NAT: stä, palomuurista, uudelleenohjauksesta. Netfilter on poikkeuksellisen laajennettavissa ja sen dokumentointi on valmis. Se jättää todennäköisyyden käyttää koukkuja ytimen koodissa, mikä tekee sen käytöstä erittäin joustavaksi ja yleensä vastaanottaa ryhmän. Nämä koukut jättävät muutamia mahdollisia tuloksia ja voivat täyttää laukaisuina tiettyihin tilanteisiin.

Johtopäätös:

Ohjelmistokehitys - Mikä on koukku - johtopäätös Koukkuohjelmointimenettelyt ovat tehokkaita ja avaavat mahdollisuudet ohjelmistotaloille, mutta niitä pitäisi käyttää varoituksin, koska niissä on näkyvämpi mutkikkuus prosessivirrassa ja muutos ensimmäinen käyttöjärjestelmän, sovellusten tai muiden ohjelmistosegmenttien käyttäytyminen, mikä vaikeuttaa ohjelmiston perustelujen ymmärtämistä. Muussa kuin tässä artikkelissa määritellyllä tavalla, näiden järjestelmien hyödyntäminen ilman paradigmaa saattaa heikentää sovellusten toteutusta.

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