သတင္းေၾကျငာခ်က္

9 မာ 2017

Software Development: တစ်ဦးက Hook ဆိုတာဘာလဲ

/
အားဖြင့် Posted

Software Development: တစ်ဦးက Hook ဆိုတာဘာလဲ

ကျနော်တို့ Hook ၏အနည်းငယ်အမျိုးအစားများအကြောင်းသိထားသင့်ပါတယ်။

တစ်ဦး Hook ကဘာလဲ?ဆော့ဖျဝဲဖွံ့ဖြိုးတိုးတက်မှုအတွက်, ချိတ်နေတဲ့အစီအစဉ်၏အကငျြ့ကိုပြောင်းလဲခွင့်ပြုထားတဲ့စိတ်ကူးဖြစ်ပါတယ်။ ဖြစ်နိုင်ခြေ code ကနှိုင်းယှဉ်လူတန်းစားသင့်ရဲ့ပြောင်းလဲနေတဲ့ code မပါဘဲတစ်ခုခုကို၏ပထမဦးဆုံးအမူအကျင့်ကိုပြောင်းလဲရန်သင့်အားပေးထားပါတယ်။ ဤအချိတ်မဟာဗျူဟာ overwrite လုပ်နိုင်တဲ့ခြင်းဖြင့်ကိုလက်စသတ်နေသည်။

အသုံးပြုမှု၏ဤမျိုးအခြားလုပ်ထုံးလုပ်နည်းများနှင့်စနစ်၏မက်ဆေ့ခ်ျအကြားစာပေးစာယူအားပေးအားမြှောက်ဒါ့အပြင်, applications များအသစ်ရဲ့လုပ်ဆောင်ချက်တွေကိုထည့်သွင်း၏အကောင့်အပေါ်အလွန်အမင်းအထောက်အကူဖြစ်စေပါသည်။ ချိတ်စနစ်တစ်ဦးချင်းစီမက်ဆေ့ခ်ျကိုများအတွက်လုပ်ဆောင်ရန်လိုအပ်ပါသည်သောပြင်ဆင်နေဝန်တိုးချဲ့ခြင်းဖြင့်လျှော့ချရေးစနစ်ကသေဒဏ်စီရင်လေ့ရှိပါတယ်။ ဒါဟာအစောဆုံးအခွင့်အလမ်းအနည်းဆုံးလိုအပ်သောနှင့်ရွှေ့ပြောင်းလာသောအခါကိုယ့်မိတ်ဆက်ခံရဖို့သင့်၏။

သင်တစ်ဦးပြင်ပကနေတစ်ဦးဖုန်းဆက်စီမံခန့်ခွဲမှုစနစ် (CMS) အသုံးချဖို့ကြသည်နှင့်သင်တစ်ဦးစူပါအလုပ်အမှုဆောင်အီးမေးလ်ဖြင့်အခြား post ကိုဖြန့်ဝေနှင့်ဤအမူအကျင့်စက်ပစ္စည်း၏ default အနေနဲ့မဟုတျကွောငျးခဲ့သည်တစ်ခုချင်းစီကိုအချိန်သတိပေးခံရဖို့လိုခငျြအံ့သောငှါကြဖို့အရေးကြီးနေသည်။ ရှေ့ဆက်စုံတွဲတစ်တွဲလမ်းကြောင်းရှိလိမ့်မည်ဟု:

အဆိုပါ CMS သို့ source code ကိုသင်လန်းဆန်းအရာအားလုံးဆက်လက်နိုင်စွမ်းရှိသင့်ရဲ့ပြောင်းလဲမှုကိုဆုံးရှုံးများ၏အခက်အခဲထိပ်တိုက်ရင်ဆိုင်သို့မဟုတ်မည်မဟုတ်ပြီးနောက်အပေါငျးတို့သကိရိယာ၏အောက်ပါရဲ့ Refresh အတွက်တစ်စမတ်အတွေးမဟုတ်ပါပြောင်းနည်း;

  • Make သင့်ကိုယ်ပိုင်အထူးသဖြင့် CMS သို့အခြားကြောက်မက်ဘွယ်သောအတှေးဖြစ်ပါသည်, စဉ်းစားခပ်သိမ်းသောအရာတို့ကို, သင်လုံလောက်သောစွမ်းအင်သို့မဟုတ်အသစ်သောအရာဖြစ်စေခြင်းငှါသို့မဟုတ်ပင်အဘယ်အရာကိုလီဆယ်အထိစောင့်ရှောက်ဖို့လုံလောက်တဲ့ပိုင်ဆိုင်မှုရှိသည်မဟုတ်ကြဘူး;
  • အဆိုပါ CMS သို့ဤအခြေအနေများအတွက်တဏှာမိနစ်, အသစ်သောပို့စ်များကို၏ဖြန့်ဖြူးမှာကွပ်မျက်ခံရခံရဖို့တစ်ဦးကိုကမ်းလှမ်းနာမတျော၏ဒြပ်စင်အဘို့အပြင်ပမှာ module တွေသို့မဟုတ် module တွေအတွက်ကြည့်လျှင်ချိတ်အသုံးချဖို့များ၏ဖြစ်နိုင်ခြေကို Explore, ထိုဖြစ်ပါသည်, စစ်ဆေးပါ။
  • ချိတ်အသုံးချဖို့၏ညျမွကွေီးပျေါစိတျအပိုငျးရန်ချကိရိယာမှတူရိယာမှယေဘုယျအားဖြင့် fluctuates ။ ချိတ်၏နိယာမအဆင်သင့်အနေအထားပထမဦးဆုံးကုဒ်ပြောင်းပေးဖို့မဟုတ်ပါဘူး။ သူ့ဟာသူ rehashes သောဂါထာဗဟိုမပြောင်းပါဘူးပြတ်တောင်းပြတ်တောင်း updates များကိုရှိသည်အားလုံးပွင့်လင်းအရင်းအမြစ် devices များအားလုံးအကြီးအလေ့အကျင့်လက်စွဲပါ။ အချက်အလက်များပြန်လည်ဆန်းစစ်ခြင်းမသိမမြင်နိုင်သောအောင်သို့ရာတွင် upkeep လုပ်ဖို့အကြာတွင်လာသောသူမဆိုတစ်ဦးချင်းစီအပြောင်းအလဲကိုနှင့်ခဲကသငျသညျဖြစ်ပါတယ်ဆြေးြေိံးသူမယန္တရားကိုစဉ်းစားမည်မဟုတ်။

တိုးချဲ့မှုသည်၎င်း၏တည်ငြိမ် interfaces တိုးပွားဖို့လျှောက်လွှာခွင့်သည်ဟုချိတ်မဟာဗျူဟာအသုံးချဖို့နောက်ထပ်ဦးစားပေးရှုထောငျ့ဖြစ်ပါတယ်။ ချိတ်မဟာဗျူဟာတိကျတဲ့ setting ကိုများအတွက်လျှောက်လွှာများ instantiation ကနေပေါ်ထွက်လာနိုင်မတည်ငြိမ် interfaces နှင့်တစ်ဦးအမျိုးမျိုးအာကာသ၏အကငျြ့ decouple ။

ဆန်းသစ်နည်းပညာ Solutions Gurgaon, အိန္ဒိယအတွက်ဒေလီ nCr အတွက် Software Development သင်တန်းပေးထားပါတယ်။

ဒီဇိုင်းပုံစံများနှင့်အမျှချိတ်

ဒါဟာမြောက်မြားစွာ (အားလုံး) အကြမ်းဖျင်းဒီဇိုင်းများချိတ်ဘို့ semantic နမူနာယူသတိပြုပါရန်စိတ်ဝင်စားဖွယ်ဖြစ်ပါတယ်။ သူတို့ကပြဿနာဒေသများ၏ Sub-စနစ်များကို execute ဖို့ဘယ်လိုပြောဆို၏။ Abstract, စက်ရုံ, Builder, စစ်ဌာနချုပ်, စကားပြန်, Observer, ရှေ့ပြေးပုံစံ, ပြည်နယ်နှင့်မဟာဗျူဟာ: တချို့ကငျးကှာဖွံ့ဖြိုးတိုးတက်မှု၏စည်းမျဉ်းပေါ်မူတည်သည်။

ပေါင်းစည်းရေးနှင့် partition ကိုဖွံ့ဖြိုးတိုးတက်မှုနှစ်ခုစလုံးဥပမာအခြားသူများ: Template: Method ကိုနှင့်တံတား။

semantic သာမန် (ဥပမာအားဖြင့်အဘို့, စစ်ဌာနချုပ်အတွက်မဟာဗျူဟာ () execute ဟုခေါ်သည်) ကိုချိတ် technique ကိုနာမ၌ဆက်သွယ်နေသည်။

 

virtual Method ကိုစားပွဲတင် Hook

Software Development - တစ် Hook ကဘာလဲ - သင်သည်သင်၏ကုဒ်ထဲမှာချေါသောအခါ compiler တိကျတဲ့ကို virtual စွမ်းရည်များ၏လိပ်စာမသိ, ပွိုင့် 1Virtual နည်းစနစ်ငြိမ်မဟာဗျူဟာများအနေဖြင့်တစ်ဦးချွတ်စွပ်အရွယ်အစားလမ်းကြောင်းအတွင်းသို့သွင်းနေကြတယ်, ဒါပေမယ့်ကို virtual နည်းစနစ်ကိုပြောင်းလဲနိုင်ပါတယ်ကတည်းက။ အဆိုပါ compiler, အရှင်, runtime အတွက်စွမ်းရည်လိပ်စာများမှစုံစမ်းရေးတစ်လမ်းပေးသောတစ်ဦးရဲ့ Virtual Method ကိုဇယား (VMT) တည်ဆောက်ရမှာပါ။ တိုင်းတစ်ခုတည်းကို virtual မဟာဗျူဟာ VMT မှတဆင့် runtime မှာ activated နေကြသည်။ မေးခွန်းတစ်ခု၏ VMT သည်၎င်း၏ရှေ့အဘို့ရှိသမျှကိုကို virtual မဟာဗျူဟာများပါရှိသည်, ဒါ့အပြင်ရှိသူများကကြေညာ။ ထိုကွောငျ့, ကို virtual နည်းစနစ်သူတို့ speedier run ဆိုတဲ့အချက်ကိုကြားမှ, ဒြပ်စင်မဟာဗျူဟာထက်ပိုမှတ်ဉာဏ်အသုံးချ။

VMT အဆိုပါ interface ကိုစွမ်းရည်အဘို့မှတ်ဉာဏ်လိပ်စာများနှင့်အတူထောက်ပြပါဝင်သောစားပွဲတစ်ခုဖြစ်ပါသည်ကတည်းကအဘယ်သို့ပြုရပါမည်တရားဝင်ချိတ်အလုပ်၏လိပ်စာနှင့်အတူပထမဦးဆုံးမှတ်ဉာဏ်လိပ်စာ supplant ရန်ဖြစ်ပါသည်။ ဤအလိုင်းများတလျှောက်တွင်, အကိုခေါ် technique ကို overwrite လုပ်တဲ့လိမ့်မည်, နှင့်စွမ်းရည်သစ်မှာပါတဲ့အကငျြ့ကွပ်မျက်ခံရလိမ့်မည်။

 

Hooking API ကို

Software Development - တစ် Hook ကဘာလဲ - ပွိုင့် 2The Hook API ကိုလုပ်ထုံးလုပ်နည်းအမှန်တကယ်ပြုပြင်စနစ်၏ဒြပ်စင် reinvent ရန်သင့်အားခွင့်ပြုထားသည်။ ထိုကဲ့သို့သောစွဲချက်ကိုဖမ်းယူနိုင်စွမ်းနှင့်အတူ, သငျသညျအစပိုင်းတွင်ဖျော်ဖြေသွားမည်ဖြစ်ကြောင်းသောလှုပ်ရှားမှုပြောင်းလဲနေတဲ့နေဖြင့်၎င်းတို့၏ parameters တွေကိုပြောင်းလဲနိုင်ပါတယ်။

ဒါဟာ et cetera, တိကျတဲ့စံချိန်၏ဖျက်သိမ်းခြင်း piece အပြေးကနေ application တစ်ခုစောင့်ရှောက်ခြင်းနှင့်စက်ဝိုင်းတစ်ခု archive ကိုနှမြောဖို့ client ကိုကတိသစ္စာပြုရန်တောင်းဆိုဥပမာ, စိတ်ကူးဖြစ်ပါတယ်။

အမှန်စင်စစ်ဆုံးဖြတ်ချက်၏အကြီးမြတ်ဆုံးဖြတ်လုံခြုံရေးဥပမာ, antivirus ကိုနှင့် antispyware ၏ဒေသတွင်း၌တည်ရှိ၏။ အဘယ်မှာရှိချိတ် API ကိုကျွန်တော်တို့ရဲ့သာမန်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်အခွအေနရှိပါတယ်ကြောင့် may သကဲ့သို့, အဓိကလမ်းထွက်ဖြစ်ခြင်းဖြစ်နိုင်သည်ကိုရလိမ့်မည်။

programming interface ချိတ်, ကျွန်တော်တို့ရဲ့တိကျတဲ့အခြေအနေ၌, OS ကိုကနေ, ဒါမှမဟုတ်တစ်ခုခု DLL ကိုတစ်ဦးထံမှ API ကိုရတဲ့နှင့်တစ်နေရာတခြားရန်၎င်း၏ပုံမှန်ကွပ်မျက်ကိုပြောင်းလဲလုံးကိုပိုပြီးတိတိကျကျနောက်ထပ်စွမ်းရည်မှဆိုလို။ နှစ်ခုချဉ်းကပ်မှုအခြေခံကျကျရှိပါတယ်:

စားနှင့် IAT: အားလုံး EXE / DLL ကိုတင်သွင်းခြင်းနှင့်ယာဉ်စီးခစားပွဲမှ API ကိုပါဝင်သည်။ ဤရွေ့ကားစားပွဲ API ကို Entry Point ကိုပြသသောထောက်ပြဆံ့။ သူတို့ကိုကျွန်တော်တို့ရဲ့ပြန်ခေါ်ညွှန်ပြအောင်, ဤထောက်ပြပြောင်းလဲနေတဲ့အသုံးပြုပုံကျွန်တော်တစ်ဦးချိတ်ရှိသည်။ ဒီ EXE / DLL API ကိုဖွင့်တင်သွင်းမပါဘူးဆိုရင်ဒါဟာ may အဖြစ်, ဤမဟာဗျူဟာကိုအလုပ်လုပ်မည်မဟုတ်ကြောင်း Be;

ရိုးရှင်းတဲ့ Code ကို overwrite လုပ်တဲ့: အမျှကြိုတင်က API ကိုကုဒ်ရဲ့ start ဆီသို့ငါတို့ပြန်ခေါ်ရန်တောင်းဆိုမှုကိုထည့်သွင်းဖို့စိတ်ကူးခဲ့ကြသောဖြစ်ရပ်အတွက်ဟုကြှနျုပျတို့သညျ "ကချိတ်" နိုင်, ကျွန်တော်တို့ရဲ့စွမ်းရည် API ကိုခေါ်တော်မူခဲ့သည်သမျှအချက်မှာ run အောင်။ ကျွန်တော်တို့ရဲ့ကုဒ်ကိုင်တွယ်ပြီးနောက်ကျနော်တို့ပထမဦးဆုံး API ကိုဖုန်းဆက်ဖို့လိုအပ်, ငါတို့ပြန်ခေါ်အပေါ်ပြန်လဲကျမယ်ဆိုရင်နှင့် stack ရေလွှမ်းမိုးဖန်တီးလိမ့်မည်ဟု: က may အဖြစ်, အဲဒီမှာပြဿနာတစ်ခုဖြစ်တယ်ဆိုတာဖြစ်လိမ့်မည်။ တစ်ခုမှာအစီအစဉ်ကြောင့်ကွပ်မျက်ခံရခြင်းဖြစ်သည်တစ်ကြိမ်ကပြန်လည်ကြိုးစားနေ, API ခေါ်ပါရန်စွမ်းရည်ရှိသည်ဖို့ချိတ် fix ဖြစ်ပါတယ်။ က may ကဲ့သို့ဖြစ်ရ, ဒီစင်တာမြေပြင်ကြားတွင်အနည်းငယ် API ခေါ်ဆိုမှုကိုဖန်ဆင်းနိုင်ပါတယ်နှင့်ကျွန်ုပ်တို့၏ပြန်ခေါ် execute မဟုတ်ဘူး;

inline Hook ကျွန်တော်တစ်ဦးနိုင်စွမ်း၏ကျောင်းအုပ်ကြီးလမ်းညွှန်ချက်များအရအရာမှာအမှတ်ဖြစ်တယ်, ကျွန်တော်တစ်ဦးဤနေရာသို့သွားရန်, Push ကိုသို့မဟုတ်ကျနော်တို့ရဲ့စွမ်းရည်များအတွက်ခေါ်ဆိုမှုများအတွက်ကုန်သွယ်မှု။

သတ်မှတ်ထားသောဖတ်ပြီးသား: Windows ကိုလုပ်ဆောင်နေသည့်စနစ်ဒါ့အပြင် API ကို hooking အထောက်အပံ့ပေးတယ်။ ကျနော်တို့ကိုဘယ်လို Windows ကို API ကိုချိတ်လုပ်ဆောင်ချက်များကိုသိသင့်?

 

အခါသမယ Hook

Software Development - တစ် Hook ကဘာလဲ - ပွိုင့် 3As ချိတ်နည်းစနစ်တစ်ဦးအထူးသဖြင့် setting ကိုများအတွက်လျှောက်လွှာများ instantiation ကနေပေါ်ထွက်လာနိုင်မတည်ငြိမ် interfaces နှင့်တစ်ဦးအမျိုးမျိုးအာကာသ၏အကငျြ့ decouple ထိန်းချုပ်မှုတစ်ခုပယ်ဖျက်ခံရတွေ့ကြုံတတ်၏။ အခါသမယကိုင်တွယ်ရန်ပြင်ဆင်နေခြေလှမ်းများပြုပြင်မွမ်းမံ Objects ။ တစ်ဦးအခါသမယတွင်ဖြစ်ပျက်သည့်အခါတစ်နေ့တာရဲ့အဆုံးမှာသည်, handler ကိုအထူးအခါသမယပြင်ဆင်နေလှုပ်ရှားမှုများ execute ကြောင်း Pre-စာရင်းသွင်းတ္ထုအပေါ်ချိတ်မဟာဗျူဟာ conjuring တုံ့ပြန်။ အခါသမယ၏ရောဂါဖြစ်ပွားမှု: စာပေးစာယူဆိပ်ကမ်းများအနေဖြင့်လေယာဉ်ဆင်းသက်ဝင်းဒိုးကိုမက်ဆေ့ခ်ျများ, အထုပ်။

 

IAT Hook အတွင်းပိုင်း

Software Development - တစ် Hook ကဘာလဲ - Windows တွင်ပွိုင့် 4Each ဖြစ်စဉ်ကိုတစ်ဦးချင်းစီလုပ်ထုံးလုပ်နည်းများ၏ DLLs အားဖြင့်အထဲကစေလွှတ်စွမ်းရည်မှထောက်ပြသိုလှောင်ထားတဲ့သွင်းကုန်လိပ်စာဇယား (IAT) လို့ခေါ်တဲ့စားပွဲတစ်ခုရှိပါတယ်။ ဤသည်စားပွဲပေါ်မှာပြေးအချိန်တွင် DLLs ၏ဒြပ်စင်များ၏လိပ်စာနှင့်အတူတဖြည်းဖြည်းလူနေထူထပ်သည်။

အထူးသဖြင့်စွမ်းရည်ကိုသုံးပြီးကျနော်တို့ကိုဖတ်ရှု-ရိုးရှင်းစွာဒီပြောင်းလဲမှုပြီးနောက်အဖြစ်ပြန်လည်ယင်းသည်စားပွဲတစ်ထုံးစံစွမ်းရည်၏လိပ်စာဖြင့်၎င်း၏လိပ်စာပြောင်းလဲပစ်ရန်စိတ်ကူးဖြစ်ခြင်း, အ IAT စားပွဲပေါ်မှာ writable စေနိုင်သည်။ လုပ်ထုံးလုပ်နည်းနိုင်စွမ်းကိုခေါ်ဖို့ကြိုးစားပါတယ်အခါအမှတ်မှာ၎င်း၏လိပ်စာ IAT table ထဲမှာဆည်းပူးသည်, တစ်ဦး pointer ကိုပြန်ရောက်နေသည်။ အဆိုပါ IAT စားပွဲပေါ်မှာပြောင်းထားသည်အတိုင်း, ထုံးစံစွမ်းရည်လုပ်ထုံးလုပ်နည်းသို့ထုံမွှန်းပထမဦးဆုံးစွမ်းရည်နှင့် Code များ set ကိုတက်ဆည်းပူးနေသည်ယူဆောင်သည်။

 

Netfilter Hook

Software Development - တစ် Hook ကဘာလဲ - ပွိုင့် 5Netfilter 2.4 ထက်ပိုမှတ်သားဖွယ်တစ်ဦး Linux ကိုအပိုင်းအစ subsystem သို့ဖြစ်ပါတယ်။ ဒါဟာအခြားသူတွေအကြားအစုအဝေးကိုခှဲထုတျ, NAT, Firewall ကို, redirection, တာဝန်ခံဖြစ်ပါတယ်။ Netfilter အတော်လေး extension တခုဖြစ်တယ်, နှင့်၎င်း၏စာရွက်စာတမ်းများကိုလက်စသတ်နေသည်။ ဒါဟာသူ့ရဲ့အသုံးချအလွန်ပြောင်းလွယ်ပြင်လွယ်ခြင်းနှင့်ယေဘုယျအားဖြင့်အုပ်စုအားဖြင့်လက်ခံရရှိအောင်, အ Kernel ကုဒ်ထဲမှာချိတ်အသုံးချဖို့များ၏ဖြစ်နိုင်ခြေကိုရွက်။ ဤရွေ့ကား Hook အနည်းငယ်စိတ်ကူးရလဒ်များထားခဲ့ပါနဲ့တိကျတဲ့အခါသမယများအတွက်အစပျိုးခြင်းအဖြစ်ဖြည့်နိုင်ပါတယ်။

 

နိဂုံး:

Software Development - တစ် Hook ကဘာလဲ - conclusionThe programming ကိုလုပျထုံးလုပျနညျး hooking သူတို့လုပျထုံးလုပျနညျးမြား၏စီးအတွက်တစ်ဦးထက်ပိုထင်ရှားတဲ့ရှုပ်ထွေးပွေလီလှပါဝင်သည်နှင့်ပထမဦးဆုံးပြောင်းလဲသွားကတည်းကထိရောက်တဲ့ဖြစ်ကြောင်းနှင့်ဆော့ဖ်ဝဲအင်ဂျင်နီယာများအဘို့စိတ်ကူးရလဒ်များတစ်အတိုင်းအတာအထိဖွင့်လှစ်, သို့သော်သူကတပ်လှန့်နှင့်အတူအသုံးပြုသွားမည်ခံရဖို့်၏ က hard ဆော့ဖ်ဝဲ၏ကျိုးကြောင်းဆင်ခြင်နားမလည်မှအောင် OS ကို, applications များသို့မဟုတ်အခြား software ကို segments များ၏အမူအကျင့်, ။ ထက်ကတခြား, ဒီဆောင်းပါးအတွက်ကြိုတင်သတ်မှတ်ထားသောအဖြစ်, ပါရာဒိုင်းမပြုဘဲ, ဤစနစ်များ၏အသုံးချဆော့ဖ်ဝဲတွေကို၏ကွပ်မျက် debase လိမ့်မည်။

တစ်ဦးစာပြန်ရန် Leave

GTranslate Please upgrade your plan for SSL support!
GTranslate Your license is inactive or expired, please subscribe again!