1. Assembler / Говнокод #24532

    −2

    1. 1
    2. 2
    А что если конпелятору переносить комментарии в ассемблерный код?
    Это относится к швабодке?

    Запостил: OlegUP, 23 Июля 2018

    Комментарии (20) RSS

    • inb4: перенес комментарии в твой elf, проверь.
      Ответить
    • Точно, в исполняемом файле нельзя хранить комментарии.
      Ответить
      • Изъебнуться можно всегда и везде:
        jmp skipcomment
        db 'this is kommentariy :)'
        skipcomment:
        Ответить
        • Тогда нужно, чтобы оптемезатор не выкинул это.
          Ответить
          • Оптемезатор чиво?
            Ответить
            • Оптемезатор сосемблированово кода )))
              Ответить
              • Где такой взять? Покажите хоть один!

                Ну какие-то мелкие оптимизации ассемблеры делать умеют (TASM заменяет jmp near на jmp short, если его об этом попросить), но чтобы глобально оптимизировать...
                Ответить
          • как оптемезатор может доказать ненужность литерала в .asm файле?
            Вдруг ты вообще базу литералов создаешь?
            Ответить
        • Именно так и случился lexa lexa ty mogu4
          Ответить
    • У меня лучше вопрос: а что если я напейсал COM-программу в hex-редакторе или блокноте, это опенсорс?
      Ответить
      • Столлман же юзает ноутбук с открытой архитектурой.
        Если выложишь под лицензией GNU, то скорее всего -- да.

        Мой вопрос в другом, если бы конпелятор переносил комментарии в exe\elf ... etc файл.
        То скорее всего разрабу было бы невыгодно это, потому что его прогу могут отреверсить.
        А это намного облегчает ревес-инжиниринг.
        Ответить
        • Реверс программы облегчает отладочная информация, которую компилятор может прикрепить к исполняемому файлу (соответствие байтиков исполняемого файла номерам строк исходника, наименование локальных переменных, декларации функций и т. п.).

          Кстати, без отладочной таблички с номерами строк комментарии и привязывать не к чему.
          Ответить
          • Отладочную информацию могут еще отдельно распостранять.

            Скажем, MS дает .sym файлы для винды которые позволяют развернуть колстек и понять в какой функции что ебанулось (и даже какие параметры у той функции) но сырцов не дает ни для чего кроме CRT.

            А без дебаговой инфы и правда никак не привязать номера строк.
            У опенбзди есть даже специальная инструкция для хомячков, у которых ядро ёбнулось: они могут посмотреть дамп, скормить его gdb на пару с с ядром с дебаговой инфой (опцыя -g) и узнать на какой строчке в .c файле у них случилось разыменовывание указателя на нуль или какая-то другая хуйня
            Ответить
      • Офтопик. Покопался в проекте http://tom7.org/abc/ ( http://www.cs.cmu.edu/~tom7/abc/ ). Чувак написал компилятор с урезанного подмножества языка C в досовский exe-файл, содержащий только ASCII-символы. У него получилось, хотя лучше бы не получалось... Выходные файлы имеют фиксированный размер 409600 байт (в заголовке exe нужно указывать его размер; вероятно, это минимальное число, которое автору удалось составить из ASCII-символов). Для компиляции самого компилятора нужно ставить MLton (компилятор StandardML) и две библиотеки ( https://sourceforge.net/p/tom7misc/svn/HEAD/tree/trunk/sml-lib/ и https://sourceforge.net/p/tom7misc/svn/HEAD/tree/trunk/cc-lib/ ).
        Ответить
        • P.S. MLton под винду есть тут:
          https://sourceforge.net/projects/mlton/files/mlton/20100608/
          Ответить
        • НИ КОЧАЙТИ РАРЕГ.ЕХЕ ТАМ ВИРУС!!!11 ОН СВОРАЧИВАИТ ВАШЫ УШЫ В ТРУБОЧКУ!!!11

          ЗЫ. РАРЕГ.ЕХЕ это COM-файл? В EXE ведь первые джва байта MZ, а там ZM. Или я чего-то недогоняю?
          Ответить
          • DOS интерпретирует ZM так же, как MZ. Правда, ZM очень редко встречается, поэтому о таком варианте не все знают.

            А ещё у меня ощущение, что компилятор abc.exe недоработанный. Не все файлы, полученные им, запускаются.
            Ответить
            • > DOS интерпретирует ZM так же, как MZ.
              А венда? Может мне поменять во всех ехешниках MZ на ZM? Тогда буду нитакой как фсе.
              Ответить
              • Проверил. Поменял у пасьянса MZ на ZM — винда ругается: «Параметр задан неверно». Поменял обратно — работает.
                Ответить
                • Проверил ещё раз. Был глюк.

                  Меняю у пасьянса MZ на ZM — запускается не PE-часть, а досовская часть, выводит: «This program cannot be run in DOS mode». Меняю обратно — запускается пасьянс.

                  Т. е. 32-битная Windows, когда видит ZM вместо MZ, передаёт управление виртуальной DOS-машине. Что будет в 64-битной, представить страшно.
                  Ответить

    Добавить комментарий