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

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

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

Создано: 26 марта 2010 13:00
· Личное сообщение · #1

Трассирую вызов API, в результате получаю:
Code:
  1. 007A45AC Main     MOV EDI,EDI
  2. 007A45AE Main     PUSH EBP
  3. 007A45AF Main     MOV EBP,ESP                               ; EBP=0012F1C4
  4. 007A45B1 Main     SUB ESP,44
  5. 007A45B4 Main     JMP COMCTL32.773D53D5
  6. 773D53D5 Main     PUSH EBX
  7. 773D53D6 Main     MOV EBX,DWORD PTR SS:[EBP+8]              ; EBX=001C8E18
  8. 773D53D9 Main     PUSH ESI
  9. 773D53DA Main     LEA EAX,DWORD PTR SS:[EBP+8]              ; EAX=0012F1CC
  10. 773D53DD Main     PUSH EAX
  11. 773D53DE Main     PUSH COMCTL32.773C3D64
  12. 773D53E3 Main     PUSH EBX
  13. 773D53E4 Main     XOR ESI,ESI    

ну думаю осталось имя функции определить открываю в Иде COMCTL32.dll и вижу адрес загрузки совсем другой 5D5B1000, ладно смотрю адрес загрузки этой библиотеки в программе 773C0000, загружаю в Иде с этого адреса иду по джампу туда(JMP COMCTL32.773D53D5) и вижу..... мимо, ладно визуально просмотрел все функции и нашел ее по адресу 773D91C9, нашел разницу презагрузил в Иде, все хорошо теперь по джампу попадаю в нужную функцию. Трассирую следующую функцию, прехожу по адресу....и снова мимо. Получается у всех функций именно в этой библиотеке поменялись адреса. Что это за хрень и как с ней бороться? Как то не хочется искать все вручную.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




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

Создано: 26 марта 2010 19:21
· Личное сообщение · #2

gena-m
> Что это за хрень и как с ней бороться?
Эта не хрень, а релокация. С ней не борятся, а используют её.



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 26 марта 2010 20:11
· Личное сообщение · #3

Clerk пишет:
Эта не хрень, а релокация


Может ли быть такая разница (773D53D5 и 773D91C9) из-за релоков? Разве не должно быть кратно 1000?

gena-m
Ты смотришь разные COMCTL32. Та, которая из system32, грузится по своей базе (5d5b0000), по 773c0000 грузится из winsxs...



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

Создано: 26 марта 2010 22:10
· Личное сообщение · #4

SVLab
Ты смотришь разные COMCTL32. Та, которая из system32, грузится по своей базе (5d5b0000), по 773c0000 грузится из winsxs...

Да, действительно там две библиотеки нашел COMCTL32 - одна из них она !!!
Спасибо.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше



 eXeL@B —› Вопросы новичков —› Адрес функции в dll.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати