Исследование кода, генерируемого Delphi 3

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Оформил: DeeCo

Автор: http://www.cracklab.narod.ru

Часть 3. Интерфейсы и published свойства Итак, мы уже знаем, как найти VTBL. Но в каком порядке хранятся в ней методы ? Ответ можно получить, посмотрев на ассемблерный листинг и сравнив его с исходным кодом VCL. И выяснится, что новые методы дописыватся в конец VTBL, по мере произведения новых классов. Я проследил генеалогию классов до TWinControl и вот что у меня получилось (цифра означает смещение в VTBL):

TObject

Виртуальные методы этого класса расположены в VTBL по отрицательным индексам. Смотрите моё описание RTTI в предыдущей статье

TPersistent

0x00 AssignTo

0x01 DefineProperties

0x02 Assign

TComponent

В нём, помимо всего прочего, реализуется также интерфейсы IUnknown

Добавить комментарий