1. C++ / Говнокод #8205

    +148

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    #include <iostream>
    #include <Windows.h>
    
    int main()
    {
        unsigned char data[]={0xb8, 0x9a, 0x02, 0x00, 0x00, 0xc3};
        auto function=(int(*)())VirtualAlloc(nullptr, sizeof(data), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
        memcpy(function, data, sizeof(data));
        std::cout << function();
        VirtualFree(function, 0, MEM_RELEASE);
        return 0;
    }

    Угадайте, что выведет эта программа?

    Запостил: gammaker, 16 Октября 2011

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

    • показать все, что скрытоПоясните мысль.
      Стоит смеяться над тремя шестерками?
      И если стоит, то предложите лучший вариант.
      Ответить
      • То есть все знают о встраивании машинного кода, что это никого не запутывает? Три шестёрки я выбрал просто так. Надо же вернуть какое-то число.
        Сначала хотел сделать хелловорлд в машинном коде, но не получилось.
        Ответить
        • Попробуйте, должно получиться.
          Покажите реальный пример встраивания кода.
          Ответить
          • Пробовал, не получилось. Там нужно вызывать функцию, а инструкция call обращается по адресу относительно текущему. Поэтому просто код нельзя скопировать из нормальной C++ функции.
            Ответить
            • А через косвенный вызов?
              Ответить
              • Это как?
                Ответить
                • CALL DWORD PTR [адрес]
                  Ответить
                  • нубов не кормить же

                    а калл полезен только если нужен эпилог
                    Ответить
                  • фиксап нужен, не поможет.
                    Ответить
                  • Не помогло. Я плохо знаю ассемблер. Я делал так: писал функцию на C++, смотрел её машинный код и копировал себе. Пробовал _asm call DWORD PTR puts.
                    Ответить
                • http://govnokod.ru/1520
                  Тут подсказка, как делать правильно и без фиксапов.
                  Ответить
                  • Не понял, что тут надо делать. Ну и ладно. У меня уже интерес к этой теме пропал.
                    Ответить
                    • Гуглите "позиционнонезависимый код".
                      Ответить
    • Метод вставки готового машинного кода в программу?

      Monseigneur.jpg
      Ответить
      • Да.
        >Monseigneur.jpg
        Что это значит?
        Ответить
        • Это значит, что мсье знает толк в извращениях.
          Ответить
          • Это был эксперимент. Делал это из научного интереса. В реальных программах этого делать не собираюсь.
            Ответить
            • т.е. все старания только затем, чтобы выложить накласть сабж в говнокод?
              Ответить
              • Нет. Это ради интереса. Говнокод - это побочный эффект.
                Ответить
                • это твой код - побочный эффект, а Говнокодик появился очень даже целесообразно!
                  Ответить
                  • Я имел в виду не пост на этом сайте, а именно код.
                    Ответить
    • ХУИТУ выведет. Гейдевка, уходи!
      http://www.gamedev.ru/users/?id=44765&lasttop
      Ответить
      • тоже самое хотел сказать, но ты миня аперидиил (на два часа)! (ц)
        Ответить
    • windows 8 уже запустили на arm?
      Ответить
      • Пока вроде нет. Но этот код там работать не будет.
        Ответить
    • Причём тут gamedev? Код писал сам.
      Ответить
      • Ну ты же из народонаселения gamedev
        Ответить
      • гейдев тут при том, что их ламерство уже несколько надоело, скажите спасибо тому чорту который вас навел на говнокод

        > Код писал сам.
        и что из того? код конечно херовый, но ничего особенного

        ps: вообще это структурой делается
        Ответить
        • >вообще это структурой делается
          Я знаю, случайно не туда нажал, а исправить нельзя.
          Ответить
    • Если говнокод не нравится, сильно не пинайте. Я ведь тут не слишком давно, не знаю какие у вас говнокодские предпочтения.
      Ответить
      • будем пинать до полного просветления
        Ответить
      • мое определение ГК это код который меня расмешил или навел на мысли головой об стенку постучатся.

        а то что минусуют, ну фиг с ним. успех ГК можно судить по количеству каментов: больше - лучше.

        ЗЫ 0xB8 и 0хС3 - не смешно ни фейспалмно.
        Ответить
        • > успех ГК можно судить по количеству каментов: больше - лучше.
          т.е.,по-вашему, лучший говнокод - тот, который ярче спровоцировал школоло баттхертное на флейм?
          Ответить
          • не лучший - но однозначно "популярный".

            фишка то в том что умным людям даже и поговорить то не о чем - сами все знают и понимают. и школота часто единственный повод поматерится ;)
            Ответить
            • tsya.ru
              Ответить
            • не однозначно популярный, т.к. свойство любого срача - не придерживаться сабжа и переход на личности
              Ответить
              • посмотри на происхождения слово "популярный" :)
                Ответить
                • народный. и?
                  Ответить
                  • народ бурно обсуждает топик = популярный топик.
                    Ответить
                    • да, но причем тут степень говнокодности?
                      Ответить
                      • ни причем. вопрос на который я отвечал был насчет какой пост считать удачным.

                        если пост дал народу повод хорошо потрепаться - значит пост удачный.
                        Ответить
                        • не факт.
                          а если там 20 комментов в духе "тут все нормально, это не говнокод"? неудача.
                          Ответить
                    • >> не придерживаться сабжа
                      значит, не сам топик, а что-то свое.
                      Ответить
                    • кстати, "народ" - слово-маркер школоты
                      Ответить
    • Угадайте что сделает эта программа:
      $??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see
      Ответить
    • http://www.gamedev.ru/code/forum/?id=153589
      >P. S. На говнокод не заносить. Пока рано. Когда доделаю, сам выложу туда.
      :D
      Ответить
      • знакомая фраза, оказывается это постоянный клиент
        http://govnokod.ru/7688#comment104503
        Ответить
        • А что забыли меня?
          Ответить
          • чтобы приобрести вечную славу надо быть как минимум усрусом

            раз уж занесло на говнокод, может уже пора начать постить что-нибудь интересное?
            Ответить
            • Самое интересное у меня уже с gamedev'а скопипастили. Больше ничего такого нету.
              Лучше создать свой сайт, противоположность govnokod'у, в котором каждый выкладывает хороший код, а ему пишут, что в нём нужно исправить. Думаю, это будет только полезнее. Только у меня столько идей, что до этой я наверное доберусь лет через 20.
              Ответить
              • > хороший код
                давненько я такого не видел...
                Ответить
              • Хотя нет, по-моему что было. Сейчас покопаюсь у себя, может выложу.
                Ответить
    • показать все, что скрытоvanished
      Ответить

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