|
Декомпилятор обфусцированного кода существует ли (прошу понять и простить) | ☑ | ||
---|---|---|---|---|
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
|
v8: Баян. Защита от декомпиляции
7-е сообщение |
|||
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
|
Если в двух разных участках кода использовались разные переменные, а при компиляции им была выделена общая ячейка, то очень сложно потом объяснить декомпилятору, что одна и та же ячейка в разных местах имеет разное имя.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |