Calm Hill My Random Thoughts

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

အရင်က 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, 0x06, 0x11, 0x0C, 0x0C, 0x0E, 0x05, 0x0C, 0x10, 0x0A, 0x0B, 0x06, 0x0E, 0x0E, 0x04, 0x0B, 0x06, 0x0E, 0x0E, 0x04, 0x0B, 0x09, 0x0C, 0x0B, 0x0A, 0x08, 0x0A, 0x0A, 0x10, 0x08, 0x04, 0x06, 0x0A, 0x0C, 0x10, 0x08, 0x0A, 0x04, 0x10 };

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>0x26) i =0; } return hash; }[/c]