Сейчас на форуме: asfa, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Объясните пожалуйста про Mutex
Посл.ответ Сообщение

Ранг: 7.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 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 ?




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 15 сентября 2013 01:03
· Личное сообщение · #2

> что произошло в памяти в этом момент после вызова CreateMutexA

Ядро создало обьект, к памяти никакого отношенья он не имеет. Хотя на ядерном уровне могут и быть какие синхронизации, но для юзермода это не заметно.

> \BaseNamedObjects\7399BC44-90CF-4372-8B56-416B8513B378 ?

Имя обьекта.

> Тоже не пойму, что в этом момент происходит, а особенно если в это время выполняется параллельно код, то как его найти и как вообще исследовать, как действовать в OllyDBG ?

Ну что ту сказать. Учите матчасть.



Ранг: 18.8 (новичок), 21thx
Активность: 0.030
Статус: Участник

Создано: 15 сентября 2013 05:16
· Личное сообщение · #3

Порой это ведёт лишь к недопусканию создания ещё одного процесса, в подавляющем большинстве случаев проверяется не создан ли уже данный объект и если создан, то выход из программы, бряк на доступ к строке, которая в параметрах передаётся, и анализ кода помогут. Dr0p (он же Clerk) получше в этом вопросе подкован, как смотрю)




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 15 сентября 2013 06:00 · Поправил: plutos
· Личное сообщение · #4

Тут кое-что обьясняется:

--> http://www.alienvault.com/open-threat-exchange/blog/windows-kernel-objects<--
А еще глянь знаменитую книгу Свена Шрайбера. В ней целая глава посвящена kernel objects.

-----
Give me a HANDLE and I will move the Earth.




Ранг: 7.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 сентября 2013 21:20
· Личное сообщение · #5

Я уяснил теперь, спасибо. Но теперь к делу. У меня создается в исследуемом модуле несколько мьютексов. Из названия я даже вижу, какой меня интересует. Но раз основном модуле вызывается WaitForSingleObject, то значит управление передается какому-то процессу. Но не было до этого вызвано ни CreateProcessA или CreateProcessW. И как мне понять, куда передается управление? Какое могут быть варианты, что посоветуете?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 сентября 2013 22:48
· Личное сообщение · #6

У тебя что, 1 процесс на всём компьютере, что больше некому процессор занять? Idle тогда будет в пустом цикле его гонять. Почитал бы основы, что ли, мсдн на худой конец.

| Сообщение посчитали полезным: plutos


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 15 сентября 2013 22:59 · Поправил: OnLyOnE
· Личное сообщение · #7

Archer
ну зачем мсдн? Если есть кому разжевать и в рот положить))) Главное - чтобы переварилось))

-----
aLL rIGHTS rEVERSED!


| Сообщение посчитали полезным: plutos


Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 15 сентября 2013 23:03 · Поправил: Dr0p
· Личное сообщение · #8

OnLyOnE

А вот я нихуя #5 не понял. Хоть и ядерщик. Всё же корректный вопрос это часть ответа

Ладно похуй, обьясняю.

Обьект может быть именован, а может быть и нет. Если он именован, то он глобален в системе. Имя обьекта состоит из директорий и собственно имени. Директория тоже обьект и имеет имя.

Мьютекс это синхрообьект, их множество. Они могут использоваться для межпроцессорных синхронизаций. Обычно в этом случае юзается проверка обьктов, созданных клоном. Нормальное приложенье для сей цели юзает атомы. Это не синхрообьект.

Если есть цель обмена нанными, то ось предоставляет множество механизмов. Есть обьект EventPair, как пример - два евента для синхронного обмена данными. Критическая секция также может быть глобальной(межпроцессорной).

В общем синхронизация тема довольно сложная. По своей сути ядро предоставляет лишь не много возможностей. NtSetEventBoostPriority - единственная апи, позволяющая управлять очередью.

Короче говоря с вашими нулевыми знаниями ничего не будет. Есть реальные доки, которые вам следует изучать. А про мсдн забудьте - это унылое гавно!



3827_15.09.2013_EXELAB.rU.tgz - sem.pdf

| Сообщение посчитали полезным: plutos, Abraham


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 15 сентября 2013 23:29
· Личное сообщение · #9

Dr0p
Есть реальные доки, которые вам следует изучать.
Учите матчасть

+1!

Ну это один из тех случаев, когда человеку дают ссылки, советуют почитать основы, учить матчасть и т.д.
Не проходит и дня, человек возвращается и говорит: "Ну, бля, все прочитал! Да, значит, теперь следующий вопрос..."

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: Dr0p, Abraham


Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 15 сентября 2013 23:38 · Поправил: Dr0p
· Личное сообщение · #10

plutos

Это не нужно читать, это нужно осознать. Поймите разницу наконец.

Я читал войну и мир, но не знаю вообще что это за хуйня. Вот и делайте выводы

Пруфец вам годный в тему http://www.youtube.com/watch?v=9er87HGAK1s

Большинство думает что инде сторчался и ничего не изучает. Они глубоко заблуждаются. Я изучаю каждый день тонны матчасти. Например сегодня с 7 утра и до ~13 я провёл за пиленьем кода, в отладчике и проюзал вдоль и поперёк многократно матчасть. С этого вам следует брать пример. Хотя результата я не достиг, но это укрепило знание.

| Сообщение посчитали полезным: SegFault


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 16 сентября 2013 00:13
· Личное сообщение · #11

Dr0p: Поймите разницу наконец

ДрОп, я как-то немного, того, сбит с толку...
Я ведь с вами и не спорил, а наоборот, совершенно соглашался в данном случае, зачем же мне еще и какие-то proofs?
Я уважаю людей знающих и постоянно ищущих новых знаний. Вы как раз один из таких людей и внушаете мне, в частности, огромное уважение (особенно когда не ругаетесь матом где надо и где не надо и не кроете правого и виноватого).
А за pdf отдельное спасибо!

-----
Give me a HANDLE and I will move the Earth.



 eXeL@B —› Вопросы новичков —› Объясните пожалуйста про Mutex
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати