Ответы пользователя по тегу C++
  • Какой аналог php функции is_string() в ЯП С++?

    Справочник есть - MSDN.
    А проверять является ли переменная строкой в c++ не надо - т.к. у каждой переменной свой тип данных и сразу ясно строка перед нами (объект класса String) или нет. А если учесть то, что строка - массив символов, то, можно любую (грубо говоря) область памяти представить как массив char
    Ответ написан
  • Скрыть адрес вызываемой функции. С/C++?

    iNikNik
    @iNikNik Автор вопроса
    Я нашел решение: делаем указатель - глобальной переменной. А не локальной, как у нас было до этого.

    void (*gFunPtr)(int) = (void(*)(int)) ((int*)f+3); // Глобальная переменная

    И, тогда в функции foo2 :
    void foo2(int a)
    {
        void (*fptr)(int) = gFunPtr;
        ...
    }

    В release-сборке это присваивание будет выглядеть так:
    mov eax,[000403024]
    ...

    В свою очередь, по адресу 00403024 (это адрес нашей глобальной переменной gFunPtr) мы видим:
    6C104000
    Как известно у нас обратный порядок байт - следовательно в переменной gFunPtr содержится значение 0040106C. А это не что иное как:
    00401060(адрес функции f) + С (3 * sizeof int)
    Все получилось!)
    Ответ написан
    Комментировать