На дълбоко в Windows Registry: Image File Execution Options

[UPDATED – 17.11.2008]

Регистрито на Windows е пълно с какви ли не ключове и стойности. Някои от тях смислени, други не (за нас!). Но има един ключ, който заслужава внимание:

[code]HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options[/code]

Когато стартирате произволнапрограма shell-ът (explorer.exe) претърсва “Image File Execution Options” за подключ с име името на приложението.

Пример:
Стартирате notepad.exe. Shell-ът поглежда в “Image File Execution Options” за подключ с име notepad.exe:

  • HKLM…
    • CurrentVersion
      • Image File Execution Options
        • notepad.exe

Ако намери такъв подключ се претърсва занякой от следните атрибути:

Debugger,

DisableHeapLookaside,

ShutdownFlags,

MinimumStackCommitInBytes,

ExecuteOptions,

GlobalFlag,

DebugProcessHeapOnly,

ApplicationGoo,

RpcThreadPoolThrottle,

Най-интересният от тях е “Debugger”. Той е от тип REG_SZ (т.е. String), а стойността му оказва пътя и името на програмен дебъгер.

Идеята е проста:
Преди фактическотостартиране на процес последния да се прихване от дебъгера, за да може да го “изследвате”. Дефакто shell-ът стартира дебъгера ВМЕСТО исканото от нас приложение, като подава на последния няколко параметъра, за които ще станедума малко по-късно.

Малкият трик.

Какво ще стане обаче ако вместо дебъгера зададем пътя и името на друга програма?
Познахте! Ще се стартира зададената програма вместо нашата 🙂

Дали е вярно? Пробвайте:

За теста ще направя така, че при стартирането на notepad.exe ще се появи calc.exe (Windows Calculator)

  • стартирайте regedit и намерете ключа “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”
  • направете нов ключ (key) с име: “notepad.exe– без кавичките
  • в новия ключ създайте стойност от тип String (REG_SZ) с име: “debugger– без кавичките
  • като стойност му задайте: “calc.exe– без кавичките
  • Сега отворете start -> run и в прозорчето запишете “notepad.exe– без кавичките
  • натиснете ОК

Е? Кое се стартира? Notepad.exe или calc.exe? 🙂

Подробностите.

Когато shell_ът стартира програмата, зададена чрез променливата “Debugger” тя й подава няколко параметъра:

  • Параметър 1: пътя и името на програмата, която потребителят е искал да стартира
  • Параметър 2 .. n: параметрите, подадени от потребителя

Можете да се уверите в това, като направите малка програма, която да извежда подадените към нея параметри и я зададете като стойност на променливата “Debugger”.

Нещо като заключение.

Интересен ключ. Още едно скрито нещо изплува на повърхността 🙂 . И въпреки, че той ни дава възможност да дебъгваме лесно не би било коректно да го използвате с лоши намерения спрямо други потребители – дори на шега. Казвам го, защото е факт, че някои вируси пипат и там. Но и Вие вече знаете за още едно място, където да търсите малките гадинки 🙂

Update – 17.11.2008: В програмата Autoruns на Sysinternals се показва списък на “хакнатите” чрез ключа Image File Execution Options програми. Табчето се казва “Image Hijacks”. По принцип този списък е празен. Ако все пак присъстват стойности е добре да поогледате, защото може да имате “гостенче” 🙂

[singlepic=118,220]

Допълнителна информация:

Leave a Reply

Your email address will not be published. Required fields are marked *