Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
18 / 18 / 2
Регистрация: 05.12.2013
Сообщений: 95

Перехват TerminateProcess по примеру Рихтера. Не работает

12.12.2014, 15:06. Показов 5885. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень надо реализовать неубиваемую программу. Переделал код Рихтера под TerminateProcess. dll должна менять адрес оригинальной функции на мою, которая смотрит, какой процесс должен быть убит, если это моя прога, которую нужно защитить, то функция должна отменить килл.
Очень вас прошу мне помочь, бьюсь над этим 2 месяц.
Прога с либой в архиве весят 16 мб, поэтому закинул на хостинг.
http://rghost.ru/59604521
Вот Virus Total если что
https://www.virustotal.com/ru/... 418385878/
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2014, 15:06
Ответы с готовыми решениями:

Перехват TerminateProcess
Добрый день. У меня такой вопрос. Я перехватываю TerminateProcess и хочу запретить завершать мой процесс. Но когда я пытаюсь узнать какой...

WindowsMediaPlayer не работает по примеру из книги
Здравствуйте форумчане. Изучаю самостоятельно VB.Net по книге Лукина и есть затруднение. Не могу разобраться как прописать свойство...

Не работает отправка почты по примеру из FAQ
Пробую отправить таким образом письмо, а в итоге выводит Exception Dim o_Mess As Object = CreateObject("CDO.Message") ...

33
18 / 18 / 2
Регистрация: 05.12.2013
Сообщений: 95
15.02.2015, 15:00  [ТС]
Студворк — интернет-сервис помощи студентам
Hook.rar
2
18 / 18 / 2
Регистрация: 05.12.2013
Сообщений: 95
28.02.2015, 19:29  [ТС]
Еще 1 вопросик, как лучше отследить создание процесса. Я делаю через обработку GetMsgProc.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HHOOK hook;
LRESULT CALLBACK GetMsgProc(
    int code,       // hook code
    WPARAM wParam,  // removal option
    LPARAM lParam   // message
    )
{
 
    
    if (code == HCBT_CREATEWND)
    {
        //MessageBox(NULL, L"new window", L"", 0);
StartHook();
    }
    CallNextHookEx(sm_pHook, code, wParam, lParam);
    return 0;
}
void Start()
{
hook = SetWindowsHookEx(
        WH_CBT,
        &(GetMsgProc),
        ModuleFromAddress(GetMsgProc),
        0
        );
}
Срабатывает на каждое создание контрола, что конкретно тормозит работу. Конечно можно определять класс окна, чтобы из-за создания какого либо контрола приложение не хукалось снова. Но опять же, этот метод не универсальный. Т.к. приложение может быть без окон. Есть ли альтернативы?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
28.02.2015, 19:33
Цитата Сообщение от РЕН1998 Посмотреть сообщение
Еще 1 вопросик, как лучше отследить создание процесса.
В user mode легальных средств нету. Ну если не считать хука на CreateProcessInternal
во все процессы, недокументированных средств типа AppCertDlls или тупого цикла с
перебором. В ядре есть специальный нотификатор - PsSetCreateProcessNotifyRoutine.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
28.04.2016, 15:04
Позвольте задать вопрос - по аналогии с Вашей программой MessageBox сделал так же только для TerminateProcess , внутри самой программы функция нормально перехватывается , а вот если по пробовать через task manager то процесс благополучно убивается , вопрос - почему и как это исправить ?

Добавлено через 1 час 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <Windows.h>
#include <iostream>
#include "MinHook.h"
 
#if defined _M_X64
#pragma comment(lib, "MinHook.x64.lib")
#elif defined _M_IX86
#pragma comment(lib, "MinHook.x86.lib")
#endif
 
template <typename T>
inline MH_STATUS MH_CreateHookEx(void* pTarget, void* const pDetour, T** ppOriginal)
{
    return MH_CreateHook(pTarget, pDetour, reinterpret_cast<void**>(ppOriginal));
}
 
typedef BOOL (WINAPI *TERMINATERPOCESS)(HANDLE ,UINT  );
 
// Оригинальная функция
TERMINATERPOCESS fpTerminateProcess = NULL;
 
//Заменяющая функция
int WINAPI DetourMessageBoxW(HANDLE hProcess,UINT   uExitCode)
{
    return MessageBoxA(0, "Hooked!", "", MB_OK);
}
 
 
DWORD WINAPI ThreadProc(LPVOID Param)
{
        for(;;){std::cout<<"HELLO!!!\n";Sleep(5000);}
return 0;
}
 
 
 
int main(){
 
//Инициализация
    if (MH_Initialize() != MH_OK)
    {
        return 1;
    }
 
    // Создание нового хука (Минихук подерживает несколько хуков)
    if (MH_CreateHookEx(&TerminateProcess, &DetourMessageBoxW, &fpTerminateProcess) != MH_OK)
    {
        return 1;
    }
 
    //Стартуем
    if (MH_EnableHook(&TerminateProcess) != MH_OK)
    {
        return 1;
    }
 
    CreateThread(NULL,0,ThreadProc,0,0,NULL);
 
system("pause");
 
return 0;
}
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
28.04.2016, 15:31
Цитата Сообщение от Игорь с++ Посмотреть сообщение
вопрос - почему
Очевидно, task manager использует не только TerminateProcess.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
28.04.2016, 15:33
Цитата Сообщение от Убежденный Посмотреть сообщение
Очевидно, task manager использует не только TerminateProcess.
а что ещё ? и пробовал своей прогой которая использует только TerminateProcess и она убивает !!!

Добавлено через 27 секунд
быть может Вы имели виду OpenProcess
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
28.04.2016, 15:42
Цитата Сообщение от Игорь с++ Посмотреть сообщение
а что ещё ?
Ну я видел на последних Виндах, как диспетчер задач, если у него не
получается прибить процесс обычными средствами, начинает перебирать
его хэндлы и для каждого делать DuplicateHandle с флагом close source.
В итоге у целевого процесса сносит крышу и он таки завершается.

А функции разные могут быть, не только TerminateProcess. Например,
NtTerminateProcess, SendMessage + WM_CLOSE и т.д.
Перехватывать NtOpenProcess и фильтровать права доступа - более универсально,
так как большинство способов воздействия на процесс так или иначе делаются
через его хэндл.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
28.04.2016, 15:44
Цитата Сообщение от Убежденный Посмотреть сообщение
Ну я видел на последних Виндах
тестирую на Windows 7 , да и к тому же я уже написал , что специально сделал программу которая использует только TerminateProcess , получается что то не то , т.к. если из под своего кода вызвать терминайт , то она перехватывается , если из чужого , то нет
0
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
28.04.2016, 15:49
Игорь с++, а как инжект в taskmgr осуществляете?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
28.04.2016, 15:51
Цитата Сообщение от jupman Посмотреть сообщение
Игорь с++, а как инжект в taskmgr осуществляете?
так а с этого места по подробней , т.е. эту длл надо инжектить в task meneger ?
0
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
28.04.2016, 15:58
Игорь с++, конечно, у каждого процесса своя копия образа Kernel32.dll, ntdll.dll etc (но не модифицируемые страницы используются совместно). Если вы пропатчили код у себя, то от этого у остольных процессов он не пропатчится.
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
28.04.2016, 16:12
Цитата Сообщение от jupman Посмотреть сообщение
конечно, у каждого процесса своя копия образа Kernel32.dl
спасибо попробую

Добавлено через 10 минут
а ещё вопрос - инжектить надо MinHook.x86.dll или код который записан по инициализации хука ? просто я сделал инжект MinHook.x86.dll всё равно результат тот же , то что длл попала в task meneger проверил !!!
0
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
28.04.2016, 16:16
Игорь с++, и MinHook должен быть и код по инициализации хука конечно, какой толк от MinHook'a если его никто не использовал в целевом процессе.
1
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
28.04.2016, 16:28
Цитата Сообщение от jupman Посмотреть сообщение
Игорь с++, и MinHook должен быть и код по инициализации хука конечно, какой толк от MinHook'a если его никто не использовал в целевом процессе.
спасибо буду пробовать

Добавлено через 10 минут
всё получилось , спасибо Вам большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2016, 16:28

Не работает метод простой итерации делал по примеру
Не работает метод простой итерации делал по примеру

Не пойму как работает clear:both, к примеру если сделать left тот же эффект
&lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt;Document&lt;/title&gt; &lt;style&gt; div { ...

TerminateProcess
1)Господа не понятно вот , что - как зная имя окна я могу получить HANDLE ? 2)Где можно почитать о привелегиях доступа , что бы закрывать...

Отследить TerminateProcess
Могу ли я в своем приложении отследить, когда кто-то снаружи меня мочит, то есть TerminateProcess мне делает, никаких оконных сообщений...

Не работает перехват клавиши
Помогите разобраться... имеется код... private void Form1_KeyDown(object sender, KeyEventArgs e) { if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru