PVS-Studio

Приветствую! Это мой первый пост на Хабре в принципе, но не первая статья о взломе ПО вообще, поэтому навык писать все с начала и по шагам, для начинающих крякеров, у меня есть. В данной статье я расскажу о том, как был отучен от триальности PVS-Studio.

Подготовка

Прежде, чем начинать, помните: все действия вы выполняете на свой страх и риск. Уважайте работу программистов!

Первым делом, качаем и устанавливаем программу. Тут все просто.

С чем мы имеем дело?

Давайте выясним, на чем написана программа, и что нам придется "лечить". Старперы для этого используют PEiD, но он очень уж старый теперь, базы не обновляются, да и многие компиляторы он просто не понимает. Обычно, я пользуюсь программой ExeInfo PE.

Заходим в каталог с программой, и "на глаз" решаем, что первым подопытным файлом станет PVSStudioStandalone.exe. Его запуск также говорит о том, что это главный исполняемый файл. Натравливаем на него ExeInfo PE и получаем:
Microsoft Visual C# / Basic.NET | Explore, browse, and analyze .NET assemblies with .NET Reflector
Окно ExeInfo PE


Погружение. EXE №1

Нам рекомендуют установить .NET Reflector, и открыть в нем нашего подопытного. Так и сделаем.
Скрин .NET Reflector'а


Видим, что названия классов не обфусцированы, (выглядят нормально). Так же с кодом методов этих классов, если походить по ним. Делаем первый вывод: главный исполняемый файл никак не защищен. ОКей. Идем, дальше.

Давайте найдем проверку лицензии и все, что с этим связано.
Запустим PVS-Studio, зайдем в меню Tools -> Options… -> Registration. Попробуем ввести имя юзера и случайный ключ (к автору не обращался, ключ не спрашивал, поэтому формат их мне неизвестен):
Вводим случайные рег.данные



Теперь можно поискать по тексту сообщения об ошибке в .NET Reflector'е. Жмем F3 (Search), затем Ctrl+S (Search String or Constant). Вводим "Incorrect registration info". Получаем:
Ищем Incorrect registration info


Двойным щелчком переходим по найденной ссылке, и получаем следующий код:
Код метода get_LicenseType()


Попробуем выяснить, откуда вызывается данный метод. Жмем Ctrl+R (Analyze), разворачиваем список, а в нем разворачиваем список Used By:
Список ссылок на метод get_LicenseType()


Жмем ПКМ по найденному методу, а там Go To Member.
Код метода ResetRegistrationInformation()


На скрине я выделил место, где мы и получаем сообщение об ошибке. В условии оператора if видим проверку на тип лицензии Invalid. Значит этот тип был установлен где-то выше по коду. Будем просто по порядку заходить во все методы, пока не найдем что-то подозрительное… И, вот оно:
Метод ProgramVerificationSystems.PVSStudio.LicenseInfo.Reload()


Радостно заходим в метод GetLicenseInfo()!
Код метода GetLicenseInfo()


Что тут происходит? Похоже, запускается какой-то exe-файл, с аргументом --checkreg=yes, затем парсится его вывод в консоль, и на основе результатов дается информация о лицензии. Какой именно файл запускается? Выяснить легко: заходим в метод GetPVSStudioExePath() и видим:
Код метода GetPVSStudioExePath()


Есть ехе-шник PVS-Studio.exe, который, похоже, лежит в каталогах x86 или x64. Порыскав в каталоге с программой, убеждаемся, что, да — такие папки, и такой исполняемый файл у нас имеется. Прекрасно!
Значит он, при передаче ему спец-параметра о запросе лицензии (--checkreg=yes), должен выплевывать информацию о нашей с вами лицензии.

Еще глубже. EXE №2

Попробуем запустить PVS-Studio.exe в отдельности через командную строку, передав ему наше желание узнать инфу о лицензии.
Запрашиваем лицензию


Очень хорошая строчка для поиска: "Unknown license type". Будем ее искать через Olly Debugger v2. Открываем в "Ольке" PVS-Studio.exe, жмем ПКМ -> Search for -> All referenced strings:
All Referenced Text Strings


Жмем Ctrl+F (Search for Text), вводим: Unknown license type. И, находим одну ссылку:
Результаты поиска Unknown license type


Двойным кликом по ссылке мы попадаем в код:
Интересный код


На скрине я выделил прямоугольником интересную, на мой взгляд функцию.
Во-первых, сразу за ее вызовом идет проверка значения в регистре EAX на число от нуля до трех (0trial, 1invalid, 2timeout, 3valid).
Затем, идет проверка байта под адресу BYTE PTR SS:[LOCAL.12+3] (так обозвала Олька) на значения от 0 до 3 (0Unknown license type, 1Single User License, 2Team License, 3Site License). Этот адрес подается на входе в функцию в регистре EAX.
Где-то дальше еще есть вывод даты в консоль, но я не стал с этим разбираться, т.к. если тип лицензии — valid, то на дату ему все равно.

Патчинг. EXE №1

Теперь самое интересное: нужно пропатчить код по адресу, на который указывает CALL (в моем случае — 0xA88570), на такой, чтобы выдавался нужный нам тип лицензии и режим. Давайте составлять код:

Первым делом, "исправим" байт, отвечающий за тип лицензии. Я выбрал Site License (это число 3). Судя по имеющейся у нас информации, пишем в Ольке такой код (нажать Пробел на адресе 0xA88570):
mov byte ptr [eax], 3

Затем, исправим возвращаемое в EAX значение. Я так же выбрал 3 (valid):
mov eax, 3

Ну и, напоследок, выйти из функции:
retn

Результаты работы


Все! Сохраняем изменения в исполняемый файл, и радуемся полностью рабочей лицензии!

Патчинг. EXE №2

На этот раз, исполняемый файл у нас 64-х битный, поэтому Олькой найти код не получится. Но, можно найти его с помощью x64dbg. Проявите немного усидчивости и вы сможете пропатчить и его!

P.S. Как видим, от силы полчаса исследования, и нас ждет хороший результат.

Конец



Всем спасибо!

Комментарии (123)


  1. pewpew
    14.04.2015 16:06
    +15

    Отличный способ получить бесконечный trial безо всяких просьб по email.


    1. DrMefistO Автор
      14.04.2015 16:19
      +24

      Просить по email — не так уж и плохо, особенно, если это бесплатно, и программа вам действительно нужна!


      1. pewpew
        14.04.2015 16:21

        Сарказм же


        1. DrMefistO Автор
          14.04.2015 16:22
          +2

          Не оценили, похоже, Ваш "сарказм")


  1. Ivan_83
    14.04.2015 16:10
    +16

    Можно было написать свой PVS-Studio.exe который бы всегда возвращал что нужно :)
    Если оказалось бы что оригинальный нужен для работы, то можно было его вызывать, и данные туда-обратно пересылать.

    Напомнило старые — добрые 199х — начало 200х, когда компиляторы не оптимизировали а про обфускацию не знали.


    1. DrMefistO Автор
      14.04.2015 16:12
      +4

      Именно так я и делал в первый раз! Но, к сожалению, в этом случае, т.к. сам PVS-Studio.exe в себе проверяет лицензионность, нужные результаты выдаваться не будут все равно.


  1. Diaver
    14.04.2015 16:21

    Можно было просто модифицировать сборку .NET с помощью плагина Reflexil для Reflector-a, или возникли бы какие-то проблемы?


    1. DrMefistO Автор
      14.04.2015 16:24
      +5

      Ну, модифицировать сборку не выйдет по той же причине, по которой я не подменял PVS-Studio.exe на заглушку — главные результаты дает именно он, а шарповский файл всего лишь аккуратно их выплевывает в таблицу.


  1. mwizard
    14.04.2015 16:29
    +1

    Хорошая статья, спасибо! Но патч — это самое простое решение, которое придется переделывать каждый раз при обновлении софтины. Не смотрели в сторону кейгена?

    Надеюсь, авторы PVS Studio не воспримут статью, как личное оскорбление :) Мы все программисты и уважаем чужой труд.


    1. DrMefistO Автор
      14.04.2015 16:31
      +2

      Не смотрел. Но, хотел. Если раздобуду ключ (любой, хоть триальный), попробую написать кейген и сделать статью.


      1. mwizard
        14.04.2015 16:33
        +25

        Напишите авторам PVS-Studio :)) Хотя это будет уже просто какая-то сказочная наглость — «Здравствуйте, можно попросить у вас пробный ключ на неделю? Я хотел бы написать кейген к вашему продукту, но для облегчения работы мне хотелось бы видеть направление бранчинга для успешной проверки. Спасибо!»


        1. DrMefistO Автор
          14.04.2015 16:34
          +2

          Кейген, как оказалось, уже есть, даже с исходниками. Ну да ладно. Цель статьи — немного обучить реверс-мышлению.


          1. mwizard
            14.04.2015 16:35
            +3

            Кейген есть, но нет инструкции по его получению в домашних условиях. Ценен ведь не факт взлома, а демонстрация как раз этого самого хода мышления. Вы ж не ради пиратства статью написали :)


            1. DrMefistO Автор
              14.04.2015 16:36

              Так то да.) Хорошо, посмотрим, что я смогу сделать.


  1. SerJook
    14.04.2015 16:32
    -18

    А можно было просто скачать кейген с ннм


    1. mwizard
      14.04.2015 16:33
      +5

      И это было бы простое, ноубрейновое пиратство. Это как найти уязвимость и написать для нее эксплоит — или заюзать готовый, который кто-то сделал до тебя.


  1. mark_ablov
    14.04.2015 16:35
    +21

    Ну не знаю, по мне так всё тривиально и не интересно.
    «Взлом» софта по алгоритму «нашёл строку» => «пропатчил переход» очень прост и не требует абсолютно никаких особых навыков.


    1. mwizard
      14.04.2015 16:36
      +3

      А это уже щелчок по носу авторам PVS-Studio, которые хранят строки в открытом виде.


      1. Longer
        14.04.2015 17:03
        +22

        Не стоит заморачиваться с защитой программы, любую защиту можно обойти, не важно как быстро в данном случае. Те, кто взламывает или патчит программу для использования — просто не их клиенты. Ведь у честно оплаченных копий есть свои плюшки (ТП например).


        1. DrMefistO Автор
          14.04.2015 17:05
          +8

          Именно! Я всегда поддерживал такой подход: платить за саппорт, а программы бесплатные. Но это мое сугубо личное мнение.


        1. ivlis
          15.04.2015 04:49
          -2

          Что им мешает заопенсорсить свой продукт, тогда совсем не понятно. Уж бы и версию по Linux запилили бы давно.


      1. Halt
        14.04.2015 18:44
        +15

        Скорее это явная демонстрация того, что разработчики не являются белками истеричками от безопасности и не городят тонны обфускаторов чтобы было. Они сами говорили, те кто будет обходить ограничения триала и так у них ничего не купит. А те кто купят, не будут портить себе карму.

        Тот же WinRAR отучивался от nag скрина заменой одного байта, просто потому что лицензия — это повод поддержать разработчика, а не индульгенция.


        1. DrMefistO Автор
          14.04.2015 19:36

          Абсолютно с Вами согласен! Считаю, что покупка программы (даже после использования крякнутых версий) — это своего рода благодарность автору за труды. Другое дело, что не всегда по силам благодарить авторов IDA Pro, либо той же PVS-Studio.


          1. monah_tuk
            15.04.2015 06:42
            +1

            Ты попробуй ещё официально IDA Pro купить. Даже при наличии бюджета. Или что-то поменялось в последнее время?


            1. datacompboy
              15.04.2015 13:57

              да нет никаких с этим проблем, если тебе она нужна в белом свете.


              1. MacIn
                21.04.2015 00:33

                Что, уже продают частникам?


                1. datacompboy
                  21.04.2015 00:35

                  Не знаю, я ип.


                1. pfemidi
                  21.04.2015 01:00

                  Только стандартные продают. А вот расширенные как лет пять-шесть назад перестали частникам продавать, лишь организациям, так до сих пор и не продают. Так что как минимум с Intel x64 частники в пролёте, увы. Ну и со всякими спарками/альфами тоже.


                  1. MacIn
                    21.04.2015 01:41

                    О чем и речь. См. выше: «Ты попробуй ещё официально IDA Pro купить.»


                  1. datacompboy
                    21.04.2015 10:44
                    -1

                    Ип это вполне организация.


    1. DrMefistO Автор
      14.04.2015 16:38

      Ну, Вам легко, а научить крякингу не каждый хочет.
      По опыту знаю, что по старым статьям мало кто хочет учиться, к сожалению.


      1. mark_ablov
        14.04.2015 16:49
        +3

        Не уверен, что крякинг это must have знание, которому нужно обучать всех.
        Если человек не способен осилить даже такие простейшие действия, то значит это ему и не нужно вовсе.
        Было бы желание, то ни старые статьи, ни вообще их отсутствие не было бы проблемой. Вон приснопамятный мыщъх вообще с debug.exe начинал.


        1. DrMefistO Автор
          14.04.2015 16:53
          +1

          Я тоже начинал с debug.exe. И согласен с Вами в том, что это не для всех знание.
          Но, если бы все делали, как Вы думаете, ехетулс был бы голым, а знание реверса было бы у совсем единиц, таких как Крис.


          1. dns78
            14.04.2015 16:57

            А может, оно и к лучшему было бы?


            1. DrMefistO Автор
              14.04.2015 17:02
              +1

              Тогда бы вирусописатели и им подобные люди держали надо всеми верх!
              Конечно, это палка о двух концах: с одной стороны, это знания для вирусописателей, да. Но с другой, это знания и для тех, кто с ними борется! Думаю, вторые часто приходят в АВ-компании на собеседования (как и я когда-то).


              1. mark_ablov
                14.04.2015 17:14
                +1

                Массовка (первая линия исследования малвар) думаю обучаются не по таким статьям, а непосредственно у ав-вендоров. Настоящие профессионалы (ну по крайней мере, те с которымы я общался) так же начинали далеко не с такого рода howto'шек (коих кстати и 10-15 лет назад было немало).
                Так что не думаю, что отрасль бы обеднела.


                1. DrMefistO Автор
                  14.04.2015 17:23
                  +1

                  А профессионалы с чего начинают? Тоже ведь с малого. Главное — зародить интерес (как в школе).


              1. dns78
                15.04.2015 00:11

                А разве сейчас есть интересные вирусы? Если можно, ссылку, хотелось бы посмотреть. Я как-то давно уже ничего интересного (кроме истерики Касперского, пожалуй, по поводу не то самописных классов на C, не то форта), не видел.


                1. DrMefistO Автор
                  15.04.2015 00:17

                  Ну, крипторы, которые навешивают на малварь, зачастую используют интересные трюки для обхода детектов. Именно реверсеры должны уметь находить такие штуки.
                  А исследование вирусов, пусть даже старых — тема интересная, но, зачастую, до статьи не доживает, ибо надо придумать, о чем в ней можно написать.


                1. MacIn
                  15.04.2015 02:26

                  Каков критерий «интересности» для вас?


          1. andrewsh
            14.04.2015 17:45
            +5

            Он debug.com, вообще-то.


            1. DrMefistO Автор
              14.04.2015 17:46
              +1

              mark_ablov и я: оба спалились))


            1. mark_ablov
              14.04.2015 17:47

              Где как, в DOS'e — да, в Win9X не помню, но вроде уже .exe был.


      1. lexasss
        16.04.2015 13:27

        Вы про эти статьи?


  1. Scratch
    14.04.2015 16:36
    -7

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


    1. DrMefistO Автор
      14.04.2015 16:40
      +9

      Заслуга — написать статью, ИМХО. Много Вами написано статей о реверсе? Критиковать может каждый, а сделать — единицы!


      1. Scratch
        14.04.2015 16:55
        +12

        Заслуга — написать хорошую статью.


        1. DrMefistO Автор
          14.04.2015 16:55
          +6

          Статья плохая? Если да — чем?


          1. mwizard
            14.04.2015 17:07
            -9

            Статья не плохая, просто она слишком уж для новичкового уровня. Но если рассматривать ее, как начало цилка, то вполне ок — я не зря поэтому спросил про keygen.


            1. DrMefistO Автор
              14.04.2015 17:09
              +2

              Попробую продолжить написание статей на тему исследования защиты ПО.
              P.S. К сожалению, за мой большой опыт написания статей о реверсе, я не писал ни одной статьи о кейгенинге.
              Видимо, этому не просто обучить в статье.
              Часто участвует «намыленный взгляд».)


              1. Longer
                14.04.2015 17:13

                Вообще хотелось бы подобного под Linux (не чтобы взламывать проприетарщину) для фана. Какие-нибудь программы-примеры. Я пробовал как-то раз развлекаться таким образом, но инструментария достаточно удобного, как под винду, не нашёл. По понятным причинам такие инструменты не очень развиты под linux. Но может я плохо искал.


                1. mark_ablov
                  14.04.2015 17:15
                  +1

                  IDA.
                  А gdb значительно лучше чем ollydbg.


                  1. Longer
                    14.04.2015 17:22

                    gdb да, но мне немного другого инструмента не хватало. В комменте ниже подробнее.


                1. DrMefistO Автор
                  14.04.2015 17:16

                  Есть Hopper, есть IDA под Linux. А вот программ-примеров, увы, даже не искал. Часто фриварные попадаются (немудрено).


                  1. Longer
                    14.04.2015 17:20

                    Программу пример можно написать самому для начала, а так примеры есть.

                    Hopper и IDA — проприетарные.

                    Мне в большей степени инструмента, как дизассамблер + редактор (забыл название за давностью лет аналога под винду, вроде на «H»название начиналось) не хватало.


                    1. mark_ablov
                      14.04.2015 17:23

                      hiew, есть куча (2-3) кроссплатформенных аналогов.


                      1. Longer
                        14.04.2015 17:25

                        Да hiew, спасибо. В текущий момент нет снова времени погружаться в эту тему, может позже, но насколько я помню, аналоги hiew были ограничены чем-то, может быть архитектурой или/и ещё чем-то.


                        1. DrMefistO Автор
                          14.04.2015 17:25

                          Он тоже проприетарный)


                          1. Longer
                            14.04.2015 17:27

                            Так я уже на винде не сижу, а когда сидел под виндой выбора не было) (ну или я не знал о нём :))


                          1. MacIn
                            15.04.2015 02:27

                            QVIEW есть, но только под 32 бита.


                        1. BelBES
                          14.04.2015 17:40

                          Как вариант, можете попробовать emacs + Hexl Mode + Disaster Mode.


                        1. dns78
                          15.04.2015 00:16

                          Самое ужасное ограничение всех альтернатив — это ncurses, что приводит к тотальному обрезанию хоткеев (не только это, но это самое болезненное — для меня). На мой взгляд — для комфортного проглядывания бинарников быстрее hiew под wineconsole дернуть.


                        1. monah_tuk
                          15.04.2015 08:07

                          biew, а ныне beye: ru.wikipedia.org/wiki/Beye но не верх идеала. Зато опенсорсный. Мне вот не хватает тула, временами, в котором бы рисовались стрелочки от вызова к вызову, переходы отмечать, навигация по переходам. Вроде radare2 может, но не осилил пока.


                    1. REU
                      14.04.2015 17:24
                      +1

                      Хочешь открытого, тогда radare2


                      1. Longer
                        14.04.2015 17:26

                        Спасибо, в закладки добавил, посмотрю вечером.


                      1. DrMefistO Автор
                        14.04.2015 17:26

                        Хороший продукт, но, насколько я знаю, не имеет внутренней базы (как .idb у Иды).


                        1. REU
                          14.04.2015 17:32
                          +1

                          1. DrMefistO Автор
                            14.04.2015 17:33

                            Добавил в закладки, спасибо!) Никак не могу на него перейти. Просто к Иде очень привык.


                            1. xvilka
                              15.04.2015 11:47
                              +1

                              У нас есть еще хорошая книга (в процессе написания, но есть перевод на персидский) и статьи с блога radare.today


                1. mark_ablov
                  14.04.2015 17:20

                  бтв, всё думаю написать свой write-up по неоквесту последнему, а то NWOcs что-то не спешит публиковать разбор заданий.
                  Там есть достаточно интересные задания. По крекингу — стандартные Java/.NET + реверс бинарника для солярки под Sparc'и + написание кейгена для алгоритма серийника, который исполняется во внутренней ВМ в обработчике #PF своей ОСи.


      1. d_olex
        14.04.2015 18:56
        +4

        При всем уважении, но найти строку с сообщением и запатчить джамп — это не реверс-инженеринг, а детский сад штаны на лямках. Если вам интересны примеры хороших технических статей на тему r/e — сходите на тот же /r/ReverseEngineering например.


        1. DrMefistO Автор
          14.04.2015 19:40
          +10

          Сам же и писал для подобных сайтов статьи! Знаете, в статье-то оно просто все выглядит. Но, фишка в том, что главное не сколько всего запатчено, а КАК я к этому пришел, и как показать ход рассуждений новичку. Именно об этом в статье!


          1. d_olex
            14.04.2015 20:00
            +4

            Статей про monkey patching сотни и все они не несут никаких новых знаний.

            показать ход рассуждений новичку

            Новичку в области r/e я бы посоветовал изучать тонкости работы hll компиляторов, внутренности операционных систем и задрачивать классический академический program analysis (в сети можно найти неплохие книги по данному предмету и конспекты лекций из MIT и Стенфорда если не ошибаюсь), сопутствующие ему разделы математики (теория множеств, графы и пр.) и криптографию. Как показывает практика, большинство из тех кто изучает r/e путем исправления джампов в отладчике так и остается на этом низком уровне навсегда, настоящий же реверсинг всегда идет бок о бок с compsci, софтвер инжинирингом и системным программированием.


            1. DrMefistO Автор
              14.04.2015 20:03

              Я начинал именно с

              исправления джампов в отладчике

              При этом за плечами имею множество статей и закейгененного софта.

              я бы посоветовал изучать тонкости работы hll компиляторов...

              Попробуйте объяснить такие вещи в статье новичкам.


              1. d_olex
                14.04.2015 20:07
                +1

                При этом за плечами имею множество статей и закейгененного софта.

                Не знаю, мне это мало о чем говорит, поскольку cracking — это очень и очень частный случай r/e который мне интересен разве что в контексте тестирования инструментов для автоматического анализа машинного кода (automated keygen generation там, семантический анализ, SMT и прочее).


              1. d_olex
                14.04.2015 20:12

                Попробуйте объяснить такие вещи в статье новичкам

                На эту тему есть достойные книги, начиная dragon book и заканчивая «Reverse Engineering for Beginners», не говоря уже о куче академических публикаций.


                1. DrMefistO Автор
                  14.04.2015 20:13
                  +3

                  Ну, на многие темы, обсуждаемые на Хабре есть куча книг, но, статьи все еще пишутся.


                  1. d_olex
                    14.04.2015 20:21
                    +1

                    Если говорить о статьях именно на тему monkey patching-a — то достаточно один раз осилить курс по program analysis и compilers theory что бы стать умнее чем большая часть целевой аудитории подобных статей. Уча новичков исправлению джампов в отладчике вместо того что бы учить мат. части — вы их не учите, вы их калечите.


                    1. Diaver
                      15.04.2015 00:23
                      -2

                      В ваших комментариях слишком много пафоса


            1. Diaver
              15.04.2015 00:31
              +3

              Какая прелесть, к черту статьи для начинающих и просто любопытствующих, сразу хардкор! Нужна статья или нет решают хаброюзеры и +61 на момент комментария, явно дает понять что нужна.


              1. d_olex
                15.04.2015 00:36
                -1

                Я всего лишь указал на то, что к r/e о котором упомянул автор в своей браваде статья относится весьма посредственно, и дело не столько в хардкорности.


                1. Diaver
                  15.04.2015 00:42
                  +3

                  Почему же весьма посредственно. Мы узнали как устроена работа PVS в части проверки лицензии, любопытствующие узнали как можно модифицировать исполняемые файлы и работать с тулзами типа ольки. То что для вас это слишком просто и не интересно лично ваши проблемы и это не дает вам право ругать автора и статью только на этом основании. Опять же повторюсь что статья была оценена позитивно, а значит имеет право на жизнь.


                  1. d_olex
                    15.04.2015 00:51

                    А я разве говорил что ее нужно удалить?
                    Бить канделябром тех кто ленится восстанавливать алгоритм и писать кейген, вместо этого ломая защиты быстрым грязным патчингом — это давняя (и на мой взгляд справедливая O) традиция крэкинг сообщества, так что ничего личного. Например КК, которого автор считает авторитетом, так же высказывал аналогичный мессадж в своих книгах.


                  1. Alexeyslav
                    15.04.2015 10:31

                    Скорее узнали что есть такие инструменты. А вот как с ними работать — врятли. Есть только рецепты как достичь конкретных целей. Шаг в сторону от рецепты и всё, темнота. А если еще для этих действий необходима предварительная настройка этих инструментов?
                    Но с другой стороны, на чем начинают обучать электронике? Правильно… батарейка-выключатель-лампочка.


          1. darked
            15.04.2015 08:10
            +1

            Не слушайте других, за статью спасибо!!! Все на словах гуру крэкинга и с чёрными поясами по реверсу.

            Интересно почитать такого рода статьи. Как заметили выше — не все в этом разбираются, поэтому простые примеры читать интересно. А усложнение можно сделать и в следующих постах.


          1. monah_tuk
            15.04.2015 08:13

            Поддерживаю! Как с некоторыми багами — анализируешь неделю, две, три… А решение в 1-2 строчки выходит. У меня правда хуже было: две недели на баг, а решение — 1 удалённый символ.


            1. Alexeyslav
              15.04.2015 10:34
              +1

              Это не хуже, это круче! Какое удовольствие уничтожить тот самый символ который две недели не давал спать… а со стороны выглядит как магия: пришел, удалил символ и все заработало.


    1. DrMefistO Автор
      14.04.2015 16:46
      +1

      Многие статьи на exetools именно такие: найти строчку, пропатчить. Так на все можно смотреть с уровня достаточного опыта.


  1. xRay
    14.04.2015 16:42

    Это анализ был проделан на PVS-Studio версии 5.24?


    1. DrMefistO Автор
      14.04.2015 16:44

      Да.


  1. cher11
    14.04.2015 16:59
    +15

    Спасибо, мне, как не имеющему опыт подобного «ковыряния», было очень интересно.
    Да и вообще забавно увидеть статью, в которой все поменялось местами —
    под прицелом оказалась сама PVS Studio, а не открытый код.


  1. zorgrhrd
    14.04.2015 17:35
    -7

    Никогда не понимал в подобных статьях блоки текста про ассемблерный код, какие то тантрические символы, но да, было интересно, спасибо!
    Хотя тут все пишут что это слишком для новичков и не интересно, простите, не все пишут стихи на ассемблере, мне даже в этой статье ничего не понятно и не видно логики, в части про ассемблер, хоть другими языками и владею.


    1. DrMefistO Автор
      14.04.2015 17:36

      Мое упущение. Прошу прощения!) Постараюсь исправиться.


    1. REU
      14.04.2015 17:41
      -2

      Считается, что новичок должен владеть базовыми знаниями в виде знания базовых команд ассемблера. А если человек этого не знает, то он не новичок, а полностью не шарющий в теме человек.


      1. toxicdream
        15.04.2015 08:14

        del — не та ветка


    1. toxicdream
      15.04.2015 08:35
      +1

      Мне кажется, любой программист просто из любопытства обязан посмотреть на ассемблер хоть краем глаза.
      Можно не знать имен и количество регистров, но часто используемые команды ADD, JMP, MOV, CALL и т.п. легко запоминаются.


      1. zorgrhrd
        16.04.2015 11:14

        Соглашусь с одной оговоркой, если это его основной источник дохода.


  1. datacompboy
    14.04.2015 17:59
    +3

    Нда… Столько утилит, когда раньше хватало для того же патча одного hiew…


    1. DrMefistO Автор
      14.04.2015 20:20

      Да, времена уже не те!) Да и зачем велосипедить, если можно некоторые рутинные вещи сделать гораздо быстрее)
      Другое дело, что, если хочется "по F3 дизассемблировать вирусы" (С) (F3 — кнопка вызова Lister в Тотале).


      1. Alexeyslav
        15.04.2015 10:41

        а еще просмотр в VC, NС, MC, DN, FAR… стандартная кнопка вобщем.


    1. MacIn
      14.04.2015 20:31

      hiew пересчитывает контрольную сумму после патча?


  1. PerlPower
    14.04.2015 18:26
    +3

    Каждый раз читаю такую статью и лезу ломать одну программу, которая лежит у меня с 2005 года, и каждый раз мне не хватает терпения. Все-таки то что вышло у автора — один из простейших вариантов.


  1. naum
    14.04.2015 20:08
    -14

    Это отвратительно, так подставлять коллег по цеху. Куча народа уже отписалась в разное время, что ломала пвс авторам пвс. Причем многие кейгенели. Все относились к этому спокойно.

    А тут ман по тупому отлому для нубов. Если не хотели подставить — нужно было скипать название продукта.

    И да, без кейгена за хороший топик не канает. Обучать киддисов можно было и на простеньких крякми, а не продукте пацанов с соседнего хаба.


    1. DrMefistO Автор
      14.04.2015 20:12

      Вообще, часто, целью данных статей (конечно, я отписывался авторам, но реакции ноль), является «ускорение» фиксов защиты в ПО. Так же и с эксплоитами. Все для того, чтобы в будущих версиях какой-нибудь нуб не сделал того же самого. Думаю, все именно так. Плюс, это статья о том, как НЕ надо писать защиту.

      О том, что кто-то отписывался авторам программы, я не в курсе.


      1. naum
        14.04.2015 20:18
        -7

        Вы реально не понимаете, что ребята и не защищались? Они не раз писали об этом. Только всем хватало толку не форсить этот момент. Вы не вайт, не блэкхэт даже, вы просто балбес, решивший понтануться на пустом месте за счёт раскрученного продукта собложников.


        1. DrMefistO Автор
          14.04.2015 20:22
          +2

          Теперь понимаю. Ну, что ж. Теперь пришло время защититься.

          Понтануться я совершенно не хотел, просто, это была программа, которая попалась под руку, вот и все.


        1. VioletGiraffe
          14.04.2015 20:40
          +4

          И что поменялось с выходом этой статьи? Как гуглился кейген, так и гуглится.


          1. DrMefistO Автор
            14.04.2015 20:41
            +2

            И что? Я тут кряков не выкладывал. Цель — обучение реверсу.


            1. VioletGiraffe
              14.04.2015 20:45
              +1

              Так я ж и не у вас спрашивал, а у naum. Не понял его реакцию.


            1. leoismyname
              14.04.2015 22:01

              Просмотрел пост. О каком обучении идет речь? Такую статью и в езинос бы не взяли, слишком толсто даже для того времени :)


        1. mwizard
          15.04.2015 01:17
          +2

          а про Сцену-то, про дух Сцены чего не упомянул?


  1. VBKesha
    14.04.2015 23:24
    +3

    Хорошая статья.
    Как минимум из разряда показать что иногда не всё так сложно как кажется.
    А иногда приходится реверсить прогу не только что бы отучить от жадности, а по банальным причинам например аналогов проги нету но на современной системе из за какой либо мелочи не работает, в итоге зачастую единственный способ это исправить пропатчить прогу, и иногда бывает что того что описано в статье вполне достаточно.


    1. monah_tuk
      15.04.2015 08:22
      +2

      Реверсил ThreadX из SDK Cypress FX3, что бы добавить поддержку в OpenOCD связки ARM926E-JS + ThreadX и упросить отладку через JTAG в дальнейшем. Успешно. Так что поддерживаю комментарий.


  1. petrovnn
    15.04.2015 10:53
    -8

    Мне не нравится агрессивный пиар на хабре этой конторы (как и любой другой), поэтому не скажу что обрадовался… но хорошо что кто-то дал им понять что не только они имеют что сказать


  1. progman_rus
    15.04.2015 13:29
    -3

    WMProtect?
    нет не слышали.


    1. REU
      15.04.2015 13:50
      +5

      Нет, не слышали. VMProtect слышали.


      1. progman_rus
        15.04.2015 13:52

        VMProtect слышали.

        упс.


  1. pfemidi
    17.04.2015 12:42

    Не хочу никому ничего навязывать, но IMHO вместо .NET Reflector вполне можно использовать ILSpy. В отличии от .NET Reflector он свободный и позволяет просматривать код C# ничуть не хуже.


    1. REU
      17.04.2015 12:48
      +1

      Ну тогда можно и dotPeek посоветовать.


      1. pfemidi
        17.04.2015 14:04

        Не смотрел его ни разу, спасибо за наводку, гляну.


    1. DrMefistO Автор
      17.04.2015 13:37

      Дело в предпочтениях. Каждый автор хвалит свой любимый софт.


      1. pfemidi
        17.04.2015 14:02

        За .NET Reflector надо платить, а лично меня жаба душит :) А ворованным я пользоваться не хочу.


  1. Klotos
    18.04.2015 01:17

    Спасибо за статью, продолжайте и не обращайте внимание на огульную и беспочвенную критику.