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

 eXeL@B —› Основной форум —› Бряки в user32?
Посл.ответ Сообщение

Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 18 февраля 2007 15:07 · Поправил: 0xy
· Личное сообщение · #1

...Случайно попался мне на глаза тутор RSI для новичков:
RSI пишет:
Теперь будем ставить бряк на MessageBoxA.
Что нам надо сделать:
1) Выбираем пункт View -> Exucutable Modules (Ctrl+E)
2) Ставим курсор на библиотеку USER32.DLL именно в ней находится данная функция
3) Нажимаем (Ctrl+N) это значит показать все функции данной библиотеки
4) В появившемся списке ищем MessageBoxA и ставим на нее курсор
5) Теперь ставим бряк на нее(F2)

Но ведь, насколько мне известно, на самом деле такое невозможно! Секции кода системных либ (kernel, user, gdi, vervion и еще нескольких)--READ ONLY--соответственно, int3 бряк не поставится. А железный обрабатывается криво: Оля его не перехватывает.
Можно разлочить, но брякать нужно оч аккуратно...
Или эта ироблема только в 9x, а в NT ее нет???



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 18 февраля 2007 20:00
· Личное сообщение · #2

1. Всё проще: ставим плаг CommandBar и пишем в нём "bp MessageBoxA". Всё. Int3-бряк будет на первой команде функции.
2. Каждый процесс обладает собственным виртуальным пространством. Насколько я понял, страница памяти, принадлежащая данному процессу, связана с физическим расположением общей для всех dll, до тех пор, пока ты не изменишь в ней хоть один байт. А потом эта страница копируется исключительно для данного процесса.
Как это было в Win9x понятия не имею =/.

-----
Всем привет, я вернулся




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

Создано: 18 февраля 2007 21:08
· Личное сообщение · #3

Собственно почему не льзя - постоянно такое делают. И на начало свободно ставится и на выход из ф-ии (RETN)




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 18 февраля 2007 21:33
· Личное сообщение · #4

gegter в 9X???
Только в 9X секции системных библ read only. Для отладки там создаются переходники, вот на эти переходники насколько я помню еще можно бряки ставить а дальше всё, болт.

-----
Yann Tiersen best and do not fuck




Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 19 февраля 2007 02:37
· Личное сообщение · #5

0xy пишет:
Или эта ироблема только в 9x, а в NT ее нет???

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

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 19 февраля 2007 08:43 · Поправил: 0xy
· Личное сообщение · #6

Bitfry пишет:
Насколько я понял, страница памяти, принадлежащая данному процессу, связана с физическим расположением общей для всех dll, до тех пор, пока ты не изменишь в ней хоть один байт. А потом эта страница копируется исключительно для данного процесса.

Если в NT это так, тогда понятно.

AlexZ пишет:
В восьмых виндах нельзя ставить бряки внутри системных либ (просто не встанут

Поставить то можно, но либа останется общей для всех процессов, со всеми вытекающими... Или ка-то можно получить ее персональный экземпляр???

PE_Kill пишет:
Для отладки там создаются переходники

А как они создаются? Я знаю только один способ: создать dll--переходник и пропатчить импорт в файле. Но если нсть прот--проверит crc, и



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 19 февраля 2007 09:06 · Поправил: AlexZ
· Личное сообщение · #7

0xy пишет:
Или ка-то можно получить ее персональный экземпляр???
Может как-то и можно.

Насколько я понял, страница памяти, принадлежащая данному процессу, связана с физическим расположением общей для всех dll, до тех пор, пока ты не изменишь в ней хоть один байт. А потом эта страница копируется исключительно для данного процесса.
Честно говоря, я всегда думал, что в ХР выинда выдаёт всем по экземпляру ДЛЛки зарание, а не при каких-то условиях.

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 63.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 19 февраля 2007 09:18
· Личное сообщение · #8

В ХР либы естесно не read - only. И естественно для каждого процесса существует своя копия dll. (не стоит понимать это буквально, тк. возможно смежное использование библиотек разными процессами, что не мешает в процессе отладки ставить бряки на вызовы для каждого отдельного процесса.)


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


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