1. C# / Говнокод #27669

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    private void LoadControlFile()
    {
        this.OFD2.Title = "Open an ORYZA Run Control File";
        this.OFD2.Filter = "Text Files|*.*";
        this.OFD2.ShowDialog();
        string path = this.OFD2.FileName.Trim();
        if (Path.GetExtension(path).ToUpper() != ".EXE")
        {
            this.TextBox2.Text = path;
        }
        else
        {
            string text = "Loading file is not a text file, RETRY!";
            MessageBox.Show(text, "Important Note", MessageBoxButtons.OK);
        }
    }

    Филипинская прога на Win Forms. Проверка на то что входной файл не исполняемый, а текстовый.

    Запостил: contemporary_rapist, 17 Сентября 2021

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

    • $ echo "EXE if for tEXt Extension" > test.exe
      Ответить
      • 32-битная система посчитает такой файл досовским COM-файлом и попытается выполнить.
        Ответить
        • Windows 10 x86 не запустит, дело не только в битности, но и возрасте системы и её ядра.
          Ответить
          • Зачем тогда есть win10 32х битная?
            Ответить
          • Оказывается, запустит, если соответствующий компонент включен:
            https://docs.microsoft.com/en-us/windows/compatibility/ntvdm-and-16-bit-app-support

            Просто NTVDM вынесли в компонент, который по умолчанию выключен, хотя и по-прежнему присутствует в образе системы.

            DISM /online /enable-feature /all /featurename:NTVDM


            Такие дела.
            Ответить
        • В «VLC» можно «просмотреть» какой-нибудь бинарник.
          Ответить
      • bool isExecutable(string file)
        {
          try {
            Process.Run(file);
          } catch () {
            return false;
          }
          return true;
        }
        Ответить
        • Это специальная олимпиада?

          proc isExecutable(string file): bool =
            let extension = file[^3..^1]
            var b = false;
            if extension[0] == 'e' or extension[0] == "E":
              if extension[1] == 'X' or extension[1] == "x":
                if if extension[0] == 'e' or extension[0] == "E":
                  b = true
            return b;
          Ответить
          • def is_executable(path):
                with open(path, 'rb') as f:
                    return f.read(2) == b'MZ'
            Ответить
            • поддержи .com
              Ответить
              • Чтобы ты потом написал com из буковок и сказал, что это текст, а не исполняемый файл?
                Ответить
                • Вон там Иканус ниже по треду именно это с .exe и сделал
                  Ответить
                  • Я ниже написал фрагмент песни на суахили, на котором у теста будет ложноположительное срабатывание.
                    Ответить
                    • Я хочу стгриггерить Броманда распарсить весь PE, найти там нужные сегнменты с нужными именами, и тогда признать это настоящим EXE
                      Ответить
                      • Ну давай ещё цифровую подпись проверю )))

                        Как-будто мне делать больше нехуй сейчас.
                        Ответить
                        • А вы мне уже доказали, что подпись это хуйня, и что там ключи по триста долларов в даркнете продают, и никто не скрывает
                          Ответить
                          • Представь, сколько софта сразу перестанет работать, если «Микрософт» спизженные ключи добавит в список отзыва. В 64-битных «Windows» проверку подписи драйверов не так просто отключить.
                            Ответить
                      • Имена секций могут быть произвольными. Код не обязан находиться в секции «.text». Бывают конпеляторы, которые дают секциям другие имена.

                        Важны атрибуты секций. Точка входа должна указывать на секцию с атрибутом «исполнимая».
                        Ответить
                        • Ага, а то вдруг это resource-only dll. А она технически не executable, кода там нет.
                          Ответить
            • MZURI SANA. WAGENI MWAKARIBISHWA. KENYA YETU. HAKUNA MATATA.
              Ответить
            • echo 'MZ is exe header' > hello.exe
              Ответить
          • поддержи .com
            Ответить
    • Видимо, пользователи часто путали. Нормальный такой костылек под конкретную ситуацию...
      Ответить
    • если пользователь что-то делает не так - его надо наказывать перегрузкой системы. иначе он никогда ничему не научиться
      Ответить
      • Именно по этому я за "DOS"
        Ответить
        • В досе ребут не такое уж и наказание... Он же не грузится по 10 минут.
          Ответить
          • Я жал «Reset» на системнике, если не знал, как выйти из программы. Перезагрузка занимала меньше времени, чем поиск способа выхода.
            Ответить
            • Какая аппаратная поддержка vi )))
              Ответить
              • Теперь я уже знаю: эскейп, двоеточие, q, ентер.

                А в «emacs» нужно нажать Ctrl+X Ctrl+C.

                Ничего не напутал?
                Ответить
                • А ещё в «Emacs» можно в любой момент нажать «M+x» и ввести какую-нибудь команду, например «exit».
                  Ответить
                  • Документация по «Emacs» по-прежнему рассчитана на клавиатуру «Space-cadet»?
                    Ответить
                    • Неплохая клавиатура, кстати.

                      Мне удобно пользоваться «Emacs» на любой клавиатуре: ведь у него есть красивый и стильный графический режим с поддержкой мыши, а ещё нужные шорткаты логичные и тоже прикольные.
                      Ответить
                      • Ага, умели раньше клавиатуры делать. А на современных зачастую клавишей не хватает.
                        Ответить
                        • Я бы себе ещё отдельный USB-numpad какой-нибудь прикупил, чтобы рогалики гонять, а так клавиш мне хватает сполна: некоторые я даже почти не использую.
                          Ответить

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