Абстрактный вопрос, крякаю рендер возникли трудности, нужен совет

Discussion in 'Реверсинг' started by mirvirusov, 11 Jul 2021.

  1. mirvirusov

    mirvirusov New Member

    Joined:
    11 Jun 2021
    Messages:
    29
    Likes Received:
    3
    Reputations:
    0
    В общем кто знаком с 3D графикой думаю знает, что существуют сторонние плагины-рендеры, в демо версии обычно на выходное изображение накладываются водяные знаки. Полная версия после установки требует лицензию и не дает получить никакое изображение даже с водяными знаками. В полной версии я пропатчил проверку лицензии и заставил рендер вывести изображение(я банально заменил call на mov eax, 1, так как опытным путем было вычислено, что если функция отрабатывает с легальной лицензией, то в конце в eax заносится 1, в противном случае 0 и дальнейший ход программы зависит от этого значения), но увидел, что изображение все испорчено и на него наложен шум помимо водяных знаков, далее я определил, что там стоит защита кода от модификации, если более просто - контрольная сумма байтов некоторых критичных к изменениям функций. Это мне тоже удалось обойти, я брякнулся после вычисления суммы на месте где она сравнивается с той, что должна быть и просто пропатчил старый хеш на новый. Шум убрался но остались водяные знаки. Как я предполагаю, внутри функции, которая проверяет лицензию, устанавливаются какие-то значения, которые в дальшейшем при старте рендера проверяются некой условной конструкцией, и она уже определяет будут ли добавлены водяные знаки или нет. Так как вызов функции я просто заменяю на другую инструкцию, то следовательно и переменные эти не инициализируются нужными значениями. Отследить какие именно значения и куда именно заносятся не предполагается возможным, потому что функция проверки многопоточная и каждый из потоков совершает сотни и тысячи операций записи\чтения в память приложения, и найти нужное значение в этой каше все равно, что искать иголку в стоге сена. Далее я попытался найти конструкцию, которая проверяет эти переменные и принимает решение о добавлении водяных знаков. Во время рендера паттерн водяных знаков меняется, это не просто какой-то текст поверх изображения, а процедурно-генерируемый полупрозрачный шум, который накладывается на изображение в виде текстового логотипа компании и во время рендера постоянно меняется, меняется сам паттерн, а буквы остаются на своих местах. Я нашел цикл, и вроде бы как могу предположить, что водяные знаки генерируются и добавляются внутри него, я поставил бряк на начало цикла и каждый раз когда я давал ему сделать один проход этот паттерн(шум) на водяных знаках менялся, значит он генерируется и добавляется внутри цикла ? Поправьте меня, если я ошибаюсь касательно этого умозаключения. У меня было еще предположение, что шум может генерироваться в отдельном потоке, а конструкция внутри цикла всего лишь принимает решение добавить его или нет, но сути это не меняет, если эта конструкция внутри цикла, то ее можно поменять и тогда независимо от генерации шума он не будет добавляться. Не может же этот процесс контролироваться извне, за пределами цикла ? Заметка. И первая функция, которая проверяет лицензию и вот этот цикл достаточно большие по объему кода, трассировка со скоростью 5к инструкций в секунду длится на них примерно минут по 15 и занимает на диске по 1.5 гб места, это достаточно много кода, что бы анализировать его в лоб, но нет никаких зацепок, что бы приблизиться ближе к месту, где добавляются эти водяные знаки. Может кто знает, какие-то еще методы сужения круга поиска ? Методом исключения и отсечения лишнего я вроде бы как определил, что это нужный мне цикл, но он большой как я писал выше, внутри него происходит много взаимодействия с другими dll, некоторые из них используют видеокарту для графических вычислений, некоторые выводят картинку в окно рендера, в общем очень много суеты в этом цикле, и я пока не понимаю, как мне приблизиться к месту, которое принимает решение о добавлении водяных знаков. Понятное дело, что многие из вас не знакомы с рендером и с механизмами его работы, но я постарался расписать все абстрактно, что бы это было применимо к каким-то схожим ситуациям, и хочу получить от вас такие же абстрактные ответы и советы, возможно они мне помогут.
     
    1. DartPhoenix

      DartPhoenix Elder - Старейшина

      Joined:
      15 Sep 2013
      Messages:
      1,108
      Likes Received:
      8,502
      Reputations:
      25
      Код защиты если не дергается постоянно - то вроде-как его надо и отслеживать во-первых. Во-вторых сразу загуглить все отключалки антиотладки потому что в каше рендера черта лысого найдешь а не антиотладку.
      Ну или ручками проверить... надежнее но геморнее. Заранее отключить не помешает (хотя могут быть лаги изза этого, но их вроде-как легче увидеть).

      По поводу шума... это рендер. Этот шум может генерироваться в самых разных его частях. Включая шейдеры (кстати я бы посмотрел код вершинных шейдеров на этот предмет).
      Ну тоесть рендер тебе генерирует изображение вообще-то. Он может и распараллелить его генерацию (что сложнее) и вообще поместить невидимый объект (что намного проще).
      Вариантов масса.
      =====================
      Простых путей мы не ищем же да ? Купить более нормальный плагин и там поискать например ? :)
      Зашить на самом деле много куда можно. Без кода угадать... нереально. А с кодом - его копать не захочется.

      Сужение поиска можешь сделать ты. Скажем отрубая к черту шейдеры вообще. Но вообще строго говоря вот так нопать все подряд - обычно плохая практика. Рендер минимума объектов есессно надо применить.
      В эти объекты ты можешь запихнуть метки. Можно рубить вообще половину кода закрывая его jmp'ом условно.
      Иногда оно срабатывает ! Но только иногда. Зависит от цены. Более того если это рендер - вероятно его уже кто-то крутил. Можно поискать кряку. Хотя-бы на старую версию. Уже может стать понятнее.

      Вообще же желательно найти защиту и ковырять ее код. Тоесть если это файлик - найти где этот файлик открывается и.... да хранят боги твой мозг.
      Ибо его придется применять.

      =====================
      Чойт за плагин-то кстати ?
       
      1. DartPhoenix

        DartPhoenix Elder - Старейшина

        Joined:
        15 Sep 2013
        Messages:
        1,108
        Likes Received:
        8,502
        Reputations:
        25
        Кстати постпроцессинг вполне может быть. Даже очень может быть. Тоесть уже после формирования изображения в конце просто нашлепывают
        водяной знак. Но это вроде примитивно. Тогда можно сократить посредством отбрасывания львиной доли всего этого процесса. Где-то где
        сохранение уже происходит в буфер (а лучше в файл сохранять чтоб не возиться с буфером).

        Ну тоесть если они делают хитрО - чото так кааацо - хрен ты чего найдешь методом отрубания частей кода.
         
        1. mankurt13

          mankurt13 Well-Known Member

          Joined:
          18 Oct 2019
          Messages:
          378
          Likes Received:
          1,542
          Reputations:
          3
          Скорей всего файл лицензии содержит в себе какие-то данные, использующиеся при рендеринге. Поэтому тупо затык булева фалса на тру при проверке лицензии приводит к таким спецэффектам. Пытаться выщемить такие косяки наугад имхо мартышкин труд, надо сочинить файл лицензии и изучать как он обрабатываться плугином, а еще лучше взять чужую лицензию и пробовать подсовывать программе подходящие этой лицензии хардварные иденты (или функцию от этих идентов, например хеш, если программа сваливает их в кучу, хеширует и использует хеш для проверки). Принцип минимального вмешательства.
           
          #4 mankurt13, 11 Jul 2021
          Last edited: 11 Jul 2021
          1. mirvirusov

            mirvirusov New Member

            Joined:
            11 Jun 2021
            Messages:
            29
            Likes Received:
            3
            Reputations:
            0
            Код защиты дергается каждый раз когда нажимаешь кнопку рендера, тоесть если рендеришь много кадров то проверок будет столько сколько кадров ты рендеришь. Антиотладку всю обошел, у меня есть валид файлы лицензии и под отладчиком все нормально работает без шума и водяных знаков. То-есть дело не в антиотладке. По поводу того что бы покопаться в старых кряках, последний кряк был сделан году так в 2017, может даже раньше, сам кряк реализован челиком, который по видимому не хотел что бы кто- то узнал как он сделал кряк, там в одну из библиотек рендера в импорт всобачена сторонняя либа, которой нет в оригинальном рендере, эта либа от крекера, она за собой тянет еще 2 либы, я пробовал их реверсить, но там все довольно сложно, куча шеллкодов, самомодификация и много всякой чепухи в которую не хочется впутываться, в общем как я понял это встроенный лоадер, который в памяти патчит необходимые куски памяти, тут единственный вариант это сделать дамп оригинального процесса и дамп того, который обработан dll ками крекера, так как там мне кажется защита стоит даже получше чем у самого рендера, раз челик смог ее сломать и следовательно во всем этим знаком и может сделать лучше, но это предположения.
             
            1. mirvirusov

              mirvirusov New Member

              Joined:
              11 Jun 2021
              Messages:
              29
              Likes Received:
              3
              Reputations:
              0
              Да согласен, это долго, но на самом деле защита я уверен не такая уж там замороченная, они спрятали строки импортируемой функции, которая используется для антиотладки в коде проверки хешсуммы участков кода просто написав строку задом наперед, я даже в дампе сразу спалил ее, просто строку задом наперед написать это ж надо додуматься до такой банальщины, никакой шифровки, а сами хеш суммы хранятся в секции инициализированных данных в открытом виде без шифровки, я бы их шифровал как минимум, что бы нельзя было просто взять и пропатчить, пришлось бы раскручивать алгоритм расшифровки, что бы посчитать новый хеш, и зашифровать его, что бы он потом корректно расшифровывылся и приходил к нужному виду. В общем тут сложности не сколько в технической подготовке разработчиков в плане защиты, сколько в оъеме кода, который приходится анализировать.
               
              1. mirvirusov

                mirvirusov New Member

                Joined:
                11 Jun 2021
                Messages:
                29
                Likes Received:
                3
                Reputations:
                0
                Да, такие файлы есть, но этот файл получается через интернет один раз при первой активации раз и навсегда, и люди с лицензией предоставили мне свои версии этих файлов и они у всех совпадают байт в байт, так что там нет привязки к железу, привязка к железу в других файлах, они проверяются именно в той функции, которую я вырезаю и заменяю просто инструкцией, которая сигнализирует о успешно отработавшей функции. Рендер после этого запускается и работает прекрасно (с учетом если пропатчить контрольную сумму в механизме защиты) но как я писал выше остаются водяные знаки. Понятное дело, что внутри этой функции производятся какие-то инициализации, каких то значений, найти их не представляется возможным, так как там тысячи обращений к памяти и по записи и по чтению. Рендер после вырезания лицензии работает идеально без нареканий, просто поверх изображения наложены шумящие буквы, при этом там где водяных знаков нет, рендер выглядит идеально, тоесть там в функции не производятся какие-то критично важные для рендера действия, опытным путем я вычислил что водяные знаки добавляются позже, причем при прогрессивном рендере можно задать количество проходов и на каждом проходе шум меняется, это происходит на каждой итерации найденного мою цикла, следовательно шум генерируется и добавляется внутри цикла.
                 
                1. DartPhoenix

                  DartPhoenix Elder - Старейшина

                  Joined:
                  15 Sep 2013
                  Messages:
                  1,108
                  Likes Received:
                  8,502
                  Reputations:
                  25
                  Это само-собой. Тут сомнений и не было.
                  Но он же модифицирует файлик ? Нахрен тебе туда впутываться (тем более там вообще может быть просто демка а не зощита), если тебе надо сравнить производимые модификации. Чо он там копает.
                  Если в памяти... грхм... параноидальный этот мистер крякер. Но все-равно это лучше чем нопать рандомно. Наверное...

                  Значит и решения должны быть простые. Первое - это постпроцессинг. Это самое простое. Свет просчитан, картинка почти готова - после этого накладываем
                  спецэффекты.

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

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

                  Тести... "дорогу осилит идущий" :)
                   
                  1. DartPhoenix

                    DartPhoenix Elder - Старейшина

                    Joined:
                    15 Sep 2013
                    Messages:
                    1,108
                    Likes Received:
                    8,502
                    Reputations:
                    25
                    Сложность еще в том что зощита может находиться в коде шейдера нпример. Тоесть он тупо проверяет что-то. У тебя в асме нихрена нет а шейдер в голом виде записан в каком-нибудь
                    текстовом файле. И иди ищи... пока не устанешь. Х/з.
                     
                    1. mirvirusov

                      mirvirusov New Member

                      Joined:
                      11 Jun 2021
                      Messages:
                      29
                      Likes Received:
                      3
                      Reputations:
                      0
                      Я могу чуть позже кинуть в личные сообщения видео, на котором показываю этапы, и что происходит в результате модификаций
                       
                      1. DartPhoenix

                        DartPhoenix Elder - Старейшина

                        Joined:
                        15 Sep 2013
                        Messages:
                        1,108
                        Likes Received:
                        8,502
                        Reputations:
                        25
                        Только не в личные сообщения. Пости всем чоушь.
                        Мне это не поможет, у меня хекс-редактора даже нет нормального :)
                         
                        1. mirvirusov

                          mirvirusov New Member

                          Joined:
                          11 Jun 2021
                          Messages:
                          29
                          Likes Received:
                          3
                          Reputations:
                          0
                          Не хочется постить в публичном месте, потому что так я палю методы которыми пробираюсь вглубь защиты, не хочется что бы разработчики плагина увидели видео и сменили тип защиты, в будущих версиях придется заново копаться во всем коде, ну при условии что у меня получится победить эту версию
                           
                          1. mirvirusov

                            mirvirusov New Member

                            Joined:
                            11 Jun 2021
                            Messages:
                            29
                            Likes Received:
                            3
                            Reputations:
                            0
                            Скорее всего челик который сделал предыдущий кряк не параноик, а просто не хотел что бы разрабы увидели как он сделал кряк. для себя же вклад на будущее делал.
                             
                            1. mirvirusov

                              mirvirusov New Member

                              Joined:
                              11 Jun 2021
                              Messages:
                              29
                              Likes Received:
                              3
                              Reputations:
                              0
                              Я почему тебе хочу написать в лс, потому что ты видимо разбираешься как работает рендер, необязательно тебе хекс редактор иметь, просто видео глянешь и свои умозаключения по этому поводу напишешь
                               
                              1. DartPhoenix

                                DartPhoenix Elder - Старейшина

                                Joined:
                                15 Sep 2013
                                Messages:
                                1,108
                                Likes Received:
                                8,502
                                Reputations:
                                25
                                Посмотри на это с другой стороны например: может быть кто-нибудь научится этим методам (не уверен я сильно что они так секретны).

                                Я когда-то думал тоже что мои методы очень секретны :) Пока не добрался до реально секретных.
                                Когда будут секретные - ты их узнаешь без сомнения и к тому времени уже будешь знать даже сколько они могут стоить :)

                                Жадность - это плохо :) Но хоть честно сказал. Я не говорил. Просто ныкал по норам. И совершенно напрасно.
                                Это как-раз таки метод самообучения. Ты научился, кто-то еще научился. Научили друг-друга.

                                А когда дойдет до секретности - это уже будет совсем другая история. Сейчас - я не уверен что у тебя есть что-то секретное. И ушь тем более что ты на этом заработаешь нормально.
                                 
                                1. mirvirusov

                                  mirvirusov New Member

                                  Joined:
                                  11 Jun 2021
                                  Messages:
                                  29
                                  Likes Received:
                                  3
                                  Reputations:
                                  0
                                  ты не понял, секретны не мои методы относительно других реверсеров, я с радостью расскажу о них каждому реверсеру на этом форуме и еще на паре других впридачу, я не хочу что бы это видео увидели разработчики плагина, вот от них я бы хотел это скрыть
                                   
                                  1. DartPhoenix

                                    DartPhoenix Elder - Старейшина

                                    Joined:
                                    15 Sep 2013
                                    Messages:
                                    1,108
                                    Likes Received:
                                    8,502
                                    Reputations:
                                    25
                                    Плевать на них. С высокой вероятностью им вообще похрен. До выхода кряка хрен там кто почешется :)
                                     
                                    1. mirvirusov

                                      mirvirusov New Member

                                      Joined:
                                      11 Jun 2021
                                      Messages:
                                      29
                                      Likes Received:
                                      3
                                      Reputations:
                                      0
                                      Я написал в лс
                                       
                                      DartPhoenix likes this.
                                      1. mirvirusov

                                        mirvirusov New Member

                                        Joined:
                                        11 Jun 2021
                                        Messages:
                                        29
                                        Likes Received:
                                        3
                                        Reputations:
                                        0
                                        Пс, ответь в лс, идейка возникла одна