![]() |
eXeL@B —› Вопросы новичков —› Объясните пожалуйста про Mutex |
Посл.ответ | Сообщение |
|
Создано: 14 сентября 2013 23:42 · Поправил: Robix · Личное сообщение · #1 Привет. Объясните пожалуйста про Mutex. Все строчки взяты из Olly. Вызывается значит ф-ция CreateMutexA и в хэндлах появляется запись: 00001C84 Mutant 3. 001F0001 \BaseNamedObjects\7399BC44-90CF-4372-8B56-416B8513B378 00001C84 - Это хэндл мутекса. 1. Меня интересует, что произошло в памяти в этом момент после вызова CreateMutexA, и что значит запись \BaseNamedObjects\7399BC44-90CF-4372-8B56-416B8513B378 ? Потом вызывается ф-ция WaitForSingleObject, где в параметре указан хэндл созданного мутекса. B стеке такие параметры 0BB1FCA8 00001BBC |hObject = 00001C84 0BB1FCAC FFFFFFFF \Timeout = INFINITE 2. Тоже не пойму, что в этом момент происходит, а особенно если в это время выполняется параллельно код, то как его найти и как вообще исследовать, как действовать в OllyDBG ? ![]() |
|
Создано: 15 сентября 2013 01:03 · Личное сообщение · #2 > что произошло в памяти в этом момент после вызова CreateMutexA Ядро создало обьект, к памяти никакого отношенья он не имеет. Хотя на ядерном уровне могут и быть какие синхронизации, но для юзермода это не заметно. > \BaseNamedObjects\7399BC44-90CF-4372-8B56-416B8513B378 ? Имя обьекта. > Тоже не пойму, что в этом момент происходит, а особенно если в это время выполняется параллельно код, то как его найти и как вообще исследовать, как действовать в OllyDBG ? Ну что ту сказать. Учите матчасть. ![]() |
|
Создано: 15 сентября 2013 05:16 · Личное сообщение · #3 Порой это ведёт лишь к недопусканию создания ещё одного процесса, в подавляющем большинстве случаев проверяется не создан ли уже данный объект и если создан, то выход из программы, бряк на доступ к строке, которая в параметрах передаётся, и анализ кода помогут. Dr0p (он же Clerk) получше в этом вопросе подкован, как смотрю) ![]() |
|
Создано: 15 сентября 2013 06:00 · Поправил: plutos · Личное сообщение · #4 Тут кое-что обьясняется: А еще глянь знаменитую книгу Свена Шрайбера. В ней целая глава посвящена kernel objects. ----- Give me a HANDLE and I will move the Earth. ![]() |
|
Создано: 15 сентября 2013 21:20 · Личное сообщение · #5 Я уяснил теперь, спасибо. Но теперь к делу. У меня создается в исследуемом модуле несколько мьютексов. Из названия я даже вижу, какой меня интересует. Но раз основном модуле вызывается WaitForSingleObject, то значит управление передается какому-то процессу. Но не было до этого вызвано ни CreateProcessA или CreateProcessW. И как мне понять, куда передается управление? Какое могут быть варианты, что посоветуете? ![]() |
|
Создано: 15 сентября 2013 22:48 · Личное сообщение · #6 У тебя что, 1 процесс на всём компьютере, что больше некому процессор занять? Idle тогда будет в пустом цикле его гонять. Почитал бы основы, что ли, мсдн на худой конец. ![]() |
|
Создано: 15 сентября 2013 22:59 · Поправил: OnLyOnE · Личное сообщение · #7 Archer ну зачем мсдн? Если есть кому разжевать и в рот положить))) Главное - чтобы переварилось)) ----- aLL rIGHTS rEVERSED! ![]() |
|
Создано: 15 сентября 2013 23:03 · Поправил: Dr0p · Личное сообщение · #8 OnLyOnE А вот я нихуя #5 не понял. Хоть и ядерщик. Всё же корректный вопрос это часть ответа ![]() Ладно похуй, обьясняю. Обьект может быть именован, а может быть и нет. Если он именован, то он глобален в системе. Имя обьекта состоит из директорий и собственно имени. Директория тоже обьект и имеет имя. Мьютекс это синхрообьект, их множество. Они могут использоваться для межпроцессорных синхронизаций. Обычно в этом случае юзается проверка обьктов, созданных клоном. Нормальное приложенье для сей цели юзает атомы. Это не синхрообьект. Если есть цель обмена нанными, то ось предоставляет множество механизмов. Есть обьект EventPair, как пример - два евента для синхронного обмена данными. Критическая секция также может быть глобальной(межпроцессорной). В общем синхронизация тема довольно сложная. По своей сути ядро предоставляет лишь не много возможностей. NtSetEventBoostPriority - единственная апи, позволяющая управлять очередью. Короче говоря с вашими нулевыми знаниями ничего не будет. Есть реальные доки, которые вам следует изучать. А про мсдн забудьте - это унылое гавно! ![]() ![]() |
|
Создано: 15 сентября 2013 23:29 · Личное сообщение · #9 Dr0p Есть реальные доки, которые вам следует изучать. Учите матчасть +1! Ну это один из тех случаев, когда человеку дают ссылки, советуют почитать основы, учить матчасть и т.д. Не проходит и дня, человек возвращается и говорит: "Ну, бля, все прочитал! Да, значит, теперь следующий вопрос..." ----- Give me a HANDLE and I will move the Earth. ![]() |
|
Создано: 15 сентября 2013 23:38 · Поправил: Dr0p · Личное сообщение · #10 plutos Это не нужно читать, это нужно осознать. Поймите разницу наконец. Я читал войну и мир, но не знаю вообще что это за хуйня. Вот и делайте выводы ![]() Пруфец вам годный в тему http://www.youtube.com/watch?v=9er87HGAK1s Большинство думает что инде сторчался и ничего не изучает. Они глубоко заблуждаются. Я изучаю каждый день тонны матчасти. Например сегодня с 7 утра и до ~13 я провёл за пиленьем кода, в отладчике и проюзал вдоль и поперёк многократно матчасть. С этого вам следует брать пример. Хотя результата я не достиг, но это укрепило знание. ![]() |
|
Создано: 16 сентября 2013 00:13 · Личное сообщение · #11 Dr0p: Поймите разницу наконец ДрОп, я как-то немного, того, сбит с толку... Я ведь с вами и не спорил, а наоборот, совершенно соглашался в данном случае, зачем же мне еще и какие-то proofs? Я уважаю людей знающих и постоянно ищущих новых знаний. Вы как раз один из таких людей и внушаете мне, в частности, огромное уважение (особенно когда не ругаетесь матом где надо и где не надо и не кроете правого и виноватого). А за pdf отдельное спасибо! ----- Give me a HANDLE and I will move the Earth. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Объясните пожалуйста про Mutex |