Получение возвращаемых значений вызываемых функций из дампа памяти - PullRequest
0 голосов
/ 13 октября 2018

Если у меня есть, например:

#include <stdlib.h>
int f(void) { return 42; }
int g(void) { return 43; }
int main()
{
    if(f()!=g())
        abort();
}

Можно ли получить возвращаемые значения f() и g() из дампа памяти, не используя исходный код, назначающий их переменным?(int lhs, rhs; if((lhs=f())!=(rhs=g())) abort();)

1 Ответ

0 голосов
/ 13 октября 2018

Нет - даже без встраивания сравнение, скорее всего, будет скомпилировано как вычитание с последующим тестом против нуля, так что по крайней мере одно возвращаемое значение больше не присутствовало (в регистрах или в памяти) во время дампа.

При оптимизации даже сохранение значений в переменных не поможет: это наверняка устранит мертвые хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...