Декомпилятор обфусцированного кода существует ли (прошу понять и простить) #719221


#0 by xraf
Добрый день! Знаю что это все пиратство, однако это не совсем полная кража, хочу посмотреть код одной обработки, чтобы кусок взять в свой, а декомпилятор выдает что "Возможно, модуль обфусцирован". Если ли инструменты это все вытащить?
#1 by Эльниньо
Во! Теперь знаю, как от назойливых юзеров отмахиваться. - Мне некогда. Я декомпилятор обфусцированного кода пишу
#2 by Garykom
Как теплое связано с мягким?
#3 by Sorm
"однако это не совсем полная кража", "а декомпилятор выдает что "Возможно, модуль обфусцирован"" - круто:)
#4 by xraf
тапочки из натуральной шерсти
#5 by xraf
ну вот как-то так
#6 by akaBrr
нет ничего такого что написал один программист и не может написать другой, пиши сам
#7 by xraf
Если не найду, то придется
#8 by Garykom
судя по отсутствию присутствия признаков юмора типа :) или )) вопрос не поняли компиляция/декомпиляция и обфускация/деобфускация никак не связаны
#9 by xraf
однокоренные слова то
#10 by akaBrr
да не, классный ответ, надо будет запомнить :))
#11 by Jump
А что это за зверь такой? Декомпилятор - программа восстанавливающая из машинных кодов подобие исходного кода на языке высокого уровня. Обфусцированный код - это умышленно запутанный код на языке высокого уровня. Поэтому любой декомпилятор выдает по сути обфусцированный код А использовалась обфускация или нет до создания бинарника, дело вообще неважное.
#12 by akaBrr
скомпилированный код дополнительно может подвергаться обфускации
#13 by xraf
короче без вариантов
#14 by xraf
Ладно, пошел кодить
#15 by anatoly
П-код?
#16 by akaBrr
ага
#17 by Jump
После работы компилятора получить исходный код уже невозможно. В лучшем случае более менее структуру кода выдаст, путанную с кривыми переменными.
#18 by Garykom
не в полуручном режиме можно но стандартный редактор 1С фигово с рефакторингом работает нужно что то типа как в визуал студиях последних типа переменную переименовал в одном месте и она везде переименовалась причем только там где и нуна типа локальные в других проц/функ не тронулись
#19 by Jump
Это как? Дополнительные переходы и ветвления добавляюстя, которые никогда не работают?
#20 by gidilica_alexandr
в свое время думал что обфускация действительно помогает от декомпиляции - не помогает :( кстати а кто подскажет чо надо в коде написать - чтоб декомпилятор так же ругался ?
#21 by Зойч
вроде в полсдених релизах добавили по рефакторингу ко что
#22 by Jump
Не в исходном коде, а в уже скомпилированном машкоде. А что написать - зависит от компилятора, и его принципов разбора. Т.е надо его поставить в тупик.
#23 by awa15
есть
#24 by bolobol
Компилятор в тупик? А не выругается на тупик, что прогер тупик?
#25 by МимохожийОднако
фарш невозможно провернуть назад
#26 by spectre1978
Ну, на ассемблере можно данные покидать туда-сюда на регистрах, в стек - из стека запихнуть один регистр, а восстановить другой... чтобы разобраться что делает такой код, придется долго сидеть с листком и ручкой, а он всего-то прибавляет константу к EAX :)
#27 by Garykom
речь про код обработки на 1С обработанной обфускатором Чаще всего вместо того чтобы разобраться и приспособить чужой код бывает проще за то же самое время или даже быстрее написать свой...
#28 by Rebelx
после работы компилятора 1С можно получить исходный код на 100%, отличаться будет только форматированием и отсутствием коментариев. чтобы этого избежать, для защиты от всяких любопытных ("...я же просто украду чужой код и вставлю в свою обработку...") существуют решения для обфускации скомпилированного кода, например такие как WiseAdvice: Защита конфигураций
#29 by Rebelx
к
#30 by spectre1978
дело в том, что результатом компиляции в системах 1С является промежуточный p-код, который как раз-таки и исполняется системой. Вот его и разумно было бы обфусцировать.
#31 by m-serg74
++++++
#32 by Garykom
ну если исходный код обфусцирован то и промежуточный p-код тоже (заменены имена переменных и методов, добавлен лишний код)
#33 by spectre1978
не совсем так. При работе декомпилятор может искать конструкции, характерные для операторов высокого уровня. Но если код прошел через обфускатор, он такие конструкции просто не найдет, потому что они искажены.
#34 by mehfk
Я догадывался что должен быть декомпилятор, который строит код на основе <фиктивного> исполнения p-кода. Ваш декомпилятор (который доступен в паблике) он же так не умеет - он же построчно анализирует?
#35 by spectre1978
имеется в виду уже скомпилированный p-код
#36 by Garykom
понял, речь про запутывание декомпилятора, а не человека читающего декомпилированный код, т.е. препятствование самому процессу декомпиляции да тут надо p-код менять, но проблемки могут возникнуть, почти все такие способы запутывания основаны на особенностях интерпретатора, т.е. другая версия платформы 1С и наш код не выполняется/падает с ошибкой
#37 by mehfk
Ваши опасения скорее всего излишни.
#38 by Garykom
угу платформы 1С 8.2 и 1С 8.3, исходный код одинаков, чтобы на другой запустить нужна конвертация - и? 99,% что обфусцированный p-код не запустится
#39 by spectre1978
а на другой версии платформы обработки внешние и сами собой без перекомпиляции не работают, безо всяких декомпиляторов с обфускаторами. От 8.1 в 8.2 ведь не работают?
#40 by mehfk
У вас же нет примера, подтверждающего ваши предположения?
#41 by spectre1978
очень сильно подозреваю, что так оно и есть. Обфусцированная обработка без исходного кода, скорее всего, будет работать только под той платформой, для которой предназначена. То бишь автору нужно подготовить три файла для 8.1, 8.2 и 8.3.
#42 by Garykom
так про это и речь что такая обфускация p-кода сильно усложнит нормальную работу конф
#43 by mehfk
"99,% что обфусцированный p-код не запустится" awa15 и Rebelx должны знать :)
#44 by spectre1978
любая защита вообще усложняет жизнь. Не будь хаспа с программными лицухами, насколько веселее бы жилось админам... Но есть то что есть.
#45 by Garykom
ага и вполне возможно что и больше причем только на практике можно будет проверить под какие конкретно версии платформы оно будет 100% работать
#46 by Garykom
типа хасп с программными лицухами меньшее нарушение чем патч dll?
#47 by mehfk
По моим наблюдениям, до настоящего времени этого не было нужно делать.
#49 by spectre1978
ну если можно открыть и пересохранить защищенную обработку в новой платформе, то не надо. А вот один раз у меня не получилось, не открыл. Там, значит, надо.
#50 by spectre1978
наверно, зависит от того какая защита
#51 by mehfk
закинь обработку на обенник - посмотреть.
#52 by Garykom
Выходит сделать обфускатор p-кода можно, защищать будет надежнее но глюков будет больше чем при обфускации исходного кода
#53 by awa15
Тот, что в паблике, в основе своей примитивен, работает на основе того, что 1С конструкции языка компилирует в одинаковые последовательности п-кода. Есть и другие способы. У меня есть концепт, основан на построении графа потока управления. Имена переменных, естественно, не восстанавливаются, но все сам код (конструкции Если, циклы и т.д.) восстанавливается. П-код с 8.0 не менялся (в 8.1 только появились несколько новых команд). Мой декомпилятор написан в 8.0, обфусцирован, но при этом прекрасно работает и в 8.1, и в 8.2, и в 8.3. Надо только сконвертировать обработку. П-код при конвертации никак не меняется.
#54 by spectre1978
Блин, я ее теперь не знаю найду или нет. Это была одна из обработок с ИС, я тогда запускал у себя контур ЗУП в УПП и были нужны разнообразные внешние отчеты, качал все подряд интересное, что не годилось - откидывал. Боюсь, не найду теперь.
#55 by mehfk
Пора писать плагин для IDA и продавать :)
#56 by Rebelx
не совсем верно. код не меняется. но добавляются новые встроеные функции и изменяется количество параметров. Не помню в каком именно случае, но когда-то это вылезло, и скомпилированный модуль не выполнился.
#57 by awa15
В этом случае не выполнился бы и не скомпилированный код. Встроенные функции не менялись. А функции глобального контекста и прочие объекты к п-коду отношения не имеют. Разница только в том, что имея исходный код, можно поправить.
#58 by Rebelx
не помню всей истории, но фишка вроде в том, что в одной версии было в пи-коде был вызов с двумя параметрами, а платформе надо было три. При компиляции в нужной платформе в пи-коде было нужное количество параметров.
#59 by awa15
Ну вообще да, не со встроенными функциями такое возможно.
#60 by Torquader
Если в двух разных участках кода использовались разные переменные, а при компиляции им была выделена общая ячейка, то очень сложно потом объяснить декомпилятору, что одна и та же ячейка в разных местах имеет разное имя.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С