Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Защита процесса!


Автор: Феликс 29.11.2006, 00:27
Ребята помогите мне с такой задачей, пожалуйста!
Допустим я запускаю Процесс А, после этого процесс Б, который обращается к Процессу А. Нужно написать сурс код по определению всех процессов которые обращяются к Процессу А и отключить их! Кстати, Процесс А является дочерним процессом, какие нибудь изменения в нём не допустимы. Есть алтернативный процесс, прородитель Процесса А. Просьба вашу помощь реализовать ввиде кода.
Заранее благодарен!

Автор: GremlinProg 29.11.2006, 09:04
Цитата(Феликс @  29.11.2006,  02:27 Найти цитируемый пост)
код по определению всех процессов которые обращяются к Процессу А и отключить их!
Что тут имеется ввиду?

Автор: Феликс 29.11.2006, 14:19
Допустим подключается какой нибудь процесс (назавём его процессом X), функция которого изменить определённые параметры в оперативном пространстве другого процесса (процесса Y). Так вот суть задачи состоит в том чтобы определить если процесс X работает с памятью процесса Y, то должна сработать защита и отключить процесс X!

Автор: Romikgy 29.11.2006, 18:07
Цитата(Феликс @  29.11.2006,  13:19 Найти цитируемый пост)
Допустим подключается какой нибудь процесс

как подключается?

Автор: dumb 29.11.2006, 19:50
технически это осуществить несложно - развесить хуки на всякие *Process, Virtual* итд.
но делать это придется тебе самому, Феликс, и есть подозрение, что именно в этом моменте будут трудности...

Автор: Феликс 29.11.2006, 21:54
Цитата(Romikgy @ 29.11.2006,  18:07)
как подключается?

Другими словами при запуске проложения .exe

Добавлено @ 22:00 
Цитата(dumb @ 29.11.2006,  19:50)
технически это осуществить несложно - развесить хуки на всякие *Process, Virtual* итд.
но делать это придется тебе самому, Феликс, и есть подозрение, что именно в этом моменте будут трудности...

А можеш мне помочь в написании кода? Мне трудно, я тока недавно взялся за С++ на WinApi основе. Или помоги ссылками. Мне очень сильно нада написать этот код! Я весь форум облазил, и ничего подобного не нашел! Буду очень признателен за помощь!

Автор: Romikgy 29.11.2006, 22:02
Цитата(Феликс @  29.11.2006,  20:54 Найти цитируемый пост)
Другими словами при запуске проложения .exe

что при запуске?

Автор: Феликс 29.11.2006, 22:09
Цитата(Romikgy @ 29.11.2006,  22:02)
Цитата(Феликс @  29.11.2006,  20:54 Найти цитируемый пост)
Другими словами при запуске проложения .exe

что при запуске?

Мде.... К примеру у меня есть файл process_A.exe и я его запускаю! Теперь понятно!

Автор: Romikgy 29.11.2006, 22:22
ну запустил , дальше что?

Автор: Феликс 29.11.2006, 22:59
Цитата(Romikgy @ 29.11.2006,  22:22)
ну запустил , дальше что?

Ты хоть прочитал содержимое темы или тебе дай тока пофлудить!?  smile 

Автор: Romikgy 29.11.2006, 23:20
Ув. Феликс вы слышали такую фразу
"правильно заданый вопрос это 50% ответа" ! 
вот ваш вопрос вообще полная чушь, имхо,
а если вы считаете , что 
Цитата(Феликс @  29.11.2006,  21:59 Найти цитируемый пост)
дай тока пофлудить

тогда вам мой ответ не нужен!

PS кса ты думаешь здесь репутация только за флуд дается?

Автор: _hunter 30.11.2006, 11:46
да что тут непонятного? хочет человек написать щащищалку типа как у касторского.
решается перехватом (в в данном случае) функции WriteProcessMemory

Автор: Феликс 30.11.2006, 17:20
Цитата(_hunter @ 30.11.2006,  11:46)
да что тут непонятного? хочет человек написать щащищалку типа как у касторского.
решается перехватом (в в данном случае) функции WriteProcessMemory

А поподробнее можно пожалуйста.  Я вычитал в интернете способности этой функциии и я так понял, что она способна тока изменять оперативное пространство памяти, а мне нада определить процессы которые это делают в пространстве памяти Процесса А и по мере возможности отрубить их!
Может я чтото не понимяю? Тогда я  smile 

Автор: witex 30.11.2006, 17:26
Хук на это функцию ставить надо, не самой функцией пользоваться!

Автор: Феликс 30.11.2006, 20:16
Дайте примерчик!

Автор: _hunter 30.11.2006, 20:56
ищи "перехват api" -- вопрос не раз обсуждался.

Автор: Феликс 2.12.2006, 00:40
Ок, спасибо!

Автор: Феликс 7.12.2006, 13:57
Еще вот такой вопрос!
Вот скрипт по выводу всех процессов в системе!
Код

    HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    bool bIsok = false;
    PROCESSENTRY32 ProcEntry;
    ProcEntry.dwSize = sizeof(ProcEntry);
    bIsok = Process32First(pSnap, &ProcEntry);    
    while(bIsok)
    {
    printf("%u\t*%s*\n", ProcEntry.th32ProcessID, ProcEntry.szExeFile);
    bIsok = Process32Next(pSnap, &ProcEntry);
          }

Что мне нужно дописать, чтобы я смог определить (по имени процесса) заранее, если есть такой процесс в системе!
К примеру после вывода всего списка, программа анализировала каждый процесс, и если среди них наидёт заданный мной процесс, то его нужно разрушить!
Спасибо за помощь! Помощь предоставлаем ввиде сурсов!

Автор: Romikgy 7.12.2006, 14:52
Код

printf("%u\t*%s*\n", ProcEntry.th32ProcessID, ProcEntry.szExeFile);
if (strcmp("my.exe",ProcEntry.szExeFile)
{
TerminateProcess(OpenProcess( PROCESS_TERMINATE, 0,ProcEntry.th32ProcessID),0);
}
    bIsok = Process32Next(pSnap, &ProcEntry);

хотя сравнение надо сделать регистро независимым и только имя файла
Цитата(Феликс @  7.12.2006,  12:57 Найти цитируемый пост)
Вот скрипт по выводу всех процессов в системе!

это не скрипт!

Автор: Феликс 7.12.2006, 22:49
Цитата(Romikgy @ 7.12.2006,  14:52)
Цитата(Феликс @  7.12.2006,  12:57 Найти цитируемый пост)
Вот скрипт по выводу всех процессов в системе!

это не скрипт!

Часть его! Сейчас испробуем твой метод!

Автор: Феликс 7.12.2006, 23:19
После запуска сурса у меня отрубило все процессы, а тот что надо было отрубить он оставил  smile . Romikgy помоги мне с этой задачей пожалуйста!

Добавлено @ 23:22 
Почемуто когда ставиш параметр закрития процесса в параметр False процедуры if, то всё работает!

Автор: Феликс 7.12.2006, 23:43
Еще одна задача! К процессу подключился постороний .dll. Нужен сурс по определению если такой .dll подключен к процессу и его уничтожению!
П.С: Romikgy спасибо за помощь!

Автор: Romikgy 8.12.2006, 00:11
Цитата(Феликс @  7.12.2006,  12:57 Найти цитируемый пост)
CreateToolhelp32Snapshot

+TH32CS_SNAPMODULE    
+Module32First
+Module32Next

имхо

Добавлено @ 00:14 
Кса правила форума давай придерживаться одна тема один вопрос

Автор: 0x00 9.12.2006, 21:38
Ты хочешь писать защиту от c0d3 injection?

перехватываешь апи WriteProcessMemory...
смотришь кто куда что хочет записать. если нильзя, или записал много, то терминейт, если нет, то норм работаешь.
например по умному это должно работать так - разрешать записть в чужой процесс, но не более разрешенного кол-ва байт, например в защите аутпост 4.0 про этот размер составляет помоему 15 байт на процесс. 

абсолютно ничего сложного. главная задача - перехватить WriteProcessMemory.

но возникает еще один вопрос - как завершить процесс, который пытается записать в чужое пространство... т.е. с юзермодовыми ф-циями далеко не уйдешь. надо писать драйвер и диспетчер для него... например спалил ты запись 1кб в процесс... передаешь информацию о том, что мол xxx.exe записал 1024 в yyy.exe, диспетчер решает что делать... а он решит заблокироввать надолго xxx.exe, для этого он передает irp пакет драйверу с информацией о том, какой процесс убить.

p.s.
на самом деле лучше все защиты писать в ring0, а для юзермода оставлять только gui =))

Автор: Феликс 10.12.2006, 00:02
Всё это очень хорошо 0х00, вот тока мне трудно это всё переварить и реализовать самому, поэтому я прощу у вас помощи в решении этой не легкой задачи!

Автор: zabivator 11.12.2006, 03:13
Феликс, когда решаешь нелегкие задачи, надо получить минимальное представление по тематике. Читай классику. Въезжай в идеологию.  Помочь могут с конкретной проблемой, никто тебе всю программу писать не будет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)