ထည့်သွင်းထားသော ပရိုဂရမ်များ¶
Windows က သိမ်းဆည်းထားသည့်အရာများ¶
Windows နှင့် installer များသည် ထည့်သွင်းထားသော software များကို registry စာရင်းအများအပြားတွင် မှတ်တမ်းတင်သည်။ စာရင်းတစ်ခုစီတွင် ပရိုဂရမ်၊ product၊ distribution သို့မဟုတ် package တစ်ခုလျှင် key တစ်ခုစီရှိပြီး Juntei က key တစ်ခုလျှင် record တစ်ခု ထုတ်ပေးသည်။
| Source | Hive နှင့် key | ပါဝင်သည့်အရာ |
|---|---|---|
uninstall |
SOFTWARE နှင့် NTUSER.DAT …\CurrentVersion\Uninstall\* နှင့် SOFTWARE\Wow6432Node\… |
Settings နှင့် Programs and Features တွင် ပြသသည့်အရာများ- အမည်၊ version၊ publisher၊ ထည့်သွင်းသည့်ရက်စွဲ၊ ဖိုင်တွဲများ၊ uninstall ညွှန်ကြားချက်များ၊ အရွယ်အစားနှင့် ဝှက်ထားခြင်း ရှိ/မရှိ |
msi_product |
SOFTWARE\Classes\Installer\Products\*၊ NTUSER.DAT Software\Microsoft\Installer\Products\* |
Windows Installer product များ- product အမည်နှင့် version၊ package ၏ ဖိုင်အမည်နှင့် ၎င်းကို ထည့်သွင်းခဲ့သည့် ဖိုင်တွဲ |
app_path |
SOFTWARE နှင့် NTUSER.DAT …\CurrentVersion\App Paths\* |
Windows က အမည်ဖြင့် စတင်ဖွင့်ပေးသော ပရိုဂရမ်များ (Win+R, start tool)- ပရိုဂရမ်၏ path နှင့် ၎င်း၏ ဖိုင်တွဲ |
wsl |
NTUSER.DAT …\CurrentVersion\Lxss\{GUID} |
Windows Subsystem for Linux distribution များ- အမည်၊ ၎င်း၏ ဖိုင်များ သို့မဟုတ် disk ရှိရာနေရာ၊ WSL 1 သို့မဟုတ် 2 |
package |
SOFTWARE …\Appx\AppxAllUserStore |
Package ပြုလုပ်ထားသော (Store) app များ- အသုံးပြုသူအားလုံးအတွက် provision လုပ်ထားသည့်အရာများ၊ Windows ၏ ကိုယ်ပိုင် app များ၊ staged၊ deprovisioned နှင့် အသုံးပြုသူတစ်ဦးချင်းစီ၏ app များ |
အကောင်းဆုံး ကောက်ချက်: ဤပရိုဂရမ်၊ product သို့မဟုတ် package ကို စနစ်ပေါ်တွင် အသုံးပြုသူအားလုံးအတွက် သို့မဟုတ် ဤအသုံးပြုသူအတွက် ထည့်သွင်းခဲ့သည် (သို့မဟုတ် register လုပ်ခဲ့သည်)။ ထည့်သွင်းသည့်ရက်စွဲမှာ installer က ရေးသားခဲ့သည့်အရာဖြစ်ပြီး key ၏ နောက်ဆုံးရေးသားချိန်မှာ entry နောက်ဆုံးပြောင်းလဲခဲ့သည့်အချိန် ဖြစ်သည်။
တည်နေရာ¶
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows\CurrentVersion\Uninstall\<name or {ProductCode}>
Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\<…> 32-bit programs
Classes\Installer\Products\<packed product code>[\SourceList]
Microsoft\Windows\CurrentVersion\App Paths\<program.exe>
Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\{Applications,InboxApplications,Staged,Deprovisioned,<SID>,EndOfLife\<SID>}\<package>
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows\CurrentVersion\Uninstall\<…>
Software\Microsoft\Installer\Products\<packed product code>
Software\Microsoft\Windows\CurrentVersion\App Paths\<program.exe>
Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}
SOFTWARE၊ NTUSER.DAT အားလုံးနှင့် ၎င်းတို့၏ transaction log များကို စုဆောင်းပါ။ SYSTEM က host ၏ အမည်ကို
ဖော်ပြပြီး SOFTWARE ၏ ProfileList က အသုံးပြုသူတစ်ဦးချင်းစီ၏ SID ကို ပေးသည်။
စိစစ်သူများ သတိပြုရန်¶
- ထည့်သွင်းသည့်ရက်စွဲနှင့် key အချိန်။
InstallDateသည် installer က ဒေသစံတော်ချိန်ဖြင့် ရေးသားထားသော ရက်စွဲ (အချိန်မပါ) ဖြစ်သည်။ အချို့ installer များက ၎င်းကို မရေးသားဘဲ အချို့က အခြားပုံစံဖြင့် ရေးသားသည် (InstallDateRawတွင် ရေးသားထားသည့်အတိုင်း ထိန်းသိမ်းထားသည်)။ Update တစ်ခုက ရက်စွဲကို မပြောင်းလဲဘဲ entry ကို ပြန်ရေးနိုင်သလို ပရိုဂရမ် များများစားစား မပြောင်းလဲဘဲ ရက်စွဲကို ပြောင်းလဲနိုင်သည်-InstallDateကိုKeyLastWrittenUTCနှင့် နှိုင်းယှဉ်ပါ။ - Uninstall လုပ်ထားသော software။ သန့်ရှင်းစွာ ဖယ်ရှားခဲ့သော ပရိုဂရမ်သည် ၎င်း၏ key များကို ဆုံးရှုံးသည်။ ဖျက်ထားသော
Uninstallkey များအတွက်parse-registry read --recover-deletedကို အသုံးပြုပြီး ကျန်ရစ်ခဲ့သော သဲလွန်စများအတွက် Amcache၊ Prefetch နှင့်$MFTကို အသုံးပြုပါ။ - အသုံးပြုသူအလိုက် register လုပ်ခြင်းများ။
NTUSER.DATentry များသည် profile တစ်ခုအတွက် register လုပ်ထားသော software ကို ဖော်ထုတ်ပေးသည်။ ထို scope က installer ကို မည်သူ run ခဲ့သည် သို့မဟုတ် administrator အခွင့်အရေး အသုံးပြုခဲ့ခြင်း ရှိ/မရှိကို သက်သေမပြပါ။ - ဝှက်ထားသော entry များ။
SystemComponentက entry ကို Programs and Features မှ ဝှက်ထားသည်။DisplayNameမပါသော entry များ (update များ၊ component များ) ကိုလည်း မပြသပါ။ ၎င်းတို့အားလုံးကို အစီရင်ခံသည်။ - Product code များ။ GUID ပုံစံရှိသော
Uninstallkey ကိုProductCodeမှတစ်ဆင့် pack လုပ်ထားသောmsi_productkey နှင့် တိုက်ဆိုင်နိုင်သည်။ GUID ပုံစံအမည် တစ်ခုတည်းက Windows Installer က entry ကို ဖန်တီးခဲ့ကြောင်း သက်သေမပြပါ။ - App Paths။ ၎င်းတို့သည် ပရိုဂရမ်များကို ရှာဖွေရန် အသုံးပြုသော registration များဖြစ်ပြီး လုပ်ဆောင်မှု (execution)
မှတ်တမ်းများ မဟုတ်ပါ။
Pathvalue တွင် ရှာဖွေရေး directory အများအပြား ပါဝင်နိုင်ပြီး ထည့်သွင်းထားသည့် directory ဖြစ်ရန် မလိုပါ။ - Publisher။ ၎င်းသည် installer က ပေးထားသော registry metadata ဖြစ်ပြီး အတည်ပြုထားသော signature အချက်အလက် မဟုတ်ပါ။
- Architecture။
Wow6432Nodeတွင် 64-bit Windows ပေါ်ရှိ 32-bit ပရိုဂရမ်များ ပါဝင်သည် (Architecturex86,Wow64True)။ အခြား entry များသည် စနစ်၏ ကိုယ်ပိုင် architecture ဖြစ်သည် (ဗလာ)။ Package ၏ architecture မှာ ၎င်း၏ ကိုယ်ပိုင်ဖြစ်သည် (x64,neutral, …)။ - WSL။
Versionသည် distribution ၏Flagsမှ WSL version ဖြစ်သည် (0x8: WSL 2 ၏ virtual machine တွင် run သည်)။ Distribution ၏ ကိုယ်ပိုင်Versionvalue (Detailsတွင်) မှာ ၎င်း၏ ဖိုင်စနစ် version ဖြစ်ပြီး WSL 1 distribution များတွင်လည်း 2 ဖြစ်သည်။BasePathတွင် ၎င်း၏ext4.vhdx(WSL 2) သို့မဟုတ်rootfs(WSL 1) ရှိသည်- အတွင်းကို ကြည့်ရန် ၎င်းကို စုဆောင်းပါ။ - Package များ။
<SID>စာရင်းများသည် အသုံးပြုသူတစ်ဦးချင်းစီအတွက် register လုပ်ထားသော package များဖြစ်ပြီး အများစုမှာ Windows ၏ ကိုယ်ပိုင်ဖြစ်သည်။Deprovisionedpackage များကို အသုံးပြုသူအသစ်များအတွက် ဖယ်ရှားခဲ့ပြီးEndOfLife\<SID>package များကို ထိုအသုံးပြုသူအတွက် ဖယ်ရှားခဲ့သည်။ - ပျက်စီးနေသော value များ။ ပုံစံမမှန်သော နံပါတ်များ၊ မှားယွင်းသော value အမျိုးအစားများနှင့် မမှန်ကန်သော UTF-16
တို့ကို
Problemsတွင် အစီရင်ခံပြီးDataRawတွင် ထိန်းသိမ်းထားသည်။ Byte သုည ရှိသော value တစ်ခု ရှိနေပါက ဗလာ hex string လည်း ပါဝင်သည်။ Optional ကိန်းဂဏန်း field တွင် သန့်ရှင်းသော ဗလာ string ကို မရှိဟု သတ်မှတ်သည်။ Package version တွင် ဒဿမ အစိတ်အပိုင်း လေးခု ပါဝင်ရမည်ဖြစ်ပြီး တစ်ခုစီသည် unsigned 16-bit အတိုင်းအတာအတွင်း ရှိရမည်။-tက record များကို stdout သို့ stream လုပ်သည့်အခါ hive အဆင့် သတိပေးချက်များသည် stderr တွင် ကျန်ရှိသည်။
Juntei ဖြင့် ခွဲခြမ်းစိတ်ဖြာခြင်း¶
Usage: juntei parse-registry installed-programs <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SOFTWARE and NTUSER.DAT hives
-f, --file <FILE> Parse one SOFTWARE or NTUSER.DAT hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry installed-programs -d evidence/ -o installed.csv
juntei parse-registry installed-programs -d evidence/ -t jsonl \
| jq 'select(.Scope == "user" and .Source != "package")'
အနှစ်ချုပ်တွင် နောက်ဆုံးထည့်သွင်းခဲ့သော ပရိုဂရမ်များ (InstallDate အလိုက်)၊ အသုံးပြုသူများ ကိုယ်တိုင်အတွက်
ထည့်သွင်းခဲ့သည့်အရာများနှင့် WSL distribution များကို ဖော်ပြသည်။
ထုတ်ယူမှု field များ¶
| Field | အဓိပ္ပာယ်ဖော်ပုံ |
|---|---|
Host, SourcePath, HiveType |
Host၊ hive ဖိုင်နှင့် SOFTWARE သို့မဟုတ် NTUSER.DAT။ |
User, UserSID |
အသုံးပြုသူ hive ၏ အသုံးပြုသူ (၎င်း၏ profile ဖိုင်တွဲနှင့် ProfileList SID) သို့မဟုတ် package ကို စာရင်းသွင်းထားသော အသုံးပြုသူ။ |
Source, Scope |
စာရင်း (uninstall, msi_product, app_path, wsl, package) နှင့် machine သို့မဟုတ် user။ |
Name, Version, Publisher |
DisplayName, DisplayVersion, Publisher။ Product ၏ ProductName နှင့် Version။ App Path ၏ ပရိုဂရမ်ဖိုင်အမည်။ Distribution ၏ အမည်နှင့် WSL version။ Package ၏ အမည်နှင့် version။ |
InstallDate, InstallDateRaw |
YYYYMMDD အဖြစ် ရေးသားထားပါက InstallDate ကို ရက်စွဲအဖြစ်၊ မဟုတ်ပါက ရေးသားထားသည့်အတိုင်း။ |
KeyLastWrittenUTC |
Entry ၏ key နောက်ဆုံးပြောင်းလဲခဲ့သည့်အချိန်။ |
InstallLocation, InstallSource |
InstallLocation (App Path ၏ Path၊ distribution ၏ BasePath၊ package ၏ Path)။ InstallSource (product ၏ နောက်ဆုံးအသုံးပြုခဲ့သော source ဖိုင်တွဲ)။ |
Program |
App Path ၏ ပရိုဂရမ်။ |
UninstallCommand, QuietUninstallCommand |
UninstallString, QuietUninstallString။ |
SizeKB, SystemComponent, WindowsInstaller |
KiB ဖြင့် EstimatedSize။ ဝှက်ထားခြင်း ရှိ/မရှိ။ Windows Installer က ထည့်သွင်းခဲ့ခြင်း ရှိ/မရှိ။ |
ProductCode |
Windows Installer product code ({GUID})။ |
Architecture, WOW64 |
Wow6432Node အောက်တွင် x86 သို့မဟုတ် package ၏ architecture။ Key သည် Wow6432Node အောက်တွင် ရှိ/မရှိ။ |
Details |
နောက်ထပ်အချက်များ- DisplayIcon, ModifyPath, ParentKeyName, ReleaseType, Inno Setup: User (Inno Setup installer ကို run ခဲ့သော အကောင့်)။ Product ၏ PackageCode, PackageName။ Distribution ၏ Flags, State, DefaultUid, Version, PackageFamilyName, Default။ Package ၏ List, ResourceId, PublisherId။ |
KeyPath |
Entry ၏ key။ |
DataRaw |
၎င်းတို့၏ အမည်က ဖော်ပြသည့်အရာနှင့် မကိုက်ညီသော value များ၏ byte များ (hex)။ |
TransactionLogStatus, LogsApplied |
Registry ပြန်လည်ရယူမှု အခြေအနေ။ |
Problems |
ဖတ်၍မရသော သို့မဟုတ် ၎င်းတို့၏ အမည်က ဖော်ပြသည့်အရာနှင့် မကိုက်ညီသော value များ။ |
စုံစမ်းစစ်ဆေးမှု ဗျူဟာ¶
- ဖြစ်ရပ်ဝန်းကျင်တွင်
InstallDateနှင့်KeyLastWrittenUTCအလိုက် စီပါ။ အဝေးမှ ဝင်ရောက်သည့် tool များ၊ tunnelling နှင့် ဖိုင်လွှဲပြောင်းရေး client များ၊ archiver များ၊ scripting runtime များနှင့် လုံခြုံရေး tool များကို ကြည့်ပါ။ Scopeuserrecord များကို ပြန်လည်သုံးသပ်ပါ- administrator အခွင့်အရေးမပါဘဲ ထည့်သွင်းခဲ့သော software။- အသုံးပြုသူ ရေးသားနိုင်သော ဖိုင်တွဲများ (
Downloads,AppData,Temp,ProgramData) အတွက်InstallLocation၊InstallSourceနှင့်UninstallCommandကို စစ်ဆေးပါ။ - WSL distribution များကို ရှာဖွေပြီး ၎င်းတို့၏
BasePathကို စုဆောင်းပါ။ - Amcache နှင့် Prefetch (installer နှင့် ပရိုဂရမ် run ခဲ့ခြင်း)၊
$MFT(ထည့်သွင်းသည့် ဖိုင်တွဲ ဖန်တီးခြင်း) နှင့် Application event log (MsiInstaller event များ) တို့နှင့် ချိတ်ဆက်စစ်ဆေးပါ။