![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Значит, это все-таки не абсолютная защита, да? Он не закрывает код, а старается изменить его до неузнаваемости, и, зная алгоритмы его работы и ключи (если он их использует), можно раскрыть код. Получается, что задача "деобфускации" - это криптоатака? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
это я к
-------------------- |
||||
|
|||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Абсолютной защиты не будет никогда.
Нет, это больше напоминает, что первоначальный маршрут от Питера до Москвы шел напрямую, но его выдали в виде "через Владивосток". При этом заменяются имена классов и методов на абсолютно бессмысленные - a1, b32, f4 и так далее. Ну предположим у класса есть 25 методов из них 18 закрыты. Можно изменить имена этих методов. Можно сделать промежуточный класс, который будет создаваться и уже внутри себя вызывать нужный метод. Можно вырезать какие-то методы в отдельный класс, назвать его страшно непонятным именем. Ну и прочая. Т.е. получается код. который читать можно, но понимать который (и вносить какие-либо изменения) приносит головной боли столько, что это никто делать не будет. Разве что за большие-большие деньги, которые будут сравнимы со стоимостью пакета. |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: 1 Всего: 1 |
я тут еще один декомпилятор нашла, может пригодится кому нибудь:
http://members.fortunecity.com/neshkov/dj.html |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Нет, обфускатор делает код практичски бессмысленным для того, кто его декомпилит. И знаниe алгоритмa нe поможет, т.к. будут уничтожны все несущие смысл именa переменных, классов, и пр. А без этого понять как работаеt код сложновато. -------------------- |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Ясно. Спасибо за разъяснения.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: 1 Всего: 1 |
Насчет jad (и других тоже), он то в принципе работает, вот только иногда try/catch не распознает и странние конструкции такого вида создает:
|
|||
|
||||
| DarkDS |
|
||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
В том то и проблемма байт кода что его можно однозначно декомпилировать. То есть абсолютной защиты для байт кода как таковой нет. Ключей при обфускации нет. нО криптоатака деобфускации не поможет Тут такой момент. В процессе обфускации происходит 3-и основных действия: 1. Удаяляется дебаговая информация (это может быть пропущенно если компилировалось без нее) 2. переименовываеются классы, методы и переменные (за некоторым исключением, связонные с рефлексией). То есть:
будет при компилировании-обыфускации-декомпилировании выглядеть примерно так:
или
Что будет затруднять разбор программы. 3. добавляются "логические бомбы" (это делают не все обфускаторы). к примеру самая простая логическая бомба:
->
Катч вставлен в данном случае в байт код после ретурна (точнее вставленна последовательность инструкций, которая обозначет катч). При работе программы она никак на будет влиять на выполнение данной функции. При декомпиляции же не всякий декомпилятор сможет это "переварить". Добавлено @ 19:13
jad - работает как декомпилятор. как обфускатор не работает |
||||||||||||||
|
|||||||||||||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: 1 Всего: 1 |
Я имею ввиду что, после декомпиляции появляются иногда странные структуры,
например:
а Добавлено @ 19:21 я так думаю, что jad try/catch иногда в такои форме записивает. По краинеи мере после соответствующего исправления, все работало |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Там просто неоднозначная ситуация. И поэтому не до конца переводится в ява код.
По этому поводу советую почитать Работем с Байткодом (с)Domestic Cat. |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: 1 Всего: 1 |
В каком смысле неоднозначная?
|
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
try/catch при компиляции превращается в несколько запутанный байткод, видимо декомпилер и колбасит по этому поводу
-------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Так как мы достигли ретурна, то это может быть либо логической бомбой, либо катчем эксепшина.
В большинстве таких случаев декомпиляторы эксепшины из опкода не переводят в ява код. Добавлено @ 19:42 ЗЫ. Кстати. Внешне катч в байт коде выглядит еще более запутанно Так что неоднозначностей там хватает. |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: 1 Всего: 1 |
Ну ладно try/catch можно легко исправить а вот что означает:
|
|||
|
||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
А как же библиотеки??? -------------------- |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |