Загрузка...

[TRASH CODE #5] Disable CRT and optimize our project.

Thread in C/C++ created by ПереигралВсех Mar 13, 2022. 1033 views

  1. ПереигралВсех
    ПереигралВсех Topic starter Mar 13, 2022 Banned 1098 Feb 9, 2020
    Всем привет, в этой статье разберём способ отключения стандартных библиотек в нашем проекте.
    Для начала запустим VS Studio, я использую Visual Studio 2022.

    После создадим пустой проект.
    Далее жмём ПКМ по названию проекта => свойства

    Настраиваем по порядку.

    ========================
    Свойства => C++ => Оптимизация
    Оптимизация: Максимальная оптимизация (приоритет размера) (/O1)
    Развертывание подставляемых функций: Отключено (/Ob0)
    Включить подставляемые функции: Нет
    Предпочитать размер или скорость: Предпочитать краткость кода (/Os)
    Оптимизация всей программы: Да (/GL)

    [IMG]
    ========================

    ========================
    Свойства => C++ => Создание кода
    Включить С++ исключения: Нет
    Библиотека времени выполнения: Многопоточная (/MT)
    Проверка безопасности: Отключить проверку безопасности (/GS-)

    [IMG]
    ========================

    ========================
    Свойства => C++ => Язык
    Включить информацию о типах времени выполнения: Нет (/GR-)

    [IMG]
    ========================

    ========================
    Свойства => C++ => Командная строка
    Дополнительные параметры: /Gw

    [IMG]
    ========================

    ========================
    Свойства => Компоновщик => Общее
    Включить инкрементную компоновку: Нет (/INCREMENTAL:NO)

    [IMG]
    ========================


    ========================
    Свойства => Компоновщик => Ввод
    Игнорировать все стандартные библиотеки: Да (/NODEFAULTLIB)

    [IMG]

    ========================

    ========================

    Свойства => Компоновщик => Файл манифеста
    Создать манифест: Нет (/MANIFEST:NO)

    [IMG]
    ========================


    ========================
    Свойства => Компоновщик => Отладка
    Создать отладочную информацию: Нет

    [IMG]
    ========================

    ========================
    Свойства => Компоновщик => Дополнительно
    Точка входа: _EntryPoint

    [IMG]
    ========================

    ========================
    Свойства => Компоновщик => Командная строка
    Дополнительные параметры: /EMITPOGOPHASEINFO

    [IMG]
    ========================

    Базовая настройка готова!


    Наша точка доступа теперь выглядит так:
    [IMG]

    Вес файла равен 1.5кб, вместо 9кб.

    Настройка готова, давайте попробуем вывести текст в консоль.
    Сразу скажу, мы не сможем использовать стандартные функции по типу std::cout.
    [IMG]

    Нам стоит заглянуть в документацию WinApi, и найти что-то там.


    Создадим указатель VOID, и напишем в нём код:
    C
    VOID WriteLine(PCSTR szFormat, ...)

    {
    va_list arglist;
    va_start(arglist, szFormat);

    char Buffer[1024];

    DWORD cbBuffer = wvsprintfA(Buffer, szFormat, arglist);

    if (cbBuffer) {
    WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), Buffer, cbBuffer, &cbBuffer, NULL);
    }
    }
    Возвращаемся в точку входа, и пишем
    WriteLine("Hello LZT!");


    Компилируем код, и получаем результат:

    [IMG]
     
  2. unnamed001
    unnamed001 Mar 15, 2022 5996 Sep 2, 2020
    На бхф же была такая же тема
     
    1. ПереигралВсех Topic starter
      unnamed001, ну охуеть можно, что тут ещё сказать...
Top
Loading...