အမေ့ရဲ့ မလိမ္မာတဲ့သား

အမေနေ့အထိမ်းအမှတ် ရေးပါဆိုပြီး အကီနိုက Tag လုပ်လာမှ မေလရဲ့ ဒုတိယတနင်္ဂနွေဟာ အမေနေ့မှန်းသိရပါတယ် ဗမာပြည်မှာက ဦးသုခက အမေနေ့ဆိုပြီး ပြာသိုလပြည့်နေ့ကို စပြီးလုပ်ရာကနေ ပြာသိုလပြည့် အမေနေ့က လွန်ခဲ့တဲ့ ဆယ်စုနှစ်အနည်းငယ်ကစပြီး ဗမာပြည်မှာ အမေနေ့လုပ်လေ့ရှိပါတယ်။ ဒါ့ကြောင့် ပြာသိုလပြည့်ကိုပဲ စိတ်ကစွဲနေမိလို့ နိုင်ငံတစ်ကာကလုပ်တဲ့ အမေနေ့ကိုမသိဘူးဖြစ်နေတယ်။ တစ်ခြားနိုင်ငံတွေမှာလည်း လိုက်ကြည့်တော့ အမေနေ့ကို သတ်မှတ်ထားတာတွေ့ရတယ် ဒါပေမယ့် တစ်ချို့နိုင်ငံတွေမှာ ရက်မတူပါဘူး စုစည်းထားတဲ့ အမေနေ့တွေကို Wikipedia မှာကြည့်နိုင်ပါတယ်။

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

မိဘဆိုတာ ဗဟုဝုစ်ကိန်းဆိုပေမယ့် ကျွန်တော့်အတွက်တော့ ဧကဝုစ်ဖြစ်သွားခဲ့တာ ကြာခဲ့ပါပြီ။ အမေတစ်ယောက်တည်း အထီးကျန်အဖြစ်နဲ့ သံယောစဥ်တွယ်စရာ သားနဲ့သမီးနှစ်ယောက်ပဲ ကျန်ခဲ့ရတယ်။ ညီမလေးက အသက်ငယ်လွန်းလှတယ် သူအရွယ်ရောက်ချိန်မှာ ကျွန်တော့်မိသားစုဟာ အတော်လေး ပြည့်ပြည့်စုံစုံဖြစ်နေပါပြီ။ ငယ်ကတည်းက ချို့တဲ့ချိန် ပြည့်စုံချိန် ပျော်ရွှင်ချိန် ဝမ်းနည်းချိန် အတူတူဖြတ်ကျော်လာရတဲ့ မိသားစုထဲမှာ သားဖြစ်သူတစ်ယောက်ပဲ အမှတ်ရစရာ ကျန်ခဲ့သလို အမေခံစားခဲ့ရတယ်။ အဖေဆုံးသွားတော့ လူယုံတွေ ရန်သူဖြစ်သွားတယ် စီးပွားရေးဆုံးမှု့တွေ အများကြီးဖြစ်ခဲ့ရတယ် ညီမလေး မျက်နှာမငယ်ရအောင် စိတ်မဆင်းရဲရအောင် အမေအတတ်နိုင်ဆုံးကြိုးစားရင်း ရုန်းကန်ခဲ့ရတယ်။ ကျွန်တော်ကံကောင်းတယ် ပြောခဲ့ရမယ် အမေလိုအပ်ချိန်မှာ ဆိုးတူကောင်းဘက် နေပေးခွင့်ရခဲ့ပါတယ်။

သားနဲ့သမီးကို အဖေဖြစ်သူလို သူ့မျက်စေ့ရှေ့မှာ ဆုံးသွားမှာကို အမြဲစိုးရိမ်တဲ့ စိတ္တဇလိုဖြစ်နေခဲ့တယ်။ အဖေမရှိတော့ အိမ်အတွက် ကျွန်တော်အလုပ်လုပ်ပါတယ် ကျောင်းလည်းတက် အလုပ်လုပ်ရတဲ့ကျွန်တော့်ကို ကျန်းမာရေးချို့တဲ့မှာ စိုးရိမ်လွန်းပါတယ် အလုပ်ကညပိုင်း ကျောင်းပြန်ချိန်မှ လုပ်နိုင်တယ် မီးလာချိန်ဆိုရင် တစ်ညလုံးအလုပ်လုပ်ချင်လုပ်တယ် အမြဲတမ်း ညပိုင်း ၂ နာရီလောက်ထပြီး ကျွန်တော်အလုပ် လုပ်သလားအိပ်ယာကနေ ထပြီးလာကြည့်ပြီး အိပ်ခိုင်းတတ်တယ် နောက်ပိုင်း အိမ်ကတစ်ဘက် စီးပွားရေးအလုပ် အဆင်မပြေဖြစ်လာလို့ ကျွန်တော့်အလုပ်ကို ပိုလုပ်ရတယ် တစ်ညလုံးအလုပ်လုပ်ရတဲ့ ညတွေများလာတော့ အမေစိတ်ကောင်းဘူး ဒါပေမယ့် ကျွန်တော့်ကိုမပြောရှာဘူး ဒီလိုနဲ့ကျွန်တော် ပင်ပန်းပြီးတစ်ပါတ်လောက် ဖျားခဲ့တဲ့အချိန်မှာ မင်းရဲ့ကျန်းမာရေးနဲ့ ရင်းလာရမယ့် ငွေကိုမလိုချင်ဘူးဆိုပြီး ငိုပြီးတော့ကျွန်တော်နားမှ နေခဲ့တဲ့အချိန်တွေဟာ ကျွန်တော်အတွက် သတိအရမိဆုံး အချိန်တွေပါ။ အခုအလုပ်များလို့ စာတွေများလို့ ညမအိပ်နိုင်တဲ့ ညတွေများလာရင် အမေ့ကိုသတိရမိတယ်။ အဲဒါတွေသိရင် အမေငိုဦးမယ်ထင်တယ်။

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

အမေနေ့အတွက် ကျွန်တော်နဲ့ အကျိုးအကြောင်းတိုက်ဆိုင်နေတဲ့ သီချင်းလေးပဲ နားထောင်မိတော့တယ်ဗျာ။

ပျင်းလို့ဆော့တယ်

အရင်က Low-Level Programming ကိုအတော်လေး ဝါသနာပါလိုက်သေးတာ အခုခေတ်လို အင်တာနက်မရှိတော့ ဒေါင်းလုပ်လုပ်ပြီး အီးဘုတ်အုပ် ဖတ်လို့မရဘူးပေါ့ဗျာ။ သူငယ်ချင်းနှစ်ယောက် Assembly စာအုပ်တစ်အုပ်ကို မိတ္တူကူးပေးတဲ့ဆိုင်မှာ မှာပြီးကူးယူရတယ် 8086/8088, 80286, 80386 and 80486 Assembly Language Programming ကိုစပြီးဖတ်ဖြစ်ကြတယ် Processor အကြောင်းဖတ်လိုက် Instruction တွေဖတ်လိုက်နဲ့ အတော်လေး လုံးလည်လိုက်ခဲ့တယ်။ အတူတူဖတ်တဲ့ သူငယ်ချင်းကတော့ နောက်ပိုင်းသိပ်မဖတ်ဖြစ်တော့ဘူးပြောတယ် ကိုယ်ကတော့ဆက်ဖတ်ဖြစ်တယ် နောက်ပိုင်းစာသင်စားတော့ ဘယ်သူမှသင်မယ့်လူ မရှိတော့ Assembly ဆိုရင်ကိုယ်ပဲသင်ရတယ်။ စာသင်ရင် ကျောင်းသားတွေကို High-Level Language တစ်ခုနဲ့ရေးထားတဲ့ Program ကို Low-Level Language နဲ့ဘာသာပြန်ပြီးရေးခိုင်းတယ်။

အဆက်ပြတ်နေတာလည်း ကြာပါပြီ တစ်နေ့ကမှ Youtube မှာ Video တစ်ခုတွေ့လို့ကြည့်မိတယ် အစကတော့ Crack လုပ်တဲ့နမူနာလို့ ထင်နေမိတာပါ အဲဒါမျိုးတွေကလည်း Youtube မှာအတော်ပေါတယ် သူကတော့ Keygen ပါရေးပါတယ်။ ဘယ် Software အထောက်အကူမှမယူပဲ ကိုယ်တိုင်ပဲ Assembly ကိုဘာသာပြန်ပြီး ပြန်ရေးပါတယ်။ ဆော့ဝဲအားကိုးနဲ့ Click နှိပ်ပြနေရင် ကိုယ်ကလည်း အထင်မကြီးပါဘူး ဒါမျိုး ကိုယ်ပိုင်အစွမ်းအစနဲ့ လုပ်ထားတာမျိုးဆိုရင်တော့ အတော်လေးစိတ်ဝင်စားပါတယ်။ ကိုယ်လည်းတစ်ချိန်က SoftICE နဲ့သူခိုးအကြီးစား လုပ်ခဲ့ဖူးတော့ အားရင်အားသလို ဒါမျိုးတွေလည်း ဝါသနာပါပါတယ်။ Crack လုပ်တာ ခက်ခဲတယ်မဟုတ်ပါဘူး Assembly နည်းနည်းနားလည်ပြီး Debugger သုံးတတ်ရင် အဆင်ပြေပါတယ် စစ်ထားတဲ့နေရာ သင့်လျော်သလိုကျော်ချတဲ့ Code လေးဖြည့်လိုက်ရင် အဆင်ပြေပါတယ်။ ဒါပေမယ့် ရှုပ်ထွေးတဲ့ Key Generation တွေကို Reverse ပြန်လုပ်တာကတော့ လွယ်တဲ့အရာတော့ မဟုတ်ပါဘူး။

နမူနာစမ်းပြထားတဲ့ Key Generation ကအရမ်းတော့မရှုပ်ပါဘူး။ အဆက်ပြတ်နေတာလည်းကြာတော့ အပျင်းပြေဆော့ရင်း လုပ်ကြည့်မယ်ဆိုပြီး သူစမ်းပြတဲ့ mIRC ကို Reverse Engeneering လုပ်ကြည့်ပါတယ် ဖြစ်ချင်တော့ သူစမ်းပြတဲ့ Version နဲ့ကိုယ့်မှာရှိတဲ့ Version တူပုံမရဘူး ထွက်လာတဲ့ Code တွေမတူဘူး ဒီတော့စမ်းမိမှတော့ မထူးတော့ပါဘူး ကိုယ့်ဟာကိုယ်ပဲ အစအဆုံးလုပ်ကြည့်လိုက်ရတယ်။ မဆိုးဘူးပြောရမယ် အရင်လောက် အလေ့အကျင့်မရှိတော့ ဖတ်တာမမြန်တော့ဘူး ဒါပေမယ့် စိတ်နဲ့ဖတ်သွားရုံနဲ့ Code တွေကို စိတ်ထဲမှာ Execute လုပ်နိုင်နေသေးတယ် နောက်ပြီးတော့ သူသုံးတဲ့ Debugger ကလည်း တစ်ချိန်တုံးက အကျွမ်းတဝင်ရှိတဲ့ SoftICE မဟုတ်တော့ နည်းနည်းကြောင်တာ တစ်ခုပါပဲ။ နောက်ဆုံး သူ့ရဲ့ Algorithm ကိုရလိုက်ပါတယ် စိတ်ဝင်စားနေတာနဲ့ အိပ်ရေးနည်းနည်းပျက်သွားတယ်။ ဒါကတော့ ကလေးကစားတာ မဟုတ်လောက်ဘူး လူကြီးဖဲရိုက်တာ ခေါ်မယ်ထင်တယ်။ အောက်က Video လေးကြည့်ပြီး ဆော့ကြည့်ကြပါဦးလား။ သူ့အတိုင်း တစ်သွေမတိမ်းလုပ်လို့တော့ ရမယ်မဟုတ်ဘူး ကိုယ့်နည်းကိုယ့်ဟန်နဲ့ ပြောင်းရေးကောင်းရေးရမယ်။

[c]
int data[] =
{
0x0B, 0×06, 0×11, 0x0C, 0x0C, 0x0E, 0×05, 0x0C, 0×10, 0x0A, 0x0B, 0×06, 0x0E,
0x0E, 0×04, 0x0B, 0×06, 0x0E, 0x0E, 0×04, 0x0B, 0×09, 0x0C, 0x0B, 0x0A, 0×08,
0x0A, 0x0A, 0×10, 0×08, 0×04, 0×06, 0x0A, 0x0C, 0×10, 0×08, 0x0A, 0×04, 0×10
};

int calculate_hash(char *name, int type)
{
int hash = 0;
char *name_temp = name + 3;
int i = 0;
while (*name_temp)
{
if(type==1)
hash+=(int) *name_temp++ * data[i++];
else if(type==2)
hash+=(int) *name_temp * (int) *(name_temp++ -1) * data[i++];
if (i>0×26)
i =0;
}
return hash;
}[/c]