#0
by xraf
Добрый день! Знаю что это все пиратство, однако это не совсем полная кража, хочу посмотреть код одной обработки, чтобы кусок взять в свой, а декомпилятор выдает что "Возможно, модуль обфусцирован". Если ли инструменты это все вытащить?
#1
by Эльниньо
Во! Теперь знаю, как от назойливых юзеров отмахиваться. - Мне некогда. Я декомпилятор обфусцированного кода пишу
#3
by Sorm
"однако это не совсем полная кража", "а декомпилятор выдает что "Возможно, модуль обфусцирован"" - круто:)
#8
by Garykom
судя по отсутствию присутствия признаков юмора типа :) или )) вопрос не поняли компиляция/декомпиляция и обфускация/деобфускация никак не связаны
#11
by Jump
А что это за зверь такой? Декомпилятор - программа восстанавливающая из машинных кодов подобие исходного кода на языке высокого уровня. Обфусцированный код - это умышленно запутанный код на языке высокого уровня. Поэтому любой декомпилятор выдает по сути обфусцированный код А использовалась обфускация или нет до создания бинарника, дело вообще неважное.
#17
by Jump
После работы компилятора получить исходный код уже невозможно. В лучшем случае более менее структуру кода выдаст, путанную с кривыми переменными.
#18
by Garykom
не в полуручном режиме можно но стандартный редактор 1С фигово с рефакторингом работает нужно что то типа как в визуал студиях последних типа переменную переименовал в одном месте и она везде переименовалась причем только там где и нуна типа локальные в других проц/функ не тронулись
#20
by gidilica_alexandr
в свое время думал что обфускация действительно помогает от декомпиляции - не помогает :( кстати а кто подскажет чо надо в коде написать - чтоб декомпилятор так же ругался ?
#22
by Jump
Не в исходном коде, а в уже скомпилированном машкоде. А что написать - зависит от компилятора, и его принципов разбора. Т.е надо его поставить в тупик.
#26
by spectre1978
Ну, на ассемблере можно данные покидать туда-сюда на регистрах, в стек - из стека запихнуть один регистр, а восстановить другой... чтобы разобраться что делает такой код, придется долго сидеть с листком и ручкой, а он всего-то прибавляет константу к EAX :)
#27
by Garykom
речь про код обработки на 1С обработанной обфускатором Чаще всего вместо того чтобы разобраться и приспособить чужой код бывает проще за то же самое время или даже быстрее написать свой...
#28
by Rebelx
после работы компилятора 1С можно получить исходный код на 100%, отличаться будет только форматированием и отсутствием коментариев. чтобы этого избежать, для защиты от всяких любопытных ("...я же просто украду чужой код и вставлю в свою обработку...") существуют решения для обфускации скомпилированного кода, например такие как WiseAdvice: Защита конфигураций
#30
by spectre1978
дело в том, что результатом компиляции в системах 1С является промежуточный p-код, который как раз-таки и исполняется системой. Вот его и разумно было бы обфусцировать.
#32
by Garykom
ну если исходный код обфусцирован то и промежуточный p-код тоже (заменены имена переменных и методов, добавлен лишний код)
#33
by spectre1978
не совсем так. При работе декомпилятор может искать конструкции, характерные для операторов высокого уровня. Но если код прошел через обфускатор, он такие конструкции просто не найдет, потому что они искажены.
#34
by mehfk
Я догадывался что должен быть декомпилятор, который строит код на основе <фиктивного> исполнения p-кода. Ваш декомпилятор (который доступен в паблике) он же так не умеет - он же построчно анализирует?
#36
by Garykom
понял, речь про запутывание декомпилятора, а не человека читающего декомпилированный код, т.е. препятствование самому процессу декомпиляции да тут надо p-код менять, но проблемки могут возникнуть, почти все такие способы запутывания основаны на особенностях интерпретатора, т.е. другая версия платформы 1С и наш код не выполняется/падает с ошибкой
#38
by Garykom
угу платформы 1С 8.2 и 1С 8.3, исходный код одинаков, чтобы на другой запустить нужна конвертация - и? 99,% что обфусцированный p-код не запустится
#39
by spectre1978
а на другой версии платформы обработки внешние и сами собой без перекомпиляции не работают, безо всяких декомпиляторов с обфускаторами. От 8.1 в 8.2 ведь не работают?
#41
by spectre1978
очень сильно подозреваю, что так оно и есть. Обфусцированная обработка без исходного кода, скорее всего, будет работать только под той платформой, для которой предназначена. То бишь автору нужно подготовить три файла для 8.1, 8.2 и 8.3.
#42
by Garykom
так про это и речь что такая обфускация p-кода сильно усложнит нормальную работу конф
#44
by spectre1978
любая защита вообще усложняет жизнь. Не будь хаспа с программными лицухами, насколько веселее бы жилось админам... Но есть то что есть.
#45
by Garykom
ага и вполне возможно что и больше причем только на практике можно будет проверить под какие конкретно версии платформы оно будет 100% работать
#49
by spectre1978
ну если можно открыть и пересохранить защищенную обработку в новой платформе, то не надо. А вот один раз у меня не получилось, не открыл. Там, значит, надо.
#52
by Garykom
Выходит сделать обфускатор p-кода можно, защищать будет надежнее но глюков будет больше чем при обфускации исходного кода
#53
by awa15
Тот, что в паблике, в основе своей примитивен, работает на основе того, что 1С конструкции языка компилирует в одинаковые последовательности п-кода. Есть и другие способы. У меня есть концепт, основан на построении графа потока управления. Имена переменных, естественно, не восстанавливаются, но все сам код (конструкции Если, циклы и т.д.) восстанавливается. П-код с 8.0 не менялся (в 8.1 только появились несколько новых команд). Мой декомпилятор написан в 8.0, обфусцирован, но при этом прекрасно работает и в 8.1, и в 8.2, и в 8.3. Надо только сконвертировать обработку. П-код при конвертации никак не меняется.
#54
by spectre1978
Блин, я ее теперь не знаю найду или нет. Это была одна из обработок с ИС, я тогда запускал у себя контур ЗУП в УПП и были нужны разнообразные внешние отчеты, качал все подряд интересное, что не годилось - откидывал. Боюсь, не найду теперь.
#56
by Rebelx
не совсем верно. код не меняется. но добавляются новые встроеные функции и изменяется количество параметров. Не помню в каком именно случае, но когда-то это вылезло, и скомпилированный модуль не выполнился.
#57
by awa15
В этом случае не выполнился бы и не скомпилированный код. Встроенные функции не менялись. А функции глобального контекста и прочие объекты к п-коду отношения не имеют. Разница только в том, что имея исходный код, можно поправить.
#58
by Rebelx
не помню всей истории, но фишка вроде в том, что в одной версии было в пи-коде был вызов с двумя параметрами, а платформе надо было три. При компиляции в нужной платформе в пи-коде было нужное количество параметров.
#60
by Torquader
Если в двух разных участках кода использовались разные переменные, а при компиляции им была выделена общая ячейка, то очень сложно потом объяснить декомпилятору, что одна и та же ячейка в разных местах имеет разное имя.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Конвертация данных. Как для поиска использовать произвольный алгоритм/запрос?
- Нарушена целостность структуры конфигурации
- Новый формат журнала регистрации - файл lgp создал, но обновляет только lgp
- Не работает функция НайтиПоНомеру
- не работает КомпонентаСклоненияФИО в серверной базе 8.3
- ДанныеГрафика
- v7: Формат строки в таблице
- УТ 11.1 и сканер штрихкода Меркурий CL-200
- Не получается
- Можно ли свернуть команды подсистемы?
- УТ11. Реализация после обновления
- Цепочка документов в УПП.
- БП 3.0: Реализация без НДС или с НДС по ставке 0 %.
- Настройка и отправка эл почты в УТ11 права для пользователя.
- Объект не рекомендуется редактировать
- v7: ТиС. Как в запросе обратится к периодическому реквизиту ?
- Ошибка 1с УТ :Слишком много фактических параметров
- 1С КД и перенос документа с движением и произвольным алгоритмом отбора
- КД передать ссылку на справочник имея в реквизите СТРОКУ
- ЕСТЬNULL в запросе