Информация об изменениях

Сообщение Re[3]: Узнать адрес, откуда вызвали от 19.06.2023 7:13

Изменено 19.06.2023 7:19 rg45

Re[3]: Узнать адрес, откуда вызвали
Здравствуйте, пффф, Вы писали:

R>>Я о такой возможности не знаю (легально и без хаков).


П>Ну хорошо, а как нелегально и с хаками?


Ну для этого нужно закладываться на какой-то конкретный прокол вызова (cdecl, stdcall, fastcall, etc.), вдобавок нужно быть уверенным, что функция не заинлайнилась, потом, через анализ содержимого регистров (ESP, EBP, etc) можно будет вытащить адрес возврата. Я с этим баловался давненько, сейчас сходу всех деталей и не припомню уже.
Re[3]: Узнать адрес, откуда вызвали
Здравствуйте, пффф, Вы писали:

R>>Я о такой возможности не знаю (легально и без хаков).


П>Ну хорошо, а как нелегально и с хаками?


Ну для этого нужно закладываться на какой-то конкретный прокол вызова (cdecl, stdcall, fastcall, etc.), вдобавок нужно быть уверенным, что функция не заинлайнилась, потом, через анализ содержимого регистров (ESP, EBP, etc), с учетом размера стека, занимаемого параметрами и локальными переменными, можно будет вытащить адрес возврата. Я с этим баловался давненько, сейчас сходу всех деталей и не припомню уже. Самый простой путь — написать функцию-прототип и посмотреть асемблерный код, как она устроена.