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

 eXeL@B —› Вопросы новичков —› Нет символьных имен функций в Olly
Посл.ответ Сообщение

Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 февраля 2008 11:21
· Личное сообщение · #1

Видел, но не могу найти, как получить отладочную информацию по exe | dll. Пример был для SoftIce. Перекомпилировался exe так, что вместо числовых адресов были символьные имена переменных и функций. Повторите, пожалуйста, как это сделать. Есть ли подобное для Olly? Столкнулся с такой проблемой по следующему поводу: реверсил приложение на предмет обнаружения момента переключения на fullscreen. Инициализация видеорежима выполнялась какой-то функцией из ddraw.dll. Функция была чисто адресная, без какого-либо названия и определения переменных, ей передаваемых, ну типа как неизвестная. Потом уже из этой функции вызывалась где-то USER32@ChangeDisplaySettingsA. Функции из DDRAW передавалась какая-то структура. И вот как определить, что это за функция DDRAW и где в этой немаленькой структуре флажок про fullscreen.




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

Создано: 25 февраля 2008 15:08
· Личное сообщение · #2

Есть отладочные символы, файлы с расширением pdb, в них содержаццо как раз символьные названия. А вот их надо поискать. Для мелкомягких файлов мона слить через Symbol Retriever сайсовый, а если файл чужой-вряд ли найдёшь.



Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 февраля 2008 15:25
· Личное сообщение · #3

Короче, вопрос ребром. Как поставить bp на SetCooperativeLevel в Olly? Какие lib-ы импортировать, в какой dll искать и т.п.



Ранг: 284.8 (наставник), 6thx
Активность: 0.150
Статус: Участник

Создано: 25 февраля 2008 17:08
· Личное сообщение · #4

Что-то я о такой функции в WIN API не слышал, может эт в твоей библе такая функа есть ( ну или сторонних)!!!
если да, тогда (думаю самый простой вариант, если у функции библы есть имя) :

1) Options->Debugging options->Break on new module dll ( ставишь галку )
2) жмешь Shift+F9 пока в списке не появится твоя длл.
3) по ней правым кликом View Names(Ctrl+N) и там бряк на свою функу!!!



Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 февраля 2008 22:10
· Личное сообщение · #5

Это самая что ни на есть стандартная DirectDraw-ская функция.
Из MSDN:
HRESULT SetCooperativeLevel(
HWND hWnd,
DWORD dwFlags
);
По идее должна быть в ddraw.dll. Но ее там нет.
Как я понимаю, с помощью DirectDrawCreate создается DirectDraw объект. У этого объекта есть метод SetCooperativeLevel, в котором и устанавливается видеорежим fullscreen. Вот и хочется отловить выполнение этого метода, чтобы поменять флаг DDSCL_FULLSCREEN на DDSCL_NORMAL. DDRAW@DirectDrawCreateEx ловится нормально, а где ловить SetCooperativeLevel? Я так понимаю, почему то этот метод не экспортируется обычным образом. Метод вызывается чисто по адресу, Olly не понимает, что это SetCooperativeLevel. Вот вслепую и ладишь в дебрях DDRAW, не видя символьных названий, не понимая что к чему. Хочется, чтобы Olly втыкала такие методы и переменные, которые им передаются. Ибо методы стандартные.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 05 марта 2008 17:42
· Личное сообщение · #6

Clim пишет:
По идее должна быть в ddraw.dll. Но ее там нет.

Ты правильно все написал про объкты - там совсем другой механизм вызова. Это ActiveX/OCX
Подробнее читай на форумах программистов на DirectX, а если коротко - у этого объекта
есть большая табличка методов - там и лежат их адреса. Причем это не совсем адреса
подпрограммы - вызов этих методов осуществляется иначе. Я пытался отлаживать внутренности -
логика там такая : прога готовит нужные структуры и выходит. Обработка идет асинхронно,
т.к. все завязано на видео-память и внутренние алгоритмы самой видео-карты.


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


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