Перейти к содержанию

ПО которое замораживает процесс


Рекомендуемые сообщения

Добрый вечер.Есть такая штука "susped" например она есть в известном ПО...Process Hacker,она полностью замораживает определенный процесс,хотелось бы узнать принцип ее работы,как ее можно реализовать,с какими функциями.

Изменено пользователем Seal
поправка
Ссылка на комментарий
Поделиться на другие сайты

51 минуту назад, Seal сказал:

полностью замораживает определенный процесс

51 минуту назад, Seal сказал:

как ее можно реализовать

Способ 1:

Скрытый текст

 

MI34JyG.jpg

-

tgbBVil.jpg

-

AJ7NFxi.jpg

 

Способ 2:

Скрытый текст

AOEMZAI.jpg

-

4wJjFIJ.jpg

-

4DZsCyd.jpg

 

Изменено пользователем vagingameh
Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, vagingameh сказал:

Способ 1:

  Показать содержимое

 

MI34JyG.jpg

-

tgbBVil.jpg

-

AJ7NFxi.jpg

 

Способ 2:

  Показать содержимое

AOEMZAI.jpg

-

4wJjFIJ.jpg

-

4DZsCyd.jpg

 

 

Спасибо!)) но я имел виду принцип работы на уровне программирования,хотел сам попробовать такую штуку замутить. 

Изменено пользователем Seal
поправка
Ссылка на комментарий
Поделиться на другие сайты

Обычный способ:

Остановка процесса через SuspendThread();

Восстановление ResumeThread();

Т.е перебираешь все потоки процесса и останавливаешь их.

 

С помощь недокументированных функций, тут просто создаешь прототип функции, а после вызываешь его, восстанавливаешь примерно так же.

typedef LONG (NTAPI *NtSuspendProcess)(IN HANDLE ProcessHandle);
NtSuspendProcess pfnNtSuspendProcess = (NtSuspendProcess)GetProcAddress(GetModuleHandle("ntdll"), "NtSuspendProcess");
HANDLE processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId));
pfnNtSuspendProcess(processHandle);

 

 

  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, kiwipapayamongoose сказал:

Обычный способ:

Остановка процесса через SuspendThread();

Восстановление ResumeThread();

Т.е перебираешь все потоки процесса и останавливаешь их.

 

С помощь недокументированных функций, тут просто создаешь прототип функции, а после вызываешь его, восстанавливаешь примерно так же.


typedef LONG (NTAPI *NtSuspendProcess)(IN HANDLE ProcessHandle);
NtSuspendProcess pfnNtSuspendProcess = (NtSuspendProcess)GetProcAddress(GetModuleHandle("ntdll"), "NtSuspendProcess");
HANDLE processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId));
pfnNtSuspendProcess(processHandle);

Спасибо вам большое !

 

 

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, horror113 сказал:

pause() -- поставить на паузу

unpause() -- снять

Впервые слышу о таких функциях.

 

Заморозить процесс можно при помощи NtSuspendProcess, но она вроде как до XP винды работает.

На винде повыше заморозить процесс нельзя, а можно , как сказал человек выше, заморозить все потоки процесса в том числе и главный, но после его разморозки ты можешь получить побочные эффекты

Изменено пользователем DaVilka
Ссылка на комментарий
Поделиться на другие сайты

8 hours ago, DaVilka said:

Заморозить процесс можно при помощи NtSuspendProcess

 

pause / unpause это lua-функции в CE. Ребята так намекали что CE это умеет, что я пошел и посмотрел как делает это он ) К слову что можно было бы и сразу сделать :)

В общем он действительно использует NtSuspendProcess и NtResumeProcess:

Cheat Engine/CEDebugger.pas#L271

Cheat Engine/AdvancedOptionsUnit.pas#L623

 

  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.