Страница: 1 |
Тема про VB.NET разрослась так сильно, что добавлять в нее ответы при оплате по траффику стало, мягко говоря, расточительно. Поэтому отвечу здесь: обфускаторы не енкрипторы и не упаковщики, поэтому дампить там нечего. Понять, что это такое несложно на примере простой (и довольно верной) аналогии. Пусть у нас есть исходник на VB и нам надо сделать его непонятным для других программистов. Что можно сделать? Можно удалить комментарии, заменить символьные обозначения констант числами, переименовать метки в непонятную абракадабру, то же сделать и с названиями переменных. Самые продвинутые обфускаторы могут еще и путать логику программы, например, как будто если бы мы заменяли циклы For на Do While или условия бы заменяли на условные переходы или вводили бы дополнительные переменные. Однако, в любом случае, код, даже по которому прошлись обфускатором, по-прежнему намного понятнее, чем дизассемблерный листинг. Есть вопрос, который, пожалуй, может решить большинство споров между приверженцами .NET и ее противниками. Представьте себе, что одновременно с VSN вышел аналог VS, только не .NET. Они похожи всем: круглые кнопочки, удобный IDE, большая, практически аналогичная .NET библиотека классов с исходниками на API, слегка измененный в лучшую сторону синтаксис, добавленное ООП, только код компилируется не в MSIL, а в обычный EXE (или DLL или другой нормальный PE-файл) без столь нелюбимого msvbvmx0.dll. И код, скажем, работает заметно быстрее, чем VB6, так, как он и работал бы, если бы VB6 писался с душой, а не с указом о добавлении глюков и тормозов для рекламы последующих версий. Какую VS вы бы тогда выбрали?
Мда... все оказалось еще проще... В этом случае, это практически бесполезный инструмент... Пиши примеры того, что реализовано в VB.NET, тогда можно будет создать такую вещь или хотя бы ее подобие. Одному человеку написать аналог библы .NET не под силу... Да я и так уже время от времени, пишу аналоги... но ты сам сказал, одному - не под силу Да и времени особенно не остается свободного чтобы заниматься этим... Для интереса прогнал свою прогу через обфускатор, потом глянул IL-код... Кто скажет, чем занимается эта функция? .method private static int32 ''(string A_0) cil managed Дай линк на мнемоники IL-кода, скажу Страница: 1 |
Вопрос: 2sne: обфускаторы
Добавлено: 14.04.04 18:04
Автор вопроса: Sharp | Web-сайт:
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 14.04.04 23:39
А вот на счет второй части твоего поста, тут я думаю ответ и так очевиден, не так ли !? И действительно сравнивать 7 и 6 версии студии, несколько не корректно... у одной что-то уже устарело, у второй, только наращивает обороты, и действительно, зачем ругать студии, лучше ругать просто NET, и делать выбор в пользу виртуального VB7 + нормальный компилятор + библиотека контролов полностью реализованная на АПИ (open source)... Такое чудо к тому же и более гибким получилось бы, поскольку половину контрола можно отбросить за ненадобностью, что-то подкорректировать, и т.д. и т.п. Эх мечта мечта...
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 15.04.04 00:41
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 15.04.04 19:04
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 16.04.04 15:32
{
// Code size 77 (0x4d)
.maxstack 3
.locals init (int32 V_0,
string V_1)
IL_0000: nop
IL_0001: nop
IL_0002: ldarg.0
IL_0003: callvirt instance string [mscorlib]System.String::ToLower()
IL_0008: stloc.1
IL_0009: nop
IL_000a: ldloc.1
IL_000b: ldstr "win-1251"
IL_0010: ldc.i4.0
IL_0011: call int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringType::StrCmp(string,
string,
bool)
IL_0016: ldc.i4.0
IL_0017: beq.s IL_0028
IL_0019: ldloc.1
IL_001a: ldstr "windows-1251"
IL_001f: ldc.i4.0
IL_0020: call int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringType::StrCmp(string,
string,
bool)
IL_0025: ldc.i4.0
IL_0026: bne.un.s IL_0032
IL_0028: ldc.i4 0x4e3
IL_002d: stloc.0
IL_002e: br.s IL_004b
IL_0030: br.s IL_004a
IL_0032: nop
IL_0033: ldloc.1
IL_0034: ldstr "koi8-r"
IL_0039: ldc.i4.0
IL_003a: call int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringType::StrCmp(string,
string,
bool)
IL_003f: ldc.i4.0
IL_0040: bne.un.s IL_004a
IL_0042: ldc.i4 0x5182
IL_0047: stloc.0
IL_0048: br.s IL_004b
IL_004a: nop
IL_004b: ldloc.0
IL_004c: ret
} // end of method ''::''
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 16.04.04 17:50