.NET assemblies decompiler

မနေ့က သူငယ်ချင်းတစ်ယောက်က သူ့ရဲ့ ASP.NET project တစ်ခုကို နည်းနည်း modify လုပ်ပေးပါဆိုပြီး source code ပေးလိုက်တယ်။ ကိုယ်ကလည်း ASP.NET ကို အတတ်ကြီးတော့ မဟုတ်ပေမယ့် လေးငါးလလောက်တော့ project တစ်ခုအောက်မှာ လုပ်ဖူးတယ်။ အဲဒါနဲ့ ယူလာပြီး ကိုယ့်PC မှာ database တွေဘာတွေ create လုပ်ပြီးတော့ IIS ကနေ run လိုက်တယ်။ အားလုံး ကောင်းကောင်း အလုပ်လုပ်တယ်။ ဒါပေမယ့် Modify လုပ်ဖို့ code directory ကို ကြည့်လိုက်တော့ .aspx file တွေ ချည်းဘဲ။ code-behind file တွေ တစ်ခုမှ မတွေ့ဘူး။

စစချင်းတော့ တော်တော် စဉ်းစားရ ကျပ်သွားတယ်။ code-behind file တွေ ဘယ်ပျောက်သွားတာလဲလို့။ file ကူးလာတုန်းက သူ့ကွန်ပျူတာရဲ့ Inetpub/wwwroot အောက်ကနေ folder တစ်ခုလုံး ကူးလာတာဘဲ။ ပြီးတော့ ကိုယ့်PC ထဲရောက်တော့ အလုပ်မလုပ်ဘူးဆိုရင်လည်း ဟုတ်သေးတယ်။ အခုဟာက page တွေ အားလုံး အလုပ်လုပ်နေတယ်။ ဒါပေမယ့် code-behind file ရှာမရဘူး။ နေ့တစ်ဝက်လောက် google လုပ် ဟို forum တက်မေး ဒီ forum တက်မေးနဲ့မှ နည်းနည်း ရှင်းသွားတယ်။ မူရင်း developer က သူ့ code-behind တွေ အကုန်လုံးကို dll အနေနဲ့ compile လုပ်ထားတာကိုး။ ဒါကြောင့် edit လုပ်လို့ မရတာ။ development အပိုင်းမှာဘဲ လုပ်ဖူးပြီး deployment အပို်င်းမှာ လုံးဝ experience မရှိတော့ ဘယ်သိမလဲနော်။ ဟူး…

အဖြေလိုက်ရှာရင်းနဲ့ Reflector ဆိုတဲ့ ASP.NET project ကို decompile လုပ်လို့ရတဲ့ tool တော့ ရှာတွေ့လိုက်တယ်။ decompile လုပ်ပြီး original business logic တွေကိုတော့ သွားကြည့်လို့ ရသွားတယ်။ သူငယ်ချင်းကိုတော့ ဘာအကူအညီမှ မပေးလိုက်နိုင်ပေမယ့် Reflector tool ကို စမ်းသုံးကြည့်ဖြစ်သွားတယ်။ Dissembler အပြင် နောက်ထပ် စိတ်ဝင်စားဖို့ ကောင်းတဲ့ feature တစ်ခုက Analyzer ဘဲ။ class တွေ အားလုံးကို depends on, exposed by, instantiated by, assigned by ဆိုပြီး ကြည့်လို့ရတယ်။ ကိုယ့်ရဲ့ code တွေကို ပြန်ပြီး analyze လုပ်ချင်တဲ့ အခါမှာ တော်တော် အသုံးမှာ။ အသေအချာတော့ မသုံးကြည့်ရသေးဘူး။

.NET သမားတွေအတွက် တော်တော် အသုံးဝင်တဲ့ tool တစ်ခု လို့တော့ review တွေမှာ ရေးထားကြတယ်။ နောက်လိုအပ်ရင် မမေ့သွားအောင် blog မှာ မှတ်ထားလိုက်မယ်။

download - http://www.aisto.com/roeder/dotnet/
blog - http://www.denisbauer.com/weblog/


Once upon a Saturday (၂)

အားလုံး ကစားမက်နေတာနဲ့ ဂိမ်းပြီသွားမှဘဲ နေ့လည်စာ လွတ်သွားတာကို သတိရကြတယ်။ အဲဒီအချိန်မှာ ဆာလောင်ခြင်း ကနေ ငတ်မွတ်ခြင်း stage ကို ရောက်နေကြပြီ။ သူငယ်ချင်းတစ်ယောက်က KL က အကောင်းဆုံးဆိုင် ခေါ်သွားမယ်ဆိုတာနဲ့ လိုက်သွားတာ။ Cyberjaya အထိ ရောက်သွားတယ်။ အာရပ်အစားအသောက်တွေ ရောင်းတဲ့ဆိုင်။ ခေါ်သွားတဲ့တစ်ယောက်ကတော့ ဝေးဝေးသွားရကျိုး နပ်စေရမယ်ဆိုပြီးတော့ကို အာမခံထားတာ။ ဆိုင်အပြင်အဆင်ကတော့ ရိုးရိုးလေးပါဘဲ။ အစားအသောက်ကတော့ တကယ်ကောင်းတယ်။ lamb fan တွေဆို အဲဒီဆိုင်မှာ သွားစားသင့်တယ်။ ဆိုင်နာမည်တော့ မေ့နေတယ်။

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

အစားအသောက်ငမ်းနေတာနဲ့ ဓါတ်ပုံလေးဘာလေး ရိုက်ခဲ့ဖို့ မေ့သွားတယ်။ side dish ထူးထူးဆန်းဆန်းလေးတွေပါတယ်။ (ကျမအတွက် ထူးဆန်းတာ။) ဘာ “ပဲ” တစ်ခုကို ကြိတ်ပြီး ရလာတဲ့ paste ဆိုလား။ စားလို့ တော်တော်ကောင်းတယ်။ ပြီးတော့ ထမင်းကို ဘာအရွက်တစ်ခုထဲလဲမသိဘူး ထည့်လိပ်ထားတာ။ အဲဒါတော့ သိပ်မကြိုက်ဘူး။ ခရမ်းသီးကို paste လိုမျိုး လုပ်ထားတာတော့ စားလို့တော်တော်ကောင်းတယ်။ ပြီးတော့ ထုံးစံအတိုင်း Arab tea ဆိုပြီးသောက်ကြတယ်။ လက်ဖက်ရည် (အဖန်ရည်) ထဲမှာ သကြားနဲ့ ပူစီနံအရွက်ထည့်ပြီး သောက်ကြတာ။ သူတို့တော့ ဘာကို ကြိုက်သလဲမသိ။ ကျမတော့ ပူစီနံရဲ့ အနံ့ကို ခံစားလို့ကို မရဘူး။ Non-alcoholic beer ဆိုပြီးတော့လည်း ရောင်းသေးတယ်။ စပ်စုချင်တာနဲ့ သူများနားကနေ နည်းနည်းတောင်းမြည်းကြည့်တာ ချဉ်စုပ်စုပ်နဲ့ ဘာအရသာကြီးမှန်းကို မသိဘူး။

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

Once upon a Saturday ပြီးတော့ once upon a Sunday မှာ ဘာဖြစ်သွားသလဲဆိုတော့ စနေနေ့မှာ သောင်းကျန်းထားတဲ့ အဝတ်အစားတွေကို လက်ပြုတ်မတတ် လျှော်လိုက်ရတာပေါ့။


101th day of 2008

April 10, the 101th day of 2008, in fact the 100th day in a year, if 2008 hadn’t been a leap year is … my 0101 0000 0101 0001 0011 0010 0011 0011 years old birthday! (seems i got so obsessed with numbers as I grew older.) The above pokemon is birthday present for me from .... myself!! :-D


Once upon a Saturday (၁)

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

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

အဲဒီနေ့က Rimba Harmonis မှာ သွားကစားတာ။ Gombak နဲ့ သိပ်မဝေးဘူး။ KL မှာတော့ paintball field တွေ လေးငါးခု ရှိတယ်လို့တော့ ပြောတာဘဲ။ အရင်က မြေပြန့်ကွင်းပြင်ပေါ်မှာ ကစားကြတာဘဲ တွေ့ဖူးတာ။ အခု ဒီတစ်ခေါက် သူငယ်ချင်း မရွှေချောက ဘယ်ခေါ်သွားသလဲဆိုတော့ ပိုပြီး challenging ဖြစ်အောင်ဆိုပြီး တောလိုမျိုးနေရာမှာ setting လုပ်ထားတဲ့ paintball field ထဲ ခေါ်သွားတယ်။ အောက်က ပုံကိုသာ ရှုပါလော့။ ကွင်းကို မြင်လိုက်တာနဲ့ ပြန်ပြေးရင် ကောင်းမလားလို့ စဉ်းစားမိသေးတယ်။



နောက်တော့လည်း ရောက်မှတော့ ကစားလိုက်ပါမယ်ဆိုပြီး စိတ်ကို ဒုံးဒုံးချပြီး ဝင်ပါဖြစ်သွားတာ။ သွားတာ အားလုံးပေါင်း ရှစ်ယောက်ဆိုတော့ လေးယောက်တစ်ဖွဲ့။ ပွဲမစခင် ကွင်းတာဝန်ခံက rules တွေကို ရှင်းပြတယ်။ သေနတ်ကို ဘယ်လို ကိုင်ရမယ်၊ မောင်းက ဘယ်လိုတင်တယ်၊ ဘာညာဘာညာပေါ့။ safety အတွက်ကတော့ face mask ကို မချွတ်နဲ့၊ တစ်ခြားနေရာထိရင် ဘာမှ မဖြစ်နိုင်ပေမယ့် ဦးခေါင်းတစ်ဝိုက်ကတော့ အန္တရာယ်ရှိတယ်.. ရန်သူက ကိုယ်နဲ့ တစ်မီတာဝန်းကျင်လောက်ဘဲ ကွာရင် မပစ်နဲ့.. surrender သာ လုပ်ခိုင်းလိုက်တဲ့၊ မဟုတ်ရင် အဲဒီလောက် အကွာအဝေးမှာ ပစ်ထည့်လိုက်ရင်တော့ တော်တော် အီစလံ ဝေသွားမှာ သေချာတယ်။ လေသေနတ်အားကလည်း တော်တော် ပြင်းတာကိုး။ သူပြောတာတော့ CO2 gas ထည့်ထားတယ် ဆိုလား။ သေချာတော့ မမှတ်မိတော့ဘူး။ ကိုယ့်ကို ထိရင် သေတယ်ပေါ့။ ဒါပေမယ့် တစ်ကယ် ပြိုင်ပွဲ လုပ်နေတာ မဟုတ်တဲ့အတွက် ကျည်ဆံထိသွားလို့ရှိရင် ထွက်စရာ မလိုဘဲ ကိုယ့်အိမ်ကို ပြန်သွားပြီး အသက်ကို ပြန်ပြီး recharge လုပ်လို့ရတယ်။ ပြီးရင် အရှေ့တက်ပြီး ဆက်ပစ်ပေါ့။ ရန်သူဘက်အခြမ်းကို ရောက်လို့ သူတို့ အလံကို ရပြီဆိုရင် နိုင်တာပေါ့။

package က ကျည်ဆံ ၁၀၀ဝ ပါတော့ နှစ်ပွဲကစားလိုက်ရတယ်။ ကွင်းက တောင်စောင်းကြီးလို ဖြစ်နေတာ။ ပထမ တစ်ပွဲမှာ အောက်ဘက်က အခြမ်းမှာ ကျတယ်။ အစက ကြောက်နေတော့ ကိုယ့်ရဲ့ အိမ်ထဲကနေ မထွက်ရဲဘူး ဖြစ်နေတယ်။ အခြားလူတွေတော့ တက်သွားကြပြီ။ သူများ ပစ်နေတာတွေကြည့်ရင်းနဲ့မှ နည်းနည်း feel ဝင်သွားတယ်။ ဒါနဲ့ ဘာဖြစ်ဖြစ်ဆိုပြီး ရှေ့တက်ပြီး ချတာဘဲ။ ကျည်ဆံတွေကို မနည်း ရှောင်ပြီး ရန်သူဘက်က တစ်ယောက်ကိုတော့ သတ်လိုက်နိုင်တယ်။ ဒီလိုနဲ့ဘဲ ပထမတစ်ပွဲမှာတော့ ကိုယ့်အဖွဲ့က အလံရလိုက်ပြီး နိုင်သွားတယ်။ ကျည်ဆံ တစ်ချက်မှ မထိဘဲ ပြီးသွားတာပေါ့။ ဘယ်ထိမလဲ၊ နေရာကမှ မရွေ့တာ။ :-D ပထမ တစ်ပွဲပြီးမှဘဲ နည်းနည်း အရှိန်ရသွားတယ်။ ဒုတိယ တစ်ပွဲကြတော့ အပေါ်ဘက်ခြမ်းကျတယ်။ အောက်မှာနေတုန်းက သိပ်ကြောက်ဖို့ မကောင်းဘူး။ အပေါ်ရောက်တော့ တော်တော် ကြောက်ဖို့ကောင်းတယ်။ ဒါကြောင့် ရှေ့မတက်ရဲဘူးလို့ (အမှန်က မဆင်းရဲတာလို့) ပြောတော့ သူတို့က ယုံယုံ ကြည်ကြည်နဲ့ sniper လုပ်ဖို့ ခန့်အပ်လိုက်တယ်။ ကင်းစောင့်ပေါ့။ လွယ်မယ်လို့ ထင်ထားတာ ရောက်တာနဲ့ တက်တက်စင်အောင် လွဲတာဘဲ။

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

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

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

Once upon a Saturday ပထမပို်င်း ဤတွင် ပြီးဧ။်။ နောက်နေ့မှ ဒုတိယပိုင်းကို ဆက်တော့မယ်။