Имя: Пароль:
1C
1С v8
Декомпилятор обфусцированного кода существует ли (прошу понять и простить)
, ,
0 xraf
 
05.09.14
16:04
Добрый день!
Знаю что это все пиратство,
однако это не совсем полная кража, хочу посмотреть код одной обработки, чтобы кусок взять в свой, а декомпилятор выдает что "Возможно, модуль обфусцирован".
Если ли инструменты это все вытащить?
1 Эльниньо
 
05.09.14
16:06
Во! Теперь знаю, как от назойливых юзеров отмахиваться.
- Мне некогда. Я декомпилятор обфусцированного кода пишу
2 Garykom
 
гуру
05.09.14
16:06
(0) Как теплое связано с мягким?
3 Sorm
 
05.09.14
16:07
(0) "однако это не совсем полная кража", "а декомпилятор выдает что "Возможно, модуль обфусцирован"" - круто:)
4 xraf
 
05.09.14
16:07
(2) тапочки из натуральной шерсти
5 xraf
 
05.09.14
16:07
(3) ну вот как-то так
6 akaBrr
 
05.09.14
16:08
(0) нет ничего такого что написал один программист и не может написать другой, пиши сам
7 xraf
 
05.09.14
16:10
(6) Если не найду, то придется
8 Garykom
 
гуру
05.09.14
16:10
(4) судя по отсутствию присутствия признаков юмора типа :) или )) вопрос не поняли

компиляция/декомпиляция и обфускация/деобфускация никак не связаны
9 xraf
 
05.09.14
16:11
(8) однокоренные слова то
10 akaBrr
 
05.09.14
16:12
(8) да не, классный ответ, надо будет запомнить :))
11 Jump
 
05.09.14
16:12
(0)А что это за зверь такой?
Декомпилятор - программа восстанавливающая из машинных кодов подобие исходного кода на языке высокого уровня.

Обфусцированный код - это умышленно запутанный код на языке высокого уровня.

Поэтому любой декомпилятор выдает по сути обфусцированный код

А использовалась обфускация или нет до создания бинарника, дело вообще неважное.
12 akaBrr
 
05.09.14
16:13
(11) скомпилированный код дополнительно может подвергаться обфускации
13 xraf
 
05.09.14
16:14
(11) (12) короче без вариантов
14 xraf
 
05.09.14
16:14
Ладно, пошел кодить
15 anatoly
 
05.09.14
16:15
(12) П-код?
16 akaBrr
 
05.09.14
16:16
(15) ага
17 Jump
 
05.09.14
16:16
(13)После работы компилятора получить исходный код уже невозможно.
В лучшем случае более менее структуру кода выдаст, путанную с кривыми переменными.
18 Garykom
 
гуру
05.09.14
16:16
(13) не в полуручном режиме можно но стандартный редактор 1С фигово с рефакторингом работает

нужно что то типа как в визуал студиях последних типа переменную переименовал в одном месте и она везде переименовалась причем только там где и нуна типа локальные в других проц/функ не тронулись
19 Jump
 
05.09.14
16:17
(12)Это как? Дополнительные переходы и ветвления добавляюстя, которые никогда не работают?
20 gidilica_
alexandr
 
05.09.14
16:27
в свое время думал что обфускация действительно помогает от декомпиляции - не помогает :(
кстати а кто подскажет чо надо в коде написать - чтоб декомпилятор так же ругался ?
21 Зойч
 
05.09.14
16:28
(18) вроде в полсдених релизах добавили по рефакторингу ко что
22 Jump
 
05.09.14
17:06
(20)Не в исходном коде, а в уже скомпилированном машкоде.
А что написать - зависит от компилятора, и его принципов разбора. Т.е надо его поставить в тупик.
23 awa15
 
05.09.14
18:03
(0) есть
24 bolobol
 
05.09.14
19:04
(22) Компилятор в тупик? А не выругается на тупик, что прогер тупик?
25 Мимохожий Однако
 
05.09.14
19:10
фарш невозможно провернуть назад
26 spectre1978
 
05.09.14
19:21
(19) Ну, на ассемблере можно данные покидать туда-сюда на регистрах, в стек - из стека запихнуть один регистр, а восстановить другой... чтобы разобраться что делает такой код, придется долго сидеть с листком и ручкой, а он всего-то прибавляет константу к EAX :)
27 Garykom
 
гуру
05.09.14
19:35
(26) речь про код обработки на 1С обработанной обфускатором

Чаще всего вместо того чтобы разобраться и приспособить чужой код бывает проще за то же самое время или даже быстрее написать свой...
28 Rebelx
 
05.09.14
19:41
(13) после работы компилятора 1С можно получить исходный код на 100%, отличаться будет только форматированием и отсутствием коментариев.

чтобы этого избежать, для защиты от всяких любопытных ("...я же просто украду чужой код и вставлю в свою обработку...") существуют решения для обфускации скомпилированного кода, например такие как WiseAdvice: Защита конфигураций
29 Rebelx
 
05.09.14
19:41
(28) к (17)
30 spectre1978
 
05.09.14
22:01
(27) дело в том, что результатом компиляции в системах 1С является промежуточный p-код, который как раз-таки и исполняется системой. Вот его и разумно было бы обфусцировать.
31 m-serg74
 
05.09.14
22:03
(25) ++++++
32 Garykom
 
гуру
05.09.14
22:12
(30) ну если исходный код обфусцирован то и промежуточный p-код тоже (заменены имена переменных и методов, добавлен лишний код)
33 spectre1978
 
05.09.14
22:20
(32) не совсем так. При работе декомпилятор может искать конструкции, характерные для операторов высокого уровня. Но если код прошел через обфускатор, он такие конструкции просто не найдет, потому что они искажены.
34 mehfk
 
05.09.14
22:20
(23) Я догадывался что должен быть декомпилятор, который строит код на основе <фиктивного> исполнения p-кода.

Ваш декомпилятор (который доступен в паблике) он же так не умеет - он же построчно анализирует?
35 spectre1978
 
05.09.14
22:21
имеется в виду уже скомпилированный p-код
36 Garykom
 
гуру
05.09.14
22:26
(35) понял, речь про запутывание декомпилятора, а не человека читающего декомпилированный код, т.е. препятствование самому процессу декомпиляции

да тут надо p-код менять, но проблемки могут возникнуть, почти все такие способы запутывания основаны на особенностях интерпретатора, т.е. другая версия платформы 1С и наш код не выполняется/падает с ошибкой
37 mehfk
 
05.09.14
22:31
Ваши опасения скорее всего излишни.
38 Garykom
 
гуру
05.09.14
22:37
(37) угу платформы 1С 8.2 и 1С 8.3, исходный код одинаков, чтобы на другой запустить нужна конвертация - и?

99,(9)% что обфусцированный p-код не запустится
39 spectre1978
 
05.09.14
22:38
(36) а на другой версии платформы обработки внешние и сами собой без перекомпиляции не работают, безо всяких декомпиляторов с обфускаторами. От 8.1 в 8.2 ведь не работают?
40 mehfk
 
05.09.14
22:40
(38) У вас же нет примера, подтверждающего ваши предположения?
41 spectre1978
 
05.09.14
22:42
(38) очень сильно подозреваю, что так оно и есть. Обфусцированная обработка без исходного кода, скорее всего, будет работать только под той платформой, для которой предназначена. То бишь автору нужно подготовить три файла для 8.1, 8.2 и 8.3.
42 Garykom
 
гуру
05.09.14
22:42
(39) так про это и речь что такая обфускация p-кода сильно усложнит нормальную работу конф
43 mehfk
 
05.09.14
22:43
"99,(9)% что обфусцированный p-код не запустится"
awa15 и Rebelx должны знать :)
44 spectre1978
 
05.09.14
22:44
(42) любая защита вообще усложняет жизнь. Не будь хаспа с программными лицухами, насколько веселее бы жилось админам... Но есть то что есть.
45 Garykom
 
гуру
05.09.14
22:44
(41) ага и вполне возможно что и больше причем только на практике можно будет проверить под какие конкретно версии платформы оно будет 100% работать
46 Garykom
 
гуру
05.09.14
22:45
(44) типа хасп с программными лицухами меньшее нарушение чем патч dll?
47 mehfk
 
05.09.14
22:47
(41) По моим наблюдениям, до настоящего времени этого не было нужно делать.
48 mehfk
 
05.09.14
22:48
49 spectre1978
 
05.09.14
22:49
(47) ну если можно открыть и пересохранить защищенную обработку в новой платформе, то не надо. А вот один раз у меня не получилось, не открыл. Там, значит, надо.
50 spectre1978
 
05.09.14
22:49
наверно, зависит от того какая защита
51 mehfk
 
05.09.14
22:50
закинь обработку на обенник - посмотреть.
52 Garykom
 
гуру
05.09.14
22:51
Выходит сделать обфускатор p-кода можно, защищать будет надежнее но глюков будет больше чем при обфускации исходного кода
53 awa15
 
05.09.14
22:54
(34) Тот, что в паблике, в основе своей примитивен, работает на основе того, что 1С конструкции языка компилирует в одинаковые последовательности п-кода.
Есть и другие способы. У меня есть концепт, основан на построении графа потока управления. Имена переменных, естественно, не восстанавливаются, но все сам код (конструкции Если, циклы и т.д.) восстанавливается.
(41)(43) П-код с 8.0 не менялся (в 8.1 только появились несколько новых команд). Мой декомпилятор написан в 8.0, обфусцирован, но при этом прекрасно работает и в 8.1, и в 8.2, и в 8.3. Надо только сконвертировать обработку. П-код при конвертации никак не меняется.
54 spectre1978
 
05.09.14
22:54
(51) Блин, я ее теперь не знаю найду или нет. Это была одна из обработок с ИС, я тогда запускал у себя контур ЗУП в УПП и были нужны разнообразные внешние отчеты, качал все подряд интересное, что не годилось - откидывал. Боюсь, не найду теперь.
55 mehfk
 
05.09.14
22:59
(53) Пора писать плагин для IDA и продавать :)
56 Rebelx
 
05.09.14
23:09
(53)не совсем верно. код не меняется. но добавляются новые встроеные функции и изменяется количество параметров. Не помню в каком именно случае, но когда-то это вылезло, и скомпилированный модуль не выполнился.
57 awa15
 
05.09.14
23:13
(56) В этом случае не выполнился бы и не скомпилированный код. Встроенные функции не менялись. А функции глобального контекста и прочие объекты к п-коду отношения не имеют. Разница только в том, что имея исходный код, можно поправить.
58 Rebelx
 
05.09.14
23:19
(57) не помню всей истории, но фишка вроде в том, что в одной версии было в пи-коде был вызов с двумя параметрами, а платформе надо было три. При компиляции в нужной платформе в пи-коде было нужное количество параметров.
59 awa15
 
05.09.14
23:23
(58) Ну вообще да, не со встроенными функциями такое возможно.
60 Torquader
 
06.09.14
22:33
Если в двух разных участках кода использовались разные переменные, а при компиляции им была выделена общая ячейка, то очень сложно потом объяснить декомпилятору, что одна и та же ячейка в разных местах имеет разное имя.
Ошибка? Это не ошибка, это системная функция.