Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Nouzui

    Теоретически - возможно, т.к. контейнер может хранить например указатели на функции или объекты с таблицами виртуальных функций. Но практически - гемора несравнимо больше чем со стеком, можно сказать просто из области фантастики. Если же в блоке хранятся не функциональные данные, то действительно никак. Можно конечно предположить что переполнение этих данных может привести к переполнению в другом месте, которое и приведет к исполнению какго-то кода. Но это всеравно что думать "а если завтра Луна упадет на Землю".
    Стек более уязвим потому что один и тот же участок используется всеми подряд. Ну и потому что там хранятся адреса переходов. Аллоцируемая же память либо имеет всего одно владельца, либо используется всеми владельцами с одной и той же целью (если конечно программист не му#аг). И спровоцировать передачу управления на какой-то адрес практически невозможно. Access violation и досвидания.
     
  2. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ну.. ты прям так в этом уверен
    небольшая коллекция ссылочек про переполнение статических буферов:
    http://securityvulns.ru/Gnews349.html
    http://www.securitylab.ru/vulnerability/200746.php
    http://www.hackzona.ru/hz.php?name=News&new_topic=42&pagenum=126 (Buffer Overflow для ddeshare.exe в Windows 2000)
     
  3. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    У кого есть ссылки на материал на работу с большими числами на С++. Оперировать с ними, приветствуеться любой материал, теория, примеры С. Но не Паскаль, и делфи... ибо в него не врубаю.
     
  4. FMeat

    FMeat New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    25
    Hi all & gg!
    Прога работает, посему меня и небыло. Празновал.

    Вообшем ещё вопросы.
    1. Как быть с функциями которые возрвщат значение, которое мне нужно использовать? То есть: если какая - то функция WinAPI ищет какиеето дики в системе, то как вывести это на экран? (Это к пример такой.)
    2. Какие стадии преобразований проходят с программой, пока из с++ кода она превратиться в бинарник?
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    - Препроцессирование (препроцессор обрабатывает директивы, производя замену макросов, включение файлов и некоторое другое)
    - Компиляция C++ в объектный файл OBJ, в котором будет машинный код, но с некоторыми неразрешенными ссылками, которые решаются на следующей стадии. Если найдена ошибка синтаксиса, процесс компиляции прерывается.
    - Компоновка (линковка) нескольких OBJ + системных LIB в выполняемый PE-файл с раширением либо DLL, либо EXE, либо SYS. Разрешаются неразрешенные в предыдущем пункте ссылки на системные и интермодульные символы. Если обнаруживаются ссылки, которые не были разрешены, процесс компоновки завершается. Создаются директории импорта, экспорта, на этом же этапе подключаются ресурсы (которые отдельно собираются компилятором ресурсов).
    На выходе готовый к выполнению бинарник
     
  6. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Подскажите вот какую вещь.

    В проге все нормально, работает как надо. Строю в конфиге Debug. Решил попробовать включить Release... И началось:

    Код (Text):
    1. ------ Build started: Project: loader, Configuration: Release Win32 ------
    2. Linking...
    3. x.obj : error LNK2001: unresolved external symbol _RtlInitUnicodeString
    4. x.obj : error LNK2001: unresolved external symbol _RtlNtStatusToDosError
    5. ...
    Код не трогал. В чем м.б. дело?...
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    __stdcall еще раз поставь..
     
  8. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Nouzui

    Спасибо. Буду знать, что эти настройки зависят от профиля билдера.
     
  9. FMeat

    FMeat New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    25
    Great
    Пасиба.
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Все это лежит в настройках текущего билда.
     
  11. Sharp

    Sharp New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    143
    Адрес:
    Ukraine
    http://www.swox.com/gmp/
     
  12. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    Подскажите пожалуйста, как убрать precompiled header directive.

    "Везде" советуют так:
    У меня (VC6) на вкладке C/C++ такого нет (если конечно там, смотрю: Project -> Settings(Alt+F7) -> C/C++ ).

    Зато есть:

    Preprocessor definitions:

    Project Options:

     
  13. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    И ещё хотелось бы узнать:
    1. какой минимальный набор ключей можно использовать в Project Options?
    2. это сюда нужно дописать /Fl , что бы получить ассемблерный листинг?
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    У меня тоже VC6
    Project -> Settings -> C++
    Category: Precompiled headers
    выбери Not using precompiled headers

    Прекомпилированные хидеры много места занимают, а пользы от них мало при малых размерах проги
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    как я делаю обычно:

    I. вкладка "C++":
    1) конфигурация Win32 - Release для конечного EXE (отладочная инфа не нужна в конечном билде)

    2) Category: Precompiled headers
    -> Not using precompiled headers

    II. вкладка "Link":
    1) Category: General
    + Ignore all default libraries (по необходимости)

    2) Category: Customize
    - Use program database (по необходимости)

    3) добавляю флаг линкера /ALIGN:32, по необходимости так же /MERGE:.data=.text /MERGE:.rdata=.text и /ENTRY:WinMain (если не использую CRT, иначе все равно придется вызвать WinMainCRTStartup)
     
  16. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    cl file.c
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    censored
    не прокатит) надо указать как минимум тогда уж подсистему и точку входа.
    когда я из консоли собирал прогу через vc++ я собирал так:
    cl file.c /entry:WinMain /subsystem:windows
     
  18. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Great
    а Вы попробуйте
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    хм. значит я чето путаю..
     
  20. y4eNick

    y4eNick New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2007
    Сообщения:
    37
    Great
    Спасибо

    censored
    Cпасибо. Работает только линкер гворит:

    Что бы это могло значить? (В папке Debug только один *.obj)