Seal Опубликовано 28 декабря, 2017 Поделиться Опубликовано 28 декабря, 2017 (изменено) Добрый вечер.Есть такая штука "susped" например она есть в известном ПО...Process Hacker,она полностью замораживает определенный процесс,хотелось бы узнать принцип ее работы,как ее можно реализовать,с какими функциями. Изменено 28 декабря, 2017 пользователем Seal поправка Ссылка на комментарий Поделиться на другие сайты Поделиться
vagingameh Опубликовано 28 декабря, 2017 Поделиться Опубликовано 28 декабря, 2017 (изменено) 51 минуту назад, Seal сказал: полностью замораживает определенный процесс 51 минуту назад, Seal сказал: как ее можно реализовать Способ 1: Скрытый текст - - Способ 2: Скрытый текст - - Изменено 28 декабря, 2017 пользователем vagingameh Ссылка на комментарий Поделиться на другие сайты Поделиться
Seal Опубликовано 28 декабря, 2017 Автор Поделиться Опубликовано 28 декабря, 2017 (изменено) 9 минут назад, vagingameh сказал: Способ 1: Показать содержимое - - Способ 2: Показать содержимое - - Спасибо!)) но я имел виду принцип работы на уровне программирования,хотел сам попробовать такую штуку замутить. Изменено 28 декабря, 2017 пользователем Seal поправка Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 28 декабря, 2017 Поделиться Опубликовано 28 декабря, 2017 Обычный способ: Остановка процесса через 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Seal Опубликовано 28 декабря, 2017 Автор Поделиться Опубликовано 28 декабря, 2017 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); Спасибо вам большое ! Ссылка на комментарий Поделиться на другие сайты Поделиться
horror113 Опубликовано 30 декабря, 2017 Поделиться Опубликовано 30 декабря, 2017 pause() -- поставить на паузу unpause() -- снять Ссылка на комментарий Поделиться на другие сайты Поделиться
DaVilka Опубликовано 31 декабря, 2017 Поделиться Опубликовано 31 декабря, 2017 (изменено) 4 часа назад, horror113 сказал: pause() -- поставить на паузу unpause() -- снять Впервые слышу о таких функциях. Заморозить процесс можно при помощи NtSuspendProcess, но она вроде как до XP винды работает. На винде повыше заморозить процесс нельзя, а можно , как сказал человек выше, заморозить все потоки процесса в том числе и главный, но после его разморозки ты можешь получить побочные эффекты Изменено 31 декабря, 2017 пользователем DaVilka Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 31 декабря, 2017 Поделиться Опубликовано 31 декабря, 2017 8 hours ago, DaVilka said: Заморозить процесс можно при помощи NtSuspendProcess pause / unpause это lua-функции в CE. Ребята так намекали что CE это умеет, что я пошел и посмотрел как делает это он ) К слову что можно было бы и сразу сделать В общем он действительно использует NtSuspendProcess и NtResumeProcess: Cheat Engine/CEDebugger.pas#L271 Cheat Engine/AdvancedOptionsUnit.pas#L623 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения