Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вставка кода в чужой процесс

8.3K
11 мая 2006 года
Chuvak
40 / / 23.11.2005
Есть код, который открывает файл, блокируя его удаление и
запись в него. Как внедрить этот код в системный
процесс(пусть даже explorer)? Нужно, чтобы одаренные дети не
убивали его например через ProcessKiller или ДиспечерЗадач.

P.S. А будет ли это все работать под Windows 9x, в школе?
5.3K
12 мая 2006 года
r000n_m
177 / / 26.02.2006
Писать в чужой процесс...
Я думаю, система тебе этого не даст. Если только сильно попросишь :)
Антивири ругаться будут
P.S. Не вирус пишешь? :)
8.3K
14 мая 2006 года
Chuvak
40 / / 23.11.2005
Цитата:
Originally posted by r000n_m
Писать в чужой процесс...
Я думаю, система тебе этого не даст. Если только сильно попросишь :)


У меня есть исходники на Делфи и рабочий код, который имеет
notepad во всех позах. Дело в том, что я Делфи не секу,
только С++ и Бейсик(бейсик для дос:)).

Цитата:
Не вири пишешь?


Не вири. Система тестирования учащихся - проект на екзамен.
По окончании тестирования создается отчет на рабочем столе,
который нельзя удалить до перезагрузки.

5.3K
14 мая 2006 года
r000n_m
177 / / 26.02.2006
Цитата:
У меня есть исходники на Делфи и рабочий код, который имеет
notepad во всех позах

И даже в списке процессов не показывается?

9.5K
14 мая 2006 года
Damarus
101 / / 08.04.2006
Chuvak, а зачем такие сложности нужны? Зачем блокировать файл? Кроме того, не помню как в 9x (давно это было), а в XP можно грохнуть любой процесс, если удастся получить его хендл.
534
24 мая 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by Damarus
Chuvak, а зачем такие сложности нужны? Зачем блокировать файл? Кроме того, не помню как в 9x (давно это было), а в XP можно грохнуть любой процесс, если удастся получить его хендл.


Для начала попробуй грохнуть Кашпировского.
2 Chuvak
Внедрить код можно, поместив его в Dll и создав удалённый поток с помощью CreateRemoteThread().
Вкратце:
Выделяем интересующий нас код в функцию DllMain() библиотеки, в обработчике DLL_PROCESS_ATTACH.
Далее, полагая, что в tszLibFile у нас хранится имя dll (TCHAR), в dwProcessID - идентификатор нужного процесса, пишем следующий код для внедрения библиотеки:

Код:
hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId);

int nLen = (lstrlen(tszLibFile) + 1) * sizeof(TCHAR);
LPTSTR tsz = (LPTSTR) VirtualAllocEx(hProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, tsz, tszLibFile, nLen, NULL);

#ifdef _UNICODE
#define PROC_NAME "LoadLibraryW"
#else
#define PROC_NAME "LoadLibraryA"
#endif

PTHREAD_START_ROUTINE pfnThreadProc = (PTHREAD_START_ROUTINE)
GetProcAddress(GetModuleHandle(TEXT("Kernel32")), PROC_NAME);

hThread = CreateRemoteThread(hProcess, NULL, 0,
         pfnThreadProc, tsz, 0, NULL);

VirtualFreeEx(hProcess, tsz, nLen, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess);

Если чего непонятно, то обращайся к Рихтеру.
Освобождаем библиотеку аналогично, только вместо "LoadLibrary" используем "FreeLibrary"
Данный код будет работать с опирационками на базе NT.
Внедрить код в процессы, запущенные от имени SYSTEM (типа svchost), не удастся.
А вообще, наверное, в такой ситуации (когда необходим запрет на завершение выполнения кода, наличие которого заранее известно пользователю) проще будет перехватывать NativeAPI функции (по крайней мере, надёжность будет выше), или воспользоваться средствами защиты Windows NT.
8.3K
24 мая 2006 года
Chuvak
40 / / 23.11.2005
Миф о надёжности и безопасности НеТе, 2000 и ХеРе -
это только миф. Как говорили древние инки, "Смотри..."

Вот прога - прячет winlogon.exe из списка процессов. Без
исходников, зараза. И прога, которая его обнаруживает...

Цитата:
Originally posted by r000n_m
И даже в списке процессов не показывается?



Открыаем Диспечер Задач, Process Explorer от Русиновича и еще всё что хотим,
запускаем ProcHide, winlogon исчез. Берем в руки индийский
бубен, постукивая по системнику, обходим вокруг монитора
(монитор ставим на пол - удобнее), запускаем PHunter,
Выбираем чего-нибудь, видим winlogon.
Убиваем диспечером ProcHide.exe, в Диспечере появляется винлогон.
Мистика!!!
Антивирусы, кстати, не ругаются...

8.3K
24 мая 2006 года
Chuvak
40 / / 23.11.2005
Цитата:
Originally posted by HarryAxe
А вообще, наверное, в такой ситуации (когда необходим запрет на завершение выполнения кода, наличие которого заранее известно пользователю) проще будет перехватывать NativeAPI функции (по крайней мере, надёжность будет выше), или воспользоваться средствами защиты Windows NT.


Да ну его, этот NativeAPI, интересно, но некогда.
Средствами защиты в NT не знаю, как пользоваться.
Буду проверять версию системы - если NT, добавляем DLL;
Если нет - что-то типа RegisterServiceProcess, точно не помню.

534
24 мая 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by Chuvak
Миф о надёжности и безопасности НеТе, 2000 и ХеРе -
это только миф. Как говорили древние инки, "Смотри..."

Вот прога - прячет winlogon.exe из списка процессов. Без
исходников, зараза. И прога, которая его обнаруживает...

Да есть у меня сорцы не ProcHide. Тот же перехват NativeAPI. И никакой мистики.

534
24 мая 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by Chuvak
Средствами защиты в NT не знаю, как пользоваться.

Элементарно. Создаём аккаунт для пользователя с ограниченными правами. Обычные пользователи не имеют права завершать программы, запущенные от имени администратора (кроме как перезагрузиться, да и то не всегда. Всё зависит от выбранной политики безопастности)

8.3K
25 мая 2006 года
Chuvak
40 / / 23.11.2005
Я понял, ты имеешь ввиду через права польлователей.
Дело в том, что приложение должно нормально работать под
Windows 9x, где политики безопасности нет. Приходится проверять систему
и если запущен под NT - создавать удалённый поток, если под
9х - создавать сервисный процесс, благо создается он вызовом
одной API. Унификация, блин.

Цитата:
Originally posted by HarryAxe
Внедрить код в процессы, запущенные от имени SYSTEM (типа svchost), не удастся.


И правда, не удаётся!!! Пока отладочные привилегии не
получишь... :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог