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

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

12.12.2014, 15:06. Показов 5589. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru