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

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


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

Создано: 02 июня 2008 00:19
· Личное сообщение · #1

Есть такая проблема. При запуске одна программка выдает ошибку
"Точка входа в процедуру GdiDrawStream не найдена в библиотеке DLL GDI32.dll"
Стало быть, она собрана для winXP, а у меня win2000.
Проверил файл GDI32.dll на наличие этой функции - нету. Проверил файл, который для винХП - есть функция.
Нужно как-то подменить вызов функции. Стало быть оптимальным вариантом является
огранизация джампа с функции в ИАТ на свой код, а в своем коде уже подключить вызов "правильной" длл-ки. Но что-то я не могу сообразить.
Вот параметры, которые посмотрел в ПеТулз.

Name RVA Size
--------------------- -------- -----------
Imports 0003AA00 000000A0
Import Addr Table 00039000 000003A8


Dll name Original First Thunk First Thunk
GDI.dll 0003AAB4 00039014

Программа IID King, кстати, не помогает. Так что я ока что затрудняюсь в дальнейших дествиях.
Буду рад, если подскажете решение проблемы




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

Создано: 02 июня 2008 08:22 · Поправил: s0larian
· Личное сообщение · #2

Ну во-первых тебе надо править импорт - убрать эту запись. Потом тебе надо написать новую .dll, в ней реализовать ф-цию, и добавить новую секцию в import. Проверь только что указатель вписывается по правильному адресу.

Кста, а как ты собираешься реализовывать её?




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

Создано: 02 июня 2008 11:29
· Личное сообщение · #3

s0larian
всмысле? у меня же есть dll-ка, которая от winXP, а в ней есть нужные функции.
Я и хотел сделать подмену вызова библиотек.



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

Создано: 02 июня 2008 14:09 · Поправил: RSI
· Личное сообщение · #4

Mavlyudov пишет:
у меня же есть dll-ка, которая от winXP


если она нормально работает, то почему бы просто не скопировать ее в папку с прогой, и прога по умолчанию сначала будет ее искать в своей папке, а затем уже в винде.

либо как вариант, если там функции в импорте для gdi не много, то просто ф хекс-редакторе измени имя скажем вместо, gdi32 на mygdi и напиши свою библу с такими функциями, чтобы была как фильтр, и переадресовывала вызовы в gdi32.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 02 июня 2008 17:31
· Личное сообщение · #5

скорее всего программа юзает темы WinXP и, следовательно, библиотеку UxTheme.dll
по-хорошему программа должна собираться так, чтобы UxTheme.dll была в Delay-load импорте, а в случае отсутствия длл, прост не использовать функционал UxTheme.dll
просто перекидыванием UxTheme.dll с WinXP на Win2k не даст поддержки тем
так что лови обращения к UxTheme.dll

-----
EnJoy!





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

Создано: 04 июня 2008 11:27
· Личное сообщение · #6

Jupiter
ты пправ, там именно эта либа юзается UxTheme.dl.
А как поймать намекни




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 04 июня 2008 22:23
· Личное сообщение · #7

либо дизасми файл в IDA и смотри, где вызваются функции из UxTheme
либо пиши автору проги - это для тебя будет проще

-----
EnJoy!





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

Создано: 05 июня 2008 13:41
· Личное сообщение · #8

Jupiter
Да я уже сделал. Просто удалил из импорта UxTheme.dll.


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


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