Много «printf» в ollydbg, но только один «printf» в a.exe - PullRequest
0 голосов
/ 29 сентября 2018

Вот краткий код c:

#include <stdio.h>
int main()
{
    printf("abcdefg\n");
    return 0;
}

, когда я открываю его с помощью ollydbg, а затем набираю E (исполняемый модуль), щелкните правой кнопкой мыши на модуле и выберите «просмотреть исполняемый файл».он покажет следующее окно: enter image description here

Однако, когда я нажимаю Ctrl + B для поиска 'printf', я получаю три результата (Ctrl + L найдет следующее)

Мой вопрос:

  • В моем коде есть только одна функция 'printf', почему я могу найти 3 'printf' в ollydbg.

1 Ответ

0 голосов
/ 29 сентября 2018

Я предполагаю, что когда вы включаете stdio.h, оно должно содержать больше вхождений строки printf, скомпилированный источник - это не только ваш источник, но и все, что вы включаете.

Я не думаю, что именафункции должны быть включены в двоичный файл (но я не эксперт), я думаю, единственная причина, по которой они там есть, это то, что вы скомпилировали его с опциями отладки.Вы можете легко проверить это, скомпилировав бинарный файл без отладчика и проверив исполняемый файл с помощью какого-либо hex редактора .

Я рекомендую изучить , как работают компиляторы? .Ссылка, которую я отправил, может быть хорошей отправной точкой для изучения.

...