Знает ли кто-нибудь, если/как я могу читать из callstack с определенного адреса? Предположим, у меня есть адрес смещения от базового адреса callstack, как я могу получить базовый адрес?Callstack address
спасибо :)
Знает ли кто-нибудь, если/как я могу читать из callstack с определенного адреса? Предположим, у меня есть адрес смещения от базового адреса callstack, как я могу получить базовый адрес?Callstack address
спасибо :)
Это сильно зависит от платформы, на которой ABI исполняемый работает. Я бы рекомендовал использовать один из доступных инструментов разборки для вашей платформы по выбору, эти инструменты обычно могут помочь получить такую информацию. Например, IDA Pro для Windows и Linux.
Я использую C++ на окнах, и я пытаюсь сделать это программно ... – Idov
@Idov: все же вы должны использовать инструмент разборки, чтобы увидеть смещения, которые вас интересуют. Я сомневаюсь, что вы получите поваренную книгу решение здесь на SO –
Я использую StackWalk64 для получения смещения. :) – Idov
В окнах, у вас есть API ходить полный стек вызовов:
Посмотреть этот пример в codeproject.com
Я знаю, но мне нужен абсолютный адрес указателя рамки. :) – Idov
Извините, у меня нет окна Windows, чтобы попробовать это сразу, но не параметр Offset внутри ADDRESS64 вернулся для AddrFrame именно так, как вы хотите? Если вы не используете старую модель памяти, это будет прямо абсолютная позиция указателя кадра. Я ошибаюсь? :) – Javier
AddFrame, возвращенный из StackWalk, содержит только «смещение» ... – Idov
базового адреса стека в регистре ESP на архитектуре x86 Windows. Вы можете просмотреть ESP в «Registers» Windows отладчика VS
Итак, если у меня есть относительный адрес указателя кадра некоторого метод (возвращаемый StackWalk64), все, что мне нужно сделать, чтобы получить его абсолютный адрес, добавляет отношение к ESP? – Idov
Прошу прощения, если это глупый вопрос, но я немного запутался прямо сейчас ... – Idov
В x86 стек растет из более высокой памяти в более низкую память. Так что из EBP вам действительно нужно будет вычесть/(или из ESP вы пришлось бы добавить) – Chubsdad
C++ на окнах. – Idov