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

 eXeL@B —› Вопросы новичков —› BreakPoint на DLL_ATTACH в OllyDbg
Посл.ответ Сообщение

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

Создано: 27 февраля 2011 10:56
· Личное сообщение · #1

Не могу понять как поставить бп на длл аттач и длл детач, на EP пожалуйста. Вообщем помогите новичку =(




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

Создано: 27 февраля 2011 11:18
· Личное сообщение · #2

В настройках в эвентах вполне есть галка, останавливаться на загрузке или выгрузке длл. Нужен бряк на точку входа-смотри список модулей и там тыкай руками, при остановке на загрузке точка входа ещё не исполнялась. И почитай статьи, хотя бы основные по возможностям ольки, чтоб не задавать вопрос, где какая галка в настройках.



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

Создано: 27 февраля 2011 11:47
· Личное сообщение · #3

Тогда как ты можешь объяснить что в ЕР есть такая комманда? :
DisableThreadLibraryCalls();

Допустим код длл :
Code:
  1. BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
  2.                        DWORD reason        /* Reason this function is being called. */ ,
  3.                        LPVOID reserved     /* Not used. */ )
  4. {
  5.     КОД №1
  6.     switch (reason)
  7.     {
  8.       case DLL_PROCESS_ATTACH:
  9.         КОД №2;
  10.  
  11.       case DLL_PROCESS_DETACH:
  12.         break;
  13.  
  14.       case DLL_THREAD_ATTACH:
  15.         break;
  16.  
  17.       case DLL_THREAD_DETACH:
  18.         break;
  19.     }
  20.  
  21.     /* Returns TRUE on success, FALSE on failure */
  22.     return TRUE;
  23. }

Как код2 может быть выполнен раньше кода1? Я что то не врубаюсь...



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 27 февраля 2011 12:07 · Поправил: Clerk
· Личное сообщение · #4

Поставить брейк на LdrpCallInitRoutine(). Можно есчо в конфиге указать параметр "BreakOnDllLoad", тогда до нотификации сработает останов.

> Как код2 может быть выполнен раньше кода1? Я что то не врубаюсь...
Не может он выполниться раньше. Поток нормально свичи не проскакивает, это баги компилятора.



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

Создано: 27 февраля 2011 12:59
· Личное сообщение · #5

Ладно поставлю вопрос по другому, допустим у меня есть процесс, в этот процесс загружается длл с другого процесса, я поставил галочку в эвентах на "Break on new module" и оля удачно ловит загрузку длл в процесс, но проблема в том что далее при троссировке я в этот длл не попадаю, а начинаю тупо шагать по главному процессу, а мне нужно наоборот, что бы оля игнорировала всё кроме этого модуля, что бы тросировался только он.




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

Создано: 27 февраля 2011 13:27
· Личное сообщение · #6

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



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

Создано: 27 февраля 2011 13:41
· Личное сообщение · #7

Да, но тросируется длл только до RETa, далее снова, возвращяется в главный модуль, при этом длл совершает какие-то действия, как сделать так что бы олля игнориля всё кроме заинжекченного длл?




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

Создано: 27 февраля 2011 15:32
· Личное сообщение · #8

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




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

Создано: 28 февраля 2011 01:28
· Личное сообщение · #9

Skino пишет:
как сделать так что бы олля игнориля всё кроме заинжекченного длл?


Поставь мемори брейк на доступ к DLL (Set memory breakpoint on access) и будешь трейсить саму DLL по нажатию F9


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


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