По следам MS IE OBJECT tag exploit'а



            

Роем вглубь - часть 4


.text:75A9212B loc_75A9212B:

.text:75A9212B             test   cl, 1

.text:75A9212E             jz     short locret_75A92133

.text:75A92130             mov    eax, [eax+2Ch]

.text:75A92133

.text:75A92133 locret_75A92133:

.text:75A92133             retn

.text:75A92133 ?GetDocPtr@CElement@@QBEPAVCDoc@@XZ endp

Листинг 10 дизассемблерный текст функции CElement::GetDocPtr(void)

Функция проста как провинциальная девушка, приехавшая покорять Москву. Используя регистр ECX, как указатель на объект, она извлекает из него еще один указатель, грузит его в EAX, а затем, используя полученный EAX как указатель, возвращает в том же самом EAX указатель на объект, который она должна возвратить, но в нашем случае возвращается ноль, что указывает на разрушение сложной иерархии структур данных.

Дизассемблер не позволяет сказать на каком этапе произошло разрушение. Может быть разрушен как базовый блок, на который указывает ECX, так и блок, расположенный по адресу *(ECX+10h). А, быть может, разрушение произошло еще раньше, но программа рухнула только сейчас. Чтобы не гадать на кофейной гуще, воспользуемся just-in-time отладчиком, в роли которого выступит популярный OllyDbg (http://www.ollydbg.de/).




Содержание  Назад  Вперед