Защита от дезасемблирования?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Защита от дезасемблирования?

Сообщение areh » 21.06.2004 (Пн) 17:30

Не так давно узнал одну очень печальную новость...

Дело в том, что любой проект написанный на .NET можно с легкостью дезасемблировать и получить IL код (вроде как)..

причем код получаеться очень читаемым, т.е. в коде сохранена структура кода, все названия и имена процедур, переменных, форм, модулей и т.д.

Всё это делает ваш код доступным практически для любого человека, что в свою очередь совсем не радует...

вот я и хотел спросить, есть ли какие-нибудь утилиты (или ещё чего-нить), которые могли бы "усложнить" задачу анализа кода?

Так же интерсно узнать какие-нибудь приемы програмирования, которые смогли бы сделать дезасемблированный код как можно менее читаемым? т.е. как лучше организовать структуру программы, процедуры, функции и т.д.?


Мне очень интересно ваше мнение по поводу данной проблеммы.

moderator
Модератор
Модератор
 
Сообщения: 1896
Зарегистрирован: 10.12.2001 (Пн) 18:11
Откуда: Украина, Харьков

Сообщение moderator » 21.06.2004 (Пн) 20:19

areh писал(а):Не так давно узнал одну очень печальную новость...

Дело в том, что любой проект написанный на .NET можно с легкостью дезасемблировать и получить IL код (вроде как)..

причем код получаеться очень читаемым, т.е. в коде сохранена структура кода, все названия и имена процедур, переменных, форм, модулей и т.д.

Всё это делает ваш код доступным практически для любого человека, что в свою очередь совсем не радует...

вот я и хотел спросить, есть ли какие-нибудь утилиты (или ещё чего-нить), которые могли бы "усложнить" задачу анализа кода?

Так же интерсно узнать какие-нибудь приемы програмирования, которые смогли бы сделать дезасемблированный код как можно менее читаемым? т.е. как лучше организовать структуру программы, процедуры, функции и т.д.?


Мне очень интересно ваше мнение по поводу данной проблеммы.
Есть куча разных .NET Obfuscator'ов, в том числе и в стандартной поставке, но -- всё равно достаточно легко получить IL.
Модератор
http://www.vbstreets.ru / moderator@vbstreets.ru

... Почетные награды: [*], [+], [!]. Все еще впереди...

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 22.06.2004 (Вт) 14:41

Дело гораздо хуже. Есть проги, которые позволяют создавать C# код из EXE. Со временем, наверное, появятся и для VB
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

DTech
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2004 (Вт) 21:25

Сообщение DTech » 21.07.2004 (Ср) 19:23

Это просто наглость со стороны Microsoft. Что, нельзя было предусмотреть возможность компиляции в машинный код, совместимый с конкретной, выбранной юзером платформой? Все равно ведь во время запуска программы она так и компилируется. А те, кому нужна кросплатформенность, компилировали бы в IL. Причем последнее должно было быть опциональной возможностью. Почему мы наблюдаем такое попустительство со стороны программистов и СМИ? Куда смотрят антимонопольные инстанции?

moderator
Модератор
Модератор
 
Сообщения: 1896
Зарегистрирован: 10.12.2001 (Пн) 18:11
Откуда: Украина, Харьков

Сообщение moderator » 22.07.2004 (Чт) 23:23

DTech писал(а):Это просто наглость со стороны Microsoft. Что, нельзя было предусмотреть возможность компиляции в машинный код, совместимый с конкретной, выбранной юзером платформой? Все равно ведь во время запуска программы она так и компилируется. А те, кому нужна кросплатформенность, компилировали бы в IL. Причем последнее должно было быть опциональной возможностью. Почему мы наблюдаем такое попустительство со стороны программистов и СМИ? Куда смотрят антимонопольные инстанции?


Знаете, я бы осторожней стал выражаться. Потому как то, что Вы написали, не совем верная мысль.
Модератор
http://www.vbstreets.ru / moderator@vbstreets.ru

... Почетные награды: [*], [+], [!]. Все еще впереди...

DTech
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2004 (Вт) 21:25

Сообщение DTech » 23.07.2004 (Пт) 3:14

Потому как то, что Вы написали, не совем верная мысль.

Чего уж там. Изложите тогда свое мнение (в каком месте неверная). В C#, ведь, на сколько я понял, возможность компиляции в машинный код есть...

Могу привести цитату от сюда:
Под термином «управляемый код» (managed code) понимается IL-код, который всегда обращается к памяти через определенные типы данных. В управляемом коде не разрешено использовать указатели, поскольку им могут быть присвоены значения, соответствующие недопустимым областям памяти. VB .NET создает управляемый код. Язык С# тоже ориентирован на управляемый код, однако в нем предусмотрен режим создания обычного кода. В C++ были включены специальные расширения, позволяющие создавать управляемый код.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 23.07.2004 (Пт) 8:03

НЕ, мысль о галке "Компилить в машинный код" мне нравиться.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 31.07.2004 (Сб) 18:59

:shock: (пока нахожусь на начальном этапе освоения VB.Net), печально осознавать что все так плохо :), хотя даже если посмореть код на промежуточном языке, то он чем-то напоминает ассемблер, так что какая разница - SoftIce или IL один хрен придется попариться? :lol: (шутка).
Если кто в курсе, скажите нам, что все не так плохо а?! :shock: :D.

Kalan
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 20.02.2004 (Пт) 17:04
Откуда: Москва

Сообщение Kalan » 09.08.2004 (Пн) 14:59

Ну в принципе тогда пишите на C#...если хорошо знаете C и VB.NET, то разобраться с ним не сложно!

А вообще можно написать простенькую програмку, типа тех которые паролят exe-шники, на VB6...принцип работы такой склеиваешь эту прогу с прогой на VB.NET...а при загрузке она все, что находится после нее распаковывает куда-нить и запускает...должно работать...

С одной стороны дизасм для IL не работает, т к в начале там есть машинный код(проверено при дизфсемблировании выдается ошибка), а softice и ему подобные не будут работать так как не поймут кода в конце(не проверенно, но мало ли...даже если дизасемблируют, то программа на .NET будет в виде зарезервированных байтов и работать с таким кодом все равно не удобно)

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 10.08.2004 (Вт) 8:13

нафиг отлаживтаь то в дебаггере?!?!??!
воссоздал исходник и всё....

Компоненты, вААще нет мазы покупать, я уже пару воссоздал)))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 10.08.2004 (Вт) 15:25

Ха-ха-ха, ну-ка приаттач сюда пример, посмеемся вместе. Давай, что-нибудь знаменитое :)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Kalan
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 20.02.2004 (Пт) 17:04
Откуда: Москва

Сообщение Kalan » 12.08.2004 (Чт) 17:22

Да мы же вроде обсуждаем вопросы безопасности своих приложений...а не взломом чужих...
А ты чем исходник воссоздал?...че за прога?

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 02.09.2004 (Чт) 15:17

В общем, VS.Net - супер!!! Только Framework этот опять висит (в смысле за спиной приходится таскать), а так вполне даже ничего. особенно разворачивание приложений - не надо тебе никаких ddl регистрировать (кроме com, конечно :), сама среда довольно мощная, в язык интегрировано гораздо больше API-функций, особенно графических, плюс нормальная поддержка многопоточности; сам язык мне очень понравился, стал более структурированным и упорядоченным. Да и среда разработки гораздо бодрее и намного удобнее. Плюс тут же тебе и виновоз-приложения, и службы виндовоза можно разрабатывать (правда с последними у меня на машине не получилось пока, ну и ладно - нестрашно :), а уж про web-приложения... - просто класс! ВСЕ НА VS.NET! :)

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 07.09.2004 (Вт) 21:02

Что, нельзя было предусмотреть возможность компиляции в машинный код, совместимый с конкретной, выбранной юзером платформой? Все равно ведь во время запуска программы она так и компилируется. А те, кому нужна кросплатформенность, компилировали бы в IL

Вообще, насколько я понимаю, главной задачей JIT-компиляции является далеко не обеспечение кроссплатформенности... :?
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 26.10.2004 (Вт) 22:10

Продолжим тему...

Не так давно в руки мне попалась замечательная статья о "Затемнении кода"... оказывается есть (в поставке с VS.NET 2003) такая замечательная вещь, как Dotfuscator Community Edition. Особено полезная вещь для приложений, состоящих из 1-го файла, основные возможности следующие:
1. Переимнование и перегрузка кода, т.е. все переменные, функции, процедуры, классы и т.д. бдут переименованы во что-то типа a, b, c ну а методы будут максимально перегружены, т.е. у вас было 10 различных функций, не имеющих друг к другу отношения, но принимающих разные параметры, дык эта штука может все 10 назвать одним именем
2. "Затемнение потока управления" - меняет конструкции циклов, условий на нечто непонятное, использующие GoTo и др.
3. Шифрование строк.

на мой взгляд очень полезная вещь... её так же можно использовать и для библиотек классов, но "затемнять" она будет только "Private" код...

да, совсем забыл сказать, всё это она проделывает с скомпилированным файлом проекта (в IL коде), а не с исходником...

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 26.10.2004 (Вт) 22:45

использующие GoTo

Хм... А хорошо ли это???
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 26.10.2004 (Вт) 22:50

а почему бы и нет? GoTo считается плохим тоном в програмировании (а не ухудшающим работу программы), т.к. при его использовании код становится трудночитаемым... а в данном случае это как раз то что надо


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86

    TopList