Няшная / Говнокод #22651 Ссылка на оригинал

0

  1. 1
https://aww.moe/0fmynm.mp4

Интересно, зачем он там редактирует выхлоп из hex-rays (32 секунда)? Исходники потеряли?

Запостил: j123123 j123123, (Updated )

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

  • Вообще, код из hex-rays часто оказывается некомпилябельным забагованным говном с кучей UB
    Ответить
    • Скоро всё закончится. Багров забанят, а на меня напишут жалобу провайдеру. Осталось подождать, самую малость... А пока что держи минус.
      Ответить
  • В одном из говнокодов была ссылка на книжку. Автор рассказывал, что в одной известной старинной американской корпорации когда нужно было внести изменения в программу, правили сразу бинарник (программы тогда были не такими большими, как сейчас, и найти нужный фрагмент было легче), так что в итоге весь софт не соответствовал исходникам.

    Увы, ссылку потерял.
    Ответить
      • Спасибо! Оно!

        Они считают более простым непосредственно латать двоичный объектный код, используя прекрасную программу под названием SuperZap (или ее эквивалент на не-IBM машинах). Этот метод настолько хорош, что многие программы, работающие на ЭВМ фирмы ИБМ, не имеют ничего общего со своим собственным текстом на Фортране. В большом количестве случаев первоначальный символьный текст программы вообще не существует. Когда наступает время подправить такого рода программу, никакой администратор даже не думает послать на эту работу кого-либо, кроме настоящего программиста - никакой сосунок (структурный программист) не будут знать даже с чего начать. Это называется защита от несанкционированного доступа.
        Ответить
        • Прошло 65 лет.

          Многие ПХП программисты идут на сайт по ФТП и там латают HTML, CSS и PHP
          В итоге их код не имеет ничего общего с тем что лежит у них в VCS
          Ответить
          • > код не имеет ничего общего с тем что лежит у них в VCS

            Ты хочешь сказать, что они используют VCS?!

            Разве что заливают в git архивы Versia1.zip Versia2.zip, примерно как этот умник
            https://github.com/George66/Textbook
            Ответить
            • Да, настоящий программист помнит, какая версия где используется, и если ему нужна старая версия, он взламывает кастомера и скачивает своё код у него.
              Ответить
            • а еще они прикольно мёрджатся

              "Алё, Вась? Слыш, не выкладывай ничего на сайт 15 минут, хорошо? Мне там надо кое-чо поправить'
              Ответить
              • Откуда Вы знаете про Васю?

                http://govnokod.ru/17307#comment259930

                Это ещё пустяки. Гораздо интереснее, когда в какой-нибудь организации бухгалтеры звонят друг другу по телефону: «Алё, Люсь! Ты можешь не делать никаких операций 15 минут? Мне нужно платёж провести». Транзакции придумали задроты.
                Ответить
      • Jeff Dean compiles and runs his code before submitting, but only to check for compiler and CPU bugs.
        Ответить
        • Jeff Dean придумал уровень абстракции,которым пользуется царь, так что царь не знает как там всё работает на самом деле
          Ответить
    • [quote]
      > На самом деле, современные версии HexRays (плагин
      > для превращения кода в C-код для IDA Pro)
      > восстанавливают код достаточно точно.
      [/quote]
      ахахахахахахааа

      Jeff Dean написал плагин к IDA который генерирует код си сразу с комментариями
      Ответить
          • Ещё скажи, что про то, что gcc -O4 отправляет код Джеффу Дину для полной переделки, тоже пошутили!
            Ответить
            • А еще Джефф пишет все алгоритмы сложностью O(1)
              Один раз в жизни он написал алгоритм O(log(N)): это был алгоритм для решения halting problem.
              Ответить
    • А джампы в середину инструкции, которые были популярны во времена 16-битного Интела, как будем декомпилировать?

      http://govnokod.ru/13242

      Боюсь, что для процессоров с переменным размером инструкций и для программ, использующих царские оптимизации, нормального декомпилятора не будет.
      Ответить
      • >>А джампы в середину инструкции,
        это какой-то царский способ экономить место?

        >>, что для процессоров с переменным размером инструкций и для программ, использующих царские оптимизации

        да ну конечно не будет
        поди мне -O4 декомпилируй
        Ответить
        • > это какой-то царский способ экономить место?

          Это способ вые продемонстрировать своё превосходство.

          На самом деле в некоторых случаях он действительно может быть полезен. Например, для прошивок и для всяких embedded-приложений.
          Ответить
      • > А джампы в середину инструкции, которые были популярны во времена 16-битного Интела, как будем декомпилировать?
        С этим как раз особых проблем быть не должно. Допустим, есть некая последовательность байт и есть знание того, что будет именно происходить при прыжке в то или иное место. Скажем, вот такой пример для 64-битного Intel/AMD проца:
        https://camo.githubusercontent.com/492cd868bcdb4e9651dc76aa5886c0058f061cbd/68747470733a2f2f692e696d6775722e636f6d2f4b394b484737572e706e67

        Есть множество мест, в которые можно прыгнуть, и при этом будет выполнятся та или иная цепочка инструкций. Это все можно скомипилировать в некую лапшу из кусков кода, которые друг в друга прыгают, и зная длины инструкций, можно их таким способом связать. Скажем, тот пример можно декомпилировать примерно так
        label0x00:
          rax = 0x18048d48c0314801;
          goto label0x0a;
        label0x01:
          eax = 0xc0314801;
          goto label0x06;
        label0x02:
          {
            питушня с указателями, которую мне лень писать
          }
          ...

        Сложнее будет декомпилировать какую-нибудь питушню с самомодифицирующимся кодом, динамически-распаковывающимся кодом, всякой хуитой с сегментными регистрами (например https://ru.wikipedia.org/wiki/Unreal_mode ) и прочими подобными извращениями
        Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8