С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
1

Удалить чужой mutex

15.01.2016, 21:22. Просмотров 1817. Ответов 55
Метки нет (Все метки)

Есть чужой процесс создающий mutex, название mutex'a: '_!MSHISTORY!_'.
Требуется найти хендл этого мутекса, и удалить его.
Вот мои действия:
1 инжектирую свою dll в этот процесс.
2 ищу mutex
3 устанавливаю его hwnd
4 убиваем хендл

Вроде всё просто. Но уже перепробывал кучу методов, не сдвинулся ни на шаг.
Получилось заинжектить свою dll в процесс и определить на наличие нужного mutex'а с системе, но как установить его handle?

Это не работает:
Delphi
1
2
3
mutex1:=OpenMutex(MUTEX_ALL_ACCESS, false, '_!MSHISTORY!_');
CloseHandle(mutex1);
ReleaseMutex(mutex);
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2016, 21:22
Ответы с готовыми решениями:

Как удалить ранее созданный Mutex?
Вот я создал мутекс var HM :THandle; begin ...

Исходник чужой программы
Привет программеры. Помогите плиз . проблема такая : есть программа (чужая)...

Команды чужой программе
Подскажите пожалуйста, Как передать чужой программе следующие команды: 1)...

Вставка текста в чужой программе
Здравствуйте. Пишу программу, которая отлавливает нажатие коткея в чужой...

Прикрепление формы к чужой программе
Нарыл такой код: procedure CreateParams( var params: TCreateParams );...

55
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
17.01.2016, 21:31  [ТС] 41


блин ну не до смеха вообще... такое чувство что это не возможно.

Добавлено через 1 минуту
Цитата Сообщение от mss Посмотреть сообщение
Простая же причина - NtQueryObject вернула STATUS_INVALID_HANDLE)
Вот именно что он не возвращает STATUS_INVALID_HANDLE. Хендл считается валидным, но его название пустое.
0
mss
2634 / 2258 / 276
Регистрация: 24.12.2010
Сообщений: 13,725
17.01.2016, 21:32 42
Цитата Сообщение от EEjester Посмотреть сообщение
он не возвращает STATUS_INVALID_HANDLE
На основании чего сделано такое умозаключение ?
0
AngryBSOD
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 5
17.01.2016, 21:32 43
Цитата Сообщение от mss Посмотреть сообщение
EEjester, ну сходи во Фриланс, раз уж совсем ступор и невтерпеж ..
Простая же причина - NtQueryObject вернула STATUS_INVALID_HANDLE)
Не думаю, что он настолько туп, что бы посмотреть lastError
0
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
17.01.2016, 21:34  [ТС] 44
Цитата Сообщение от mss Посмотреть сообщение
На основании чего сделано такое умозаключение ?
Delphi
1
2
3
    if(hProcess <> INVALID_HANDLE_VALUE) then  //Check valid handle
    begin
      ShowMessage('ok');
вот так выдает ok.
0
mss
2634 / 2258 / 276
Регистрация: 24.12.2010
Сообщений: 13,725
17.01.2016, 21:44 45
Ну и причем здесь hProcess, если речь идет о NtQueryObject ?

Добавлено через 5 минут
либо STATUS_INVALID_INFO_CLASS возвращает
0
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
17.01.2016, 21:45  [ТС] 46
Выдает yes:
Delphi
1
2
  HDummy      := NTQueryObject(hObject, objInfoClass, pObjectInfo,dwSize, @dwSize);
  if (HDummy <> INVALID_HANDLE_VALUE) then ShowMessage('yes');
0
mss
2634 / 2258 / 276
Регистрация: 24.12.2010
Сообщений: 13,725
17.01.2016, 21:53 47
Ты отладчиком вообще намерен пользоваться или нет ?

if (HDummy <> INVALID_HANDLE_VALUE)
Вот с какого перепугу ты трактуешь результат, возвращенный NtQueryObject, как хендл ?
Прокомментируй движение своей мысли ..
0
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
17.01.2016, 21:55  [ТС] 48
Цитата Сообщение от mss Посмотреть сообщение
Прокомментируй движение своей мысли ..
вот из за этого
Цитата Сообщение от AngryBSOD Посмотреть сообщение
Простая же причина - NtQueryObject вернула STATUS_INVALID_HANDLE)
0
mss
2634 / 2258 / 276
Регистрация: 24.12.2010
Сообщений: 13,725
17.01.2016, 22:28 49
Так статус же она возвращает, а не хендл)
Тоже самое касается NtQuerySystemInformation.
А у тебя с какого-то перепугу
TNtQuerySystemInformation=function (SystemInformationClassWORD; SystemInformationointer; SystemInformationLengthWORD; ReturnLength:PDWORD):THandle; stdcall;
TNtQueryObject =function (ObjectHandle:cardinal; ObjectInformationClass:OBJECT_INFORMATION_CLASS; ObjectInformationointer; Length:ULONG;ResultLength:PDWORD): THandle; stdcall;
Добавлено через 21 минуту
NTSTATUS = Cardinal;

TNtQuerySystemInformation=function (SystemInformationClassWORD; SystemInformationointer; SystemInformationLengthWORD; ReturnLength:PDWORD):NTSTATUS; stdcall;

TNtQueryObject =function (ObjectHandle:cardinal; ObjectInformationClass:Cardinal; ObjectInformationointer; Length:ULONG;ResultLength:PDWORD):NTSTATUS;stdcall;
0
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
17.01.2016, 22:38  [ТС] 50
Заменил
Delphi
1
:THandle; stdcall;
на
Delphi
1
:Cardinal; stdcall;
в
Delphi
1
2
 TNtQuerySystemInformation=function (SystemInformationClass:DWORD; SystemInformation:pointer; SystemInformationLength:DWORD;  ReturnLength:PDWORD):Cardinal; stdcall;
 TNtQueryObject           =function (ObjectHandle:cardinal; ObjectInformationClass:OBJECT_INFORMATION_CLASS; ObjectInformation:pointer; Length:ULONG;ResultLength:PDWORD):Cardinal; stdcall;
Ничего не поменялось... по прежнему не работает.
0
Storm Screamer
100 / 106 / 14
Регистрация: 21.04.2013
Сообщений: 1,284
18.01.2016, 07:25 51
У тебя задача какая? Удалить мьютекс?

Зайди с другой стороны, отреверси программу и удали вызов функции CreateMutex
0
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
18.01.2016, 07:50  [ТС] 52
Цитата Сообщение от Storm Screamer Посмотреть сообщение
Зайди с другой стороны, отреверси программу и удали вызов функции CreateMutex
Этот вариант намного проще, но к сожалению отпадает. Цифровая подпись программы должна остаться.

Добавлено через 6 минут
Цитата Сообщение от Storm Screamer Посмотреть сообщение
У тебя задача какая? Удалить мьютекс?
Удалить мутекс созданный ЧУЖИМ процессом.
p.s: инжект в этот процесс реализован.
0
mss
2634 / 2258 / 276
Регистрация: 24.12.2010
Сообщений: 13,725
18.01.2016, 08:18 53
Цитата Сообщение от EEjester Посмотреть сообщение
Ничего не поменялось... по прежнему не работает
Так и говорит "не работаю" ?)
0
EEjester
1 / 1 / 5
Регистрация: 28.03.2013
Сообщений: 299
18.01.2016, 08:46  [ТС] 54
Просто не делает то что нужно.
0
mss
2634 / 2258 / 276
Регистрация: 24.12.2010
Сообщений: 13,725
18.01.2016, 08:57 55
Ну а отладчик на что ?)
Пройдись пошагово и выясни где и что делает не то что нужно ..
0
FIL
18.01.2016, 09:14     Удалить чужой mutex
  #56
 Комментарий модератора 
Тема создана во фрилансе.
Закрыто.
0
18.01.2016, 09:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2016, 09:14
Привет! Вот еще темы с ответами:

Запись всех компонентов чужой формы
Здравствуйте, мне надо в memo записать все компоненты не моей формы. Сначала...

Законно ли копирование интерфейса чужой программы
Здравствуйте. Никто случайно не знает? Законно ли копирование интерфейса чужой...

Отрисовать целую рамку с текстом в чужой программе
Читал учебник по OpenGL и заинтересовала эта тема, а точнее этот код: ...


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

Или воспользуйтесь поиском по форуму:
56
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru