Сейчас на форуме: _MBK_, user99, ManHunter, Magister Yoda (+8 невидимых)

 eXeL@B —› Основной форум —› Помогите установить брекпоинт
Посл.ответ Сообщение

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

Создано: 27 сентября 2005 01:32
· Личное сообщение · #1

Есть программа, написана на Delphi, требований по установке Direct X или OpenGL отсутствуют. Графические файлы хранятся в упакованном виде во внешнем файле. Хочется определить место в программе где начинается вывод на экран картинки, а следовательно и адрес памяти где эта картинка хранится. Подскажите как написать точку останова в SoftIce.



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 27 сентября 2005 02:16
· Личное сообщение · #2

Benjamin
Раз файлы хранятся отдельно, то их нужно открыть, значит наверняка: CreateFileA
читаем из файла: ReadFile
Особые извращенцы могут заюзать: _lopen _lread

-----
Подписи - ЗЛО! Нужно убирать!




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

Создано: 27 сентября 2005 02:19
· Личное сообщение · #3

Benjamin

Если программа написана на Delphi попробуй прогнать через DeDe наверника ещё и компонентом пользовались стандартным.



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

Создано: 27 сентября 2005 02:49
· Личное сообщение · #4

Мне нужно определить точку вывода на экран. Какая стандартная процедура Windows это делает? Как на нее установить брекпоинт?



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

Создано: 27 сентября 2005 04:32
· Личное сообщение · #5

Benjamin пишет:
Мне нужно определить точку вывода на экран. Какая стандартная процедура Windows это делает?

Если под словом стандартная, имеется в виду документированная, то – никакая.
И вообще на экран выводит видеодрайвер, а перед ним куча виртуальностей.
Получаешь контекст устройства/отображения (или создаёшь его) передаёшь задание, а что там система колдует - хрен разберёшь.
Сам посуди, как в многозадачной системе разрулить один экран на всех?

Потыкайся в:
BeginPaint (начать рисование, то есть получить контекст клиентской области)
EndPaint (К этому времени объект уже выбран)
InvalidateRect (послать сообщение WM_PAINT)
GetDC (получить контекст)
CreateCompatibleDC (Создать контекст)

Ну и самая главная:
SelectObject (Собственно говоря выбор объекта для рисования)

Только объект выбирается по его хендлу.

А вообще: Iczelion, API урок 25.

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




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

Создано: 28 сентября 2005 09:37
· Личное сообщение · #6

В случае с OpenGL программа вызывает
glFlush
wglSwapBuffers и wglSwapLayerBuffers
Посмитрите, какие библиотеки присоединены к программе.
В случае с такими библиотеками OpenGL, DirectX и т.д.
ставить точки останова на вывод изображения ставить бесполезно,
лучше смотри алгоритм чтенния изображений из файла


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


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