Sagteware Ontwikkeling: Wat is 'n Hook? - Sy Tegniese Skool
Hake As Ontwerppatrone
Virtuele Metode Table Hooking
Binne IAT Hooking
Ons moet weet oor paar tipes haak.
Wat is 'n Hook?In sagteware-ontwikkeling, Hooking is 'n idee wat dit moontlik maak om die gedrag van 'n program te verander. Die moontlikheidskode bied u die geleentheid om iets anders te verander sonder om u kode van die vergelykende klas te verander. Dit word gedoen deur die haakstrategieë oor te skryf.
Hierdie soort gebruik is uiters nuttig as gevolg van die byvoeging van nuwe funksionaliteite aan toepassings, en bevorder ook die korrespondensie tussen alternatiewe prosedures en boodskappe van die stelsel. Hake is geneig om stelseluitvoering te verminder deur die voorbereidingslading uit te brei wat die stelsel moet uitvoer vir elke boodskap. Dit behoort bekendgestel te word net wanneer dit benodig word en by die vroegste geleentheid ontruim word.
Bepaal dat u 'n kliëntebestuurstelsel (CMS) van 'n buitestaander gebruik en u wil dalk hê dat 'n super uitvoerende beampte per e-pos gewaarsku moet word elke keer as 'n ander pos versprei is en dat hierdie gedrag nie die standaard van die toestel is nie. Daar sal 'n paar roetes vorentoe wees:
Verandering van die CMS-bronkode is nie 'n slim gedagte nie. In die volgende verversing van die toestel sal jy die probleem konfronteer om jou verandering te verloor of nie die vermoë het om voort te gaan met alles wat verfris is nie.
Maak jou eie besondere CMS is nog 'n verskriklike gedagte. Alles oorweeg, jy het nie genoeg energie of bates om nuwe dinge te maak of selfs op te hou wat om te vervaardig nie.
Verken die waarskynlikheid om 'n haak te gebruik, dws kyk of die CMS in buite modules of modules kyk vir elemente van 'n aangebied naam wat uitgevoer moet word op die gekose minuut, vir hierdie situasie, die verspreiding van nuwe poste.
Die afwaartse deel van die gebruik van hake wissel gewoonlik van toestel tot instrument. Die beginsel gunstige posisie van hake is om nie die eerste kode te verander nie. In alle groot oefenhandleidings van alle oopbrontoestelle wat periodieke updates het, verander die mantra wat homself herhad, nie die sentrum nie. Ten spyte daarvan dat dit onvoorstelbaar gemaak word, sal enige persoon wat later kom om onderhoud te doen, nie oor die verandering dink nie, en die persoon wat dit skaars bespreek, is jy, nie die apparaat nie.
Die uitbreidbaarheid is nog 'n voorkeurpunt van die gebruik van haakstrategieë wat toelaat dat die aansoek sy stabiele koppelvlakke uitbrei. Hook strategieë ontkoppel stabiele koppelvlakke en gedrag van 'n verskeidenheid ruimte wat kan ontstaan ​​uit die instansie van 'n aansoek vir 'n spesifieke omgewing.
Innoverende Tegnologie Oplossings bied Software Development Training in Gurgaon, Delhi NCR in Indië.
Dit is interessant om daarop te let dat talle (alle) buitelynontwerpe die semantiek vir hake uitbeeld. Hulle praat oor hoe om sub-stelsels van probleemareas uit te voer. Sommige is afhanklik van die heerskappy van ontlasting ontwikkeling: Abstrak, Fabriek, Bouwer, Opdrag, Interpreter, Observer, Prototipe, Staat en Strategie.
Ander in beide voorbeelde van eenwording en partisie ontwikkeling: Sjabloon Metode en brug.
Semantiek word gewoonlik in die haak tegniek naam gekommunikeer (byvoorbeeld in die opdrag word die strategie genoem uitvoer).
Sagteware Ontwikkeling - Wat is 'n Hook - Punt 1Virtual tegnieke word gebring op 'n onondersoekbare roete van statiese strategieë, maar aangesien virtuele tegnieke verander kan word, weet die samesteller nie die adres van 'n spesifieke virtuele kapasiteit wanneer jy dit in jou kode noem nie. Die samesteller stel dus 'n Virtuele Metode Tabel (VMT) saam, wat 'n manier bied om navraag te doen na kapasiteit adresse in runtime. Elke enkele virtuele strategie word geaktiveer deur middel van die VMT. Die VMT van 'n vraag bevat al die virtuele strategieë vir sy voorlopers, en addisioneel diegene wat dit verkondig. Daarom gebruik virtuele tegnieke meer geheue as elementstrategieë, ten spyte van die feit dat hulle vinniger hardloop.
Aangesien VMT 'n tabel bevat met die geheue adresse vir die koppelvlak vermoëns, wat gedoen moet word, is om die eerste geheue adres te vervang met 'n adres van 'n wettige haakwerk. Langs hierdie lyne sal die genaamde tegniek oorskryf word, en die nuwe gesogte gedrag van die kapasiteit sal uitgevoer word.
Sagteware Ontwikkeling - Wat is 'n Hook - Punt 2 Die Hooking API-proses laat jou toe om die elemente van die werkstelsel te herontdek. Met die vermoë om sulke koste te vang, kan jy hul parameters verander deur die aktiwiteit wat aanvanklik uitgevoer sou word, te verander.
Dit is byvoorbeeld denkbaar om 'n spesifieke rekord te kanselleer, 'n aansoek van hardloop te hou en 'n kliënt se bevestiging te eis om 'n argief na die sirkel te spaar, ensovoorts.
Inderdaad, die grootste besnoeiing van die besluit is in die omgewing van sekuriteit, byvoorbeeld antivirus en antispyware. As dit moontlik is, is daar omstandighede in ons gewone ontwikkeling waar die Hooking API, die belangrikste uitweg kan wees.
Programmering koppelvlak Hooking, in ons spesifieke omstandighede, impliseer om 'n API van die bedryfstelsel, of van enige DLL, te kry en sy tipiese uitvoering na iewers anders te verander, hoe meer presies, na 'n ander kapasiteit. Daar is basies twee benaderings:
EAT en IAT: alle EXE / DLL bevat API om te invoer en tarief tabelle. Hierdie tabelle bevat wenke wat die API-toegangspunt aandui. Deur hierdie wysigings te verander, om hulle terug te gee, het ons 'n haak. Wees soos dit mag, as hierdie EXE / DLL nie API's invoer nie, sal hierdie strategie nie werk nie;
Reguit kode oorskryding: Soos voorheen gesê, as dit moontlik sou wees om 'n oproep na ons terugbel na die begin van die API-kode by te voeg, kon ons dit "haak", sodat ons kapasiteit loop op watter punt die API genoem word. As dit moontlik is, is daar 'n probleem: as ons kode na ons kode gehanteer is, moes ons die eerste API bel, ons sal terugval op ons terugbel, en 'n stapel vloed sal geskep word. Een reëling is die haak om die kapasiteit te hê om die API te bel, en probeer dit weer sodra dit uitgevoer word. Wees, soos dit mag, te midde van hierdie sentrumgrond, kan 'n paar API-oproepe gemaak word en sal ons terugbel nie uitgevoer word nie.
Inline Hook is die punt waar ons die hoofriglyne van 'n kapasiteit kry, en ons handel vir 'n Spring, Druk of 'n Oproep vir ons kapasiteit.
Voorgeskrewe leeswerk: Windows-werkstelsel ondersteun aanvullend ook die aanhef van API. Ons moet weet hoe Windows API haak funksies?
Sagteware Ontwikkeling - Wat is 'n Hook - Punt 3A haak tegnieke ontkoppel stabiele koppelvlakke en gedrag van 'n verskeidenheid ruimte wat kan voortspruit uit die instansie van 'n aansoek vir 'n bepaalde omgewing, gebeur 'n omkering van beheer. Voorwerpe wat hanteerders hanteer, verander die voorbereiding van stappe. Aan die einde van die dag, wanneer 'n geleentheid plaasvind, reageer die hanteerder op haakstrategieë op voorgeskrewe voorwerpe wat spesifieke geleenthede uitvoer om aktiwiteite te beplan. Gevalle van geleenthede: vensterboodskappe, bondels wat van korrespondensie hawens land.
Sagteware Ontwikkeling - Wat is 'n Hook - Punt 4Each proses in Windows het 'n tabel genaamd Invoer Adres Tabel (IAT), wat pointers wys na die vermoëns wat deur die DLLs van elke prosedure gestuur word. Hierdie tabel word geleidelik gevul met die adres van die elemente van die DLLs op die tydstip.
Met behulp van spesifieke vermoëns, kan ons die IAT-tabel skryfbaar maak. Dit is denkbaar om sy adres te verander deur 'n adres van 'n persoonlike kapasiteit, wat die tabel as leesvoudig na hierdie verandering herbenoem. Op die punt wanneer die prosedure probeer om die kapasiteit te bel, is sy adres in die IAT-tabel gekry, en 'n wyser word teruggestuur. Aangesien die IAT-tabel verander is, word die persoonlike kapasiteit opgestel van die eerste kapasiteit en die kode wat in die prosedure ingebring is, is verkry.
Sagteware Ontwikkeling - Wat is 'n Hook - Punt 5Netfilter is 'n Linux-stuk substelsel meer opmerklik as 2.4. Dit is in beheer van die bundel skeiding, NAT, firewall, redirection, onder andere. Netfilter is besonder uitgebrei en die dokumentasie is klaar. Dit laat die waarskynlikheid om Hooks in die kernkode te gebruik, wat die gebruik daarvan uiters buigsaam maak en algemeen deur die groep ontvang word. Hierdie Hooks verlaat 'n paar denkbare uitkomste en kan vir spesifieke geleenthede as triggers invul.
Sagteware Ontwikkeling - Wat is 'n Hook-gevolgtrekking Die hakende programmeringsprosedures is effektief en maak 'n omvang van denkbare uitkomste vir sagteware-ingenieurs oop, maar dit behoort met waarskuwing aangewend te word aangesien dit 'n meer prominente ingewikkeldheid in die stroom van prosedures insluit en die eerste verander gedrag van die bedryfstelsel, toepassings of ander sagteware segmente, wat dit moeilik maak om die rasionaal van sagteware te verstaan. Anders as dit, soos voorheen in hierdie artikel vermeld, kan die gebruik van hierdie stelsels sonder paradigma die uitvoering van die aansoeke ontbreek.