
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.87] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Не понимаю откуда вызывается функция f12. Смотрю ссылки на нее: https://disk.yandex.ru/i/crsvYi4QLBE6dQ т.е. напрямую ее никто не вызывает. Как я понимаю остается два варианта ее вызова: 1) Не прямой вызов через смещение к vftable; Правильно я понимаю, что без отладки определить откуда ее вызывают невозможно? Правильно я понимаю, что найти ее vftable тоже не возможно? Если смотреть вот ту ссылку (.rdata:0000000180B98A68 dq offset f12), то судя по внешнему виду это не vftable. Так? https://disk.yandex.ru/i/DWfDOfycDgdG3g 2) Т.к. это все в dll, то функция f12 может вызываться из вне, но судя по таблице экспорта из вне она не доступна. https://disk.yandex.ru/i/88nKSjxT_bFJvw Как же понять откуда она вызывается? |
![]() |
Сообщ.
#2
,
|
|
Учитывая, что это имеет отношение к SEH, и там массив указателей, она запросто может активизироваться косвенным вызовом. Когда какая-нибудь RtlUnwind() будет перебирать обработчики в поисках подходящего, таковым может оказаться и f12().
Как вариант – это список деструкторов, и f12 один из них. Они активизируются, когда их объекты полностью сконструированы и потому помечены как подлежащие удалению при размотке стека в процессе отката фреймов. Но тогда странно, что f12() нигде больше не упоминается. |