При написании троянов и прочих полезных
утилит 🙂 часто возникает потребность в
автозагрузке. Так уж повелось так что все
используют для этих целей раздел RUN в
реестре Windows… А зря, ведь есть еще много
эффективных способов автозагрузки.

Мне кажется или все разленились? Уже никто
не хочет думать! Некоторые задачи стали
настолько тривиальны, что никто даже не
думает над их решением. Я это к тому, что
большая часть людей считает, что в Windows’е
можно сделать автозагрузку через VxD или RUN в
реестре… хммм… давайте копнем поглубже и
увидим неограниченые возможности скрытые в
Windows.

Магические директории

Люди особо «творческого» ума могут
сообщить нам, что загрузится можно
скопировав себя куда-то в «C:\WINDOWS\Главное
меню\Программы\Автозагрузка»(В Windows XP это
будет выглядеть где-то так: «C:\Documents and
Settings\User\Программы\Автозагрузка»). Не
спорю, такой вариант сработает, но давайте
сделаем немного иначе. Местоположение этой
папки система узнает с реестра. Упоминания
о ней можно найти в таких разделах:

HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Explorer\Shell
Folders
HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Explorer\User Shell
Folders
HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\explorer\Shell
Folders
HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\explorer\User
Shell Folders

Значение там хранится в переменных «Startup»
и «Common Startup». Все дело в том, что в
переменную «Common Startup» можно написать
все, что угодно. То есть записав туда «c:\windows\system\my_secret_program»
мы запустим все программы находящиеся в
каталоге «my_secret_program». Привет Билли 🙂

Волшебные INI

Ну… Тут есть два варианта, использовать
WIN.INI или SYSTEM.INI. В WIN.INI ключ «windows»
содержит две переменные load и run. Придаваемые
им значения и есть программы которые надо
загрузить. Например:
………….
[windows]
load=my_secret_pogram1.exe
run=my_secret_pogram2.exe
………….

А в SYSTEM.INI метод немного другого характера. В
ключе «boot» есть параметр Shell, он задает
программу которая будет служить GUI для Windows.
По умолчанию это Explorer, но можно указывать и
другую программу 🙂 А самое интересное то,
что можно указать и Explorer с параметром/параметрами.
На что он услужливо запустит передаваемый
параметр. Например:
………….
[boot]
Shell=Explorer.exe my_secret_pogram.exe
………….

И снова подарки от майкрософт 🙂 Шелл еще
указывается в реестре: «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\Winlogon\Shell». По умолчанию там
Explorer, но его можно заменить…

Великий BAT

Ну что, поехали дальше… Что такое бат файлы
знают все (я надеюсь…), но не все знают что
существует достаточно интересный файл
winstart.bat, который находится в папке Windows. Он
автоматически запускается системой каждый
раз при загрузке. Это обычный Bach файл с
досовскими командами. Чтобы с его помощью
запустить нашу программу добавляем в файл
что-то вроде: c:\windows\my_secret_program.exe.

В противовес ему прилагается dosstart.bat,
который как и winstart находится в директории
Windows, но запускается он если выбрать «Перезагрузить
компьютер в режим эмуляции MS-DOS». 

И конечно же Autoexec.bat, про который нельзя не
упомянуть говоря про батники :), запускается
при каждой загрузке твоего металлического
друга еще до винды. А для счасливых
обладателей NT/XP я имею другую прекрасную
новость. У них Autoexec.bat не грузится, зато Microsoft
не обделила и их вниманием, они могут
пользоваться файлом Autoexec.NT 🙂 Его работа
заключается в том, что если у DOS’овской
программы нет ярлыка, то настройки для
создания DOS-BOX’а берутся из него. А он в свою
очередь тот же батник 🙂 А если кто-нибудь
хочет загрузится в NT с Autoexec.bat (удовольствие
для исключительных извращенцев), тогда
придется покопаться в реестре… В разделе: 

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon. 

Значение переменной ParseAutoexec установите
равным «1». Вот и все 🙂

Реестр — знакомый и не очень

Хех… Про реестр рассказали уже столько
баек, что мне даже стыдно про него упоминать,
но ради приличия перечислю стандартные
ключи автозагрузки и то, о чем знают
немногие. Итак, стандартные места откуда
можно загрузится:

HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\RunOnce

HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion\RunServices

Тут все просто в нужном разделе, создаем
параметр со значением запускаемой проги. А
теперь встречайте RunOnceEx! Что очень
удивительно, мало кто знает как в этом ключе
прописать свою программу. Вот рекомендации
по использованию 🙂

1 Создаем ключ(если его нету)

HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\CurrentVersion\RunOnceEx\000x

2 Создаем строковую переменную со
значением программы которую надо запустить,
но в интересном формате: 

«DLL|Function|Arguments» или «||command parameters»

То есть у нас есть два варианта: мы можем
запустить некоторую функцию Function или exe-шник.

Например:

«my_secret_pogram»=»||my_secret_pogram.exe» —
запустит my_secret_pogram.exe
«msprint2.dll|RUNDLL_PrintTestPage|» — печать пробной
страницы 🙂

Ах да… В NT есть еще один раздел:

HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows
NT\CurrentVersion\Winlogon\Userinit

Работает он также, как и классический RUN.

RegisterServiceProcces

Поскольку мелкомягкие отменили фичу с
RegisterServiceProcces в NT, то я расскрою тебе тайну,
как сделать RegisterServiceProcces+Autorun. Все очень
просто залазишь в «HKEY_LOCAL_MACHINE/Software/ Microsoft/WindowsNT/CurrentVersion/AppInit_DLLs».
Теперь создаешь переменную со значением
«my_secret_pogram.dll», где «my_secret_pogram.dll» —
имя нашей Dll’ки. В ней нужно создать функцию,
которая будет исполнятся при загрузке.
Радует то, что в этом случае наш процесс не
будет видно в Таск Менеджере! Но
использовать можно только функции из
KERNEL32.DLL. 🙁 За более подробной информацией
полезай на www.microsoft.com!

Быстрее всех

Windows NT позволяет запускать специально
написанные программы до регистрации
пользователя (logon). Эти программы
подразделяются на две группы: драйверы и
сервисы. Все дело в том, что любую Win32
программу можно запустить до logon с помощью
специального сервиса. В Windows NT Resource Kit
включен сервис srvany.exe, выполняющий именно
эти задачи :). Его подробное описание
находится в файле srvany.wri. Почитай на досуге 🙂

Маленький трюк 🙂

Ну и наконец, после такого прогрузона я
скажу, что если тебе влом копаться в этом
дерьме, то ты можешь просто скопировать
my_secret_pogram.exe в корень диска C:\ и
переименовать в Explorer.exe. Он запустится до
настоящего Эксплорера 🙂 И это работает во
всех версиях Windows…

Теперь ты вооружен. Надеюсь после прочтения
этого ты задумаешься, каким способом будет
грузится твой новый троян 🙂 Удачи!

Оставить мнение

Check Also

Безопасность превыше всего. 9 простых трюков, которые сделают жизнь линуксоида секьюрнее

Жизнь обычных людей складывается из мелочей. Жизнь линуксоида складывается из множества ма…