Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: 2sne: обфускаторы Добавлено: 14.04.04 18:04  

Автор вопроса:  Sharp | Web-сайт: sharpc.livejournal.com | ICQ: 216865379 

Тема про VB.NET разрослась так сильно, что добавлять в нее ответы при оплате по траффику стало, мягко говоря, расточительно. Поэтому отвечу здесь: обфускаторы не енкрипторы и не упаковщики, поэтому дампить там нечего. Понять, что это такое несложно на примере простой (и довольно верной) аналогии. Пусть у нас есть исходник на VB и нам надо сделать его непонятным для других программистов. Что можно сделать? Можно удалить комментарии, заменить символьные обозначения констант числами, переименовать метки в непонятную абракадабру, то же сделать и с названиями переменных. Самые продвинутые обфускаторы могут еще и путать логику программы, например, как будто если бы мы заменяли циклы For на Do While или условия бы заменяли на условные переходы или вводили бы дополнительные переменные. Однако, в любом случае, код, даже по которому прошлись обфускатором, по-прежнему намного понятнее, чем дизассемблерный листинг.

Есть вопрос, который, пожалуй, может решить большинство споров между приверженцами .NET и ее противниками. Представьте себе, что одновременно с VSN вышел аналог VS, только не .NET. Они похожи всем: круглые кнопочки, удобный IDE, большая, практически аналогичная .NET библиотека классов с исходниками на API, слегка измененный в лучшую сторону синтаксис, добавленное ООП, только код компилируется не в MSIL, а в обычный EXE (или DLL или другой нормальный PE-файл) без столь нелюбимого msvbvmx0.dll. И код, скажем, работает заметно быстрее, чем VB6, так, как он и работал бы, если бы VB6 писался с душой, а не с указом о добавлении глюков и тормозов для рекламы последующих версий. Какую VS вы бы тогда выбрали?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 14.04.04 23:39

Мда... все оказалось еще проще... В этом случае, это практически бесполезный инструмент...

А вот на счет второй части твоего поста, тут я думаю ответ и так очевиден, не так ли !? И действительно сравнивать 7 и 6 версии студии, несколько не корректно... у одной что-то уже устарело, у второй, только наращивает обороты, и действительно, зачем ругать студии, лучше ругать просто NET, и делать выбор в пользу виртуального VB7 + нормальный компилятор + библиотека контролов полностью реализованная на АПИ (open source)... Такое чудо к тому же и более гибким получилось бы, поскольку половину контрола можно отбросить за ненадобностью, что-то подкорректировать, и т.д. и т.п. Эх мечта мечта...

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 15.04.04 00:41

Пиши примеры того, что реализовано в VB.NET, тогда можно будет создать такую вещь или хотя бы ее подобие. Одному человеку написать аналог библы .NET не под силу...

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 15.04.04 19:04

Да я и так уже время от времени, пишу аналоги... но ты сам сказал, одному - не под силу :( Да и времени особенно не остается свободного чтобы заниматься этим...

Ответить

Номер ответа: 4
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 16.04.04 15:32

Для интереса прогнал свою прогу через обфускатор, потом глянул IL-код...

Кто скажет, чем занимается эта функция?

 

.method private static int32  ''(string A_0) cil managed
{
  // 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-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 16.04.04 17:50

Дай линк на мнемоники IL-кода, скажу :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам