Blog

9 Mar 2017

Proqram İnkişafı: Hook nədir?

Proqram İnkişafı: Hook nədir?

Biz Hook az növləri haqqında bilməliyik.

Hook nədir?Proqram inkişafında, Hooking bir proqramın davranışını dəyişdirməyə imkan verən bir fikirdir. Ehtimal kodu, müqayisəli sinif kodunuzu dəyişdirmədən bir şeyin ilk davranışını dəyişdirməyi təklif edir. Bu hook strategiyalarının üzərinə yazaraq başa çatdı.

Bu cür istifadələr tətbiqlərə yeni funksiyalar əlavə etməklə yanaşı, alternativ prosedurlar və sistem mesajlarının yazışmasını stimullaşdırmaq üçün son dərəcə faydalıdır. Kancalar sistemin hər bir mesajı yerinə yetirməsi lazım olan hazırlanan yükü genişləndirərək sistemin icrasını azaldır. Zəruri olduqda və ən erkən fürsətdə evakuasiya olunmaq lazımdır.

Bir kənardan Müştəri İdarəetmə Sistemi (CMS) istifadə etdiyini düşünün və bir başkanın e-poçt ilə xəbərdarlıq etməsi üçün başqa bir mesaj yayıldığından və bu davranışın cihazın sui-istifadə edilmədiyini isteyebilirsiniz. İrəli bir neçə marşrut olardı:

CMS kodunun dəyişdirilməsi ağıllı bir düşüncə deyildir, çünki cihazın aşağıdakı yeniləməsində sizin dəyişməyinizin itirilməsinin çətinliyi ilə qarşılaşacaqsınız və ya yenilənmiş hər şeyi etməyə imkanınız yoxdur;

  • Öz xüsusi CMS'inizi başqa bir qorxunc düşüncəsiniz, hər şey düşünün, yeni şeylər etmək və ya nə uydurmaq üçün kifayət qədər enerji və ya aktiviniz yoxdur;
  • Bir çəngəl istifadə ehtimalının araşdırılması, yəni CMS'nin, bu vəziyyəti, yeni mesajların paylanması üçün istənilən dəqiqədə icra ediləcək təklif edilən elementin kənar modullarına və ya modullara baxdığını yoxlayın.
  • Kancalardan istifadə etmək üçün yerdən aşağı hissəsi ümumiyyətlə cihazdan alətə doğru dəyişir. Kancaların prinsipi əlverişli mövqeyi ilk kodunu dəyişdirmək deyil. Fasiləsiz yeniləmələri olan bütün açıq mənbə cihazlarının bütün böyük təcrübə təlimatlarında özünü bərpa edən mantra mərkəz dəyişməyəcəkdir. Baxmayaraq, təəccüblənməyən təzahüratlara baxmayaraq, sonra qulluq etmək üçün gələn hər bir şəxs dəyişiklik barədə düşünməyəcək və bu haqda danışmır ki, qurğu deyil, sizdir.

Genişletilebilirlik tətbiqin sabit interfeyslərini artırmasına imkan verən çəngəl strategiyalarından istifadə etmək üçün başqa bir üstünlük nöqtəsidir. Hook strategiyaları sabit bir interfeys və müəyyən bir qəbulu üçün tətbiqin təyini ilə ortaya çıxa biləcək müxtəlif sahələrin aparılmasıdır.

Yenilikçi Texnologiya Çözümleri Hindistanın Gurgaon, Delhi NCR şirkətində Software Development Training təklif edir.

Dizayn nümunələri kimi qarmaqlar

Qeyd etmək lazımdır ki, çoxsaylı (bütün) kontur dizaynları qarmaqlar üçün semantikləri nümunə edir. Problemli sahələrin alt sistemlərini necə həyata keçirmək üçün danışırlar. Bəziləri dəstəyin inkişafı qayğısından asılıdır: Abstract, Factory, Builder, Command, Interpreter, Observer, Prototype, State və Strategy.

Birləşmə və bölmə inkişafının hər iki nümunəsindəki digərlər: Şablon metodu və Körpü.

Semantika adətən çəngəl texnikasının adı ilə əlaqələndirilir (məsələn, Command-da, strategiya yerinə çağırılır ()).

Virtual Metod Cədvəl Kanca

Proqram İnkişafı - Hook - Point 1Virtual üsulları statik strategiyalardan fərqlənə bilməyən bir marşruta gətirilir, ancaq virtual üsullar dəyişdirilə bildiyindən, kodunuzda zəng etdiyiniz zaman kompilyator xüsusi bir virtual qabiliyyətin ünvanını bilmir. Beləliklə, kompilyator, Virtual Metod Cədvəlini (VMT) toplayır və bu, iş vaxtında ünvanların ünvanına sorğu göndərməyə imkan verir. Hər bir virtual strategiya VMT vasitəsilə işləmə vaxtında aktivləşdirilir. Bir sualın VMT öz prekürsorları üçün bütün virtual strategiyaları və əlavə olaraq elan edir. Buna görə, virtual üsullar sürətlə işlədilməsinə baxmayaraq, element strategiyalarından daha çox yaddaş istifadə edir.

VMT, interfeys imkanları üçün yaddaş ünvanlarını göstərən göstəriciləri olan bir masa olduğundan, ilk yaddaş ünvanı qanuni bir çəngəl işinin ünvanı ilə sıxışdırmaq üçün nə edilməlidir. Bu xətlərin yanında, çağırılan texnika yazılacaq və potensialın yeni coveted davranışı icra ediləcəkdir.

Hooking API

Software Development - Hook - Point 2 The Hooking API proseduru həqiqətən iş sisteminin elementlərini yenidən yaratmağa imkan verir. Belə ittihamları tutma qabiliyyəti ilə, əvvəlcə yerinə yetiriləcək fəaliyyəti dəyişdirərək parametrlərini dəyişə bilərsiniz.

Misal üçün, müəyyən bir yazı parçasını ləğv etmək, ərizəni qaçırmaq və müştəri təsdiqləməyi dairə arxivini saxlamağını tələb etmək olar.

Həqiqətən, qərarın böyük hissəsi təhlükəsizlik sahəsində, məsələn, antivirus və antispywaredir. Olsun, ola bilsin ki, Hooking API'sinin əsas yolu ola biləcəyi adi inkişafımızda şərtlər var.

Proqramlaşdırma interfeysi Bizim xüsusi vəziyyətimizdə qoşulma, OS-dan və ya hər hansı bir DLL-dən bir API əldə etməyi nəzərdə tutur və tipik icrasını başqa bir yerə, daha dəqiqə, başqa bir tutuma dəyişir. Əsaslı iki yanaşma var:

EAT və IAT: bütün EXE / DLL idxal və masaları əldə etmək üçün API ehtiva edir. Bu cədvəllər API giriş nöqtəsini göstərən göstəriciləri ehtiva edir. Bu göstəriciləri dəyişdirərək, onları geri çağırdığımızı göstərir, bir çəngəl var. Bu EXE / DLL API-yı idxal etmirsə, bu strategiya işləməyəcəkdir;

Sadə kodun üzərində yazılması: Əvvəlki kimi, API kodunun başlanmasına doğru geri çağırışımıza zəng etmək mümkün olacağı təqdirdə, API-lərin hər hansı bir nöqtəsində bizim potensialımızı davam etdirə bilərik. Bəlkə, bir problem var: əgər kodumuz işlənməmişdən sonra ilk API çağırmamız lazım olsa, geri çağırışımıza geri qayıdacağıq və yığma daşqın yaradılacaqdır. Bir tənzimləmə, çəngəlin API çağırma imkanına malik olmasını düzəldir, tətbiq edildikdən sonra yenidən işləyir. Olsun ki, bu mərkəz zəminində bir neçə API çağırışı qəbul edilə bilər və geri çağırmamızı yerinə yetirməyəcəyik;

Inline Hook bir qabiliyyətin əsas prinsiplərini aldığımız nöqtəsidir və biz Git, Push və ya potensialımız üçün bir zəng üçün ticarət edirik.

Hazırlanan oxumaq: Windows iş sistemi əlavə hooking API dəstəkləyir. Windows API qoşulma funksiyalarını necə bilməliyik?

Baxışlar

Proqram İnkişafı - Hook - Point 3As çəngəl texnikası sabit bir interfeysdən imtina edir və müəyyən bir qəbulu üçün tətbiqin təyini ilə ortaya çıxa biləcək müxtəlif sahələrin idarə edilməsi nəzarətin bərpası olur. Nesnelerdeki durum işleyicileri hazırlama addımlarını dəyişdirir. Günün sonunda, bir hadisə baş verdiyi zaman, işəgötürən, xüsusi hazırlıq tədbirlərini hazırlayan əvvəlcədən qeydiyyatdan keçmiş obyektlər üzərində çəngəl strategiyalarının icrasına cavab verir. Vizual vəziyyətlər: pəncərə mesajları, yazı portlarından açılan paketlər.

IAT içərisində kanca

Proqram inkişafı - Hook - Point 4 - Hər hansı bir prosedurun DLL - ləri tərəfindən göndərilən imkanlara dair göstəriciləri saxlayan, Windows - da Əməli Ünvanlar Cədvəli (IAT) adlı bir masa var. Bu cədvəl, DLL-lərin işləməcəyi vaxtdakı elementləri ilə tədricən doldurulur.

Müəyyən qabiliyyətlərdən istifadə edərək, biz İAT cədvəlini yaza bilərik, öz ünvanını xüsusi qabiliyyətli bir ünvanı ilə dəyişə bilərik, cədvəlləri oxuduqdan sonra bu dəyişiklikdən sonra yenidən oxuyuruq. Prosedura potensialı çağırmağa çalışdıqda, onun ünvanı IAT masasında alınır və göstərici geri qaytarılır. IAT cədvəli dəyişdirildikdə, xüsusi qabiliyyət ilk növbədə qurulur və prosedura daxil olan kod əldə edilir.

Netfilter Hook

Proqram İnkişafı - Hook - Point 5Netfilter 2.4 - dən daha diqqətəlayiq bir Linux parçası alt sistemidir. Digərləri arasında ayırma paketini, NAT, firewall, redirection məsuldur. Netfilter olduqca genişlənir və sənədləri bitir. Kernel kodundan istifadə etmək ehtimalı yaranır və istifadə etmək çox çevik və ümumiyyətlə qrup tərəfindən qəbul edilir. Bu kancalar bir neçə akla çıxma nəticəsini buraxır və xüsusi hallar üçün tetikleyiciler olaraq doldururlar.

Nəticə:

Proqram təminatının inkişafı - Hook - nəticə nədir? Çəngəlləşdirmə proqramlaşdırma prosedurları effektivdir və proqram mühəndisləri üçün nəzərdə tutulan nəticələrin bir hissəsini açır, amma prosedur axınındakı daha görkəmli bir intricacy daxildir və ilk OS, ərizə və ya digər proqram seqmentlərinin aparılması, proqramın əsaslandırılmasını başa düşmək çətindir. Bundan başqa, bu maddənin əvvəlində göstərildiyi kimi, paradiqmadan bu sistemlərin istifadəsi ərizələrin icrasını qadağan edə bilər.

&bsp

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