А что получается через ILDasm можно посмотреть весь управляемый код? Т.е. написать декомпилятор для конктетного dotNET-языка (вроде Jad для Java) — раз плюнуть? Т.е. управляемый код совершенно незащищен?
<<Visual Studio.NET, MSSQL 2k, Win2k Server + sp2>>
Здравствуйте, nap2k, Вы писали:
N>А что получается через ILDasm можно посмотреть весь управляемый код? Т.е. написать декомпилятор для конктетного dotNET-языка (вроде Jad для Java) — раз плюнуть? Т.е. управляемый код совершенно незащищен?
Есть такой момент...
Но есть и такие весчи, как обфускаторы.
Подробнее здесь здесь здесь
Здравствуйте, AndrewVK, Вы писали:
AVK>Ага, на ILAsm
точно N>>Т.е. написать декомпилятор для конктетного dotNET-языка (вроде Jad для Java) — раз плюнуть?
AVK>Ну это вряд ли.
Раз-не раз но во-много раз проще чем для нативных I86 кодов — по крайней мере сам IL этому оччень способствует
N>>Т.е. управляемый код совершенно незащищен?
AVK>Что ты понимаешь под защищенностью?
Наверное имеется в виду всякие там Copy rights для алогритмов хитрых
Здравствуйте, migel, Вы писали:
AVK>Ну это вряд ли. M>Раз-не раз но во-много раз проще чем для нативных I86 кодов — по крайней мере сам IL этому оччень способствует
Насчет во много раз я бы не стал утверждать. Несколько попроще возможно. Трудность восстановления исходных кодов больше определяется компилятором. К примеру исходный код дельфевого модуля восстановить вполне реально, несмотря на то что он скомпилирован в x86, а вот код на МС++ с включенной оптимизацией для того же IL восстановить автоматически не так то просто. Хотя конечно наличие метаданных в исполняемых файлах простоте декомпиляции способствует.
Здравствуйте, migel, Вы писали:
M>Здравствуйте, AndrewVK, Вы писали:
AVK>>Ага, на ILAsm
M>точно
он вроде ILDasm называется, или я что-то путаю? Я имел в виду шнягу для просмотра сборок, которая входит в VS.NET.
N>>>Т.е. написать декомпилятор для конктетного dotNET-языка (вроде Jad для Java) — раз плюнуть?
AVK>>Ну это вряд ли. M>Раз-не раз но во-много раз проще чем для нативных I86 кодов — по крайней мере сам IL этому оччень способствует
Ну вот, и я не вижу особых сложностей декомпиляции
N>>>Т.е. управляемый код совершенно незащищен?
AVK>>Что ты понимаешь под защищенностью?
M>Наверное имеется в виду всякие там Copy rights для алогритмов хитрых M>
Ага, именно это.
<<Visual Studio.NET, MSSQL 2k, Win2k Server + sp2>>
Что из исходного кода не сохраняется в метаданных? Во-первых, естественно, не сохраняется сам код (он превращается в ILASM), но его достаточно легко восстановить. Во-вторых, не сохраняются имена локальных переменных функций (здесь уже никуда не деться, придётся придумывать самому). В-третьих, напрочь теряются комментарии. Ну, а им-то уж теряться положено по статусу. Имена типов, их организация и так далее — всё это есть в метаданных. Отсюда мораль — если использовать ТОЛЬКО изменения имён, то в любом случае восстановить мысль автора программы будет намного проще, чем, скажем, в native-коде. Говорят, правда, что Salamander какие-то хитрые вещи выделывает, но я, к сожалению, его не видел.
Отсюда мораль — если важно не показать какие-то алгоритмы, присутствующие в программе, то лучше всё же использовать какие-то специальные (в т.ч и сделанные специалистами по защите, а не самопальные) средства внутри программы, а не помещать всё в код в голом виде. А если код к тому же и управляемый...
С другой стороны, насколько дороги эти алгоритмы? Будет ли кто-то хотя бы пытаться понять, как работает программа? Она действительно уникальна в своём роде? Никто не знает даже подходов к решению задач? Если так, то стоит, наверное, потратиться на действительно хороший обфускатор. Если нет, то имеет ли вообще смысл огород городить с защитой?
С уважением,
OldDino
N>А что получается через ILDasm можно посмотреть весь управляемый код? Т.е. написать декомпилятор для конктетного dotNET-языка (вроде Jad для Java) — раз плюнуть? Т.е. управляемый код совершенно незащищен?
Здравствуйте, AndrewVK, Вы писали:
AVK>Насчет во много раз я бы не стал утверждать. Несколько попроще возможно. Трудность восстановления исходных кодов больше определяется компилятором. К примеру исходный код дельфевого модуля восстановить вполне реально, несмотря на то что он скомпилирован в x86, а вот код на МС++ с включенной оптимизацией для того же IL восстановить автоматически не так то просто. Хотя конечно наличие метаданных в исполняемых файлах простоте декомпиляции способствует.
Фигню говоришь. Оптимизации в Дельфи ничем не хуже (код корежет дай дорогу). А вот востановить с машинного кода что-либо очень трудно. А с мсил-а как раз влет. Та же Анакрина востанавливает оптимизированный мсил влет. Он скоре спотыкается на нестандартные расширения МС++ которые дотупны и без оптимизации.
... << RSDN@Home 1.0 beta 8 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, 4mbi3nt, Вы писали:
4>Есть такая вещь, называется Salamander .NET Decompiler
4>Я чуть в обморок не упал, когда увидел исходники моей программы, причем код был лучше отформатирован, чем оригинал
4>Если кого то интересует, это здесь 4>(Предупреждаю:не для слабонервных)
Ха-ха, а я увидел следуещее, попробовав свои коммерческие сборки:
Слева A, B, C...
Справа This assembly is protected by Remotesoft .NET Obfuscator, decompiling aborted.
Здравствуйте, MaxMP, Вы писали:
MMP>Здравствуйте, 4mbi3nt, Вы писали:
4>>Есть такая вещь, называется Salamander .NET Decompiler
4>>Я чуть в обморок не упал, когда увидел исходники моей программы, причем код был лучше отформатирован, чем оригинал
4>>Если кого то интересует, это здесь 4>>(Предупреждаю:не для слабонервных)
MMP>Ха-ха, а я увидел следуещее, попробовав свои коммерческие сборки: MMP>Слева A, B, C... MMP>Справа This assembly is protected by Remotesoft .NET Obfuscator, decompiling aborted. MMP>)
По какому принципу работают обфускаторы? И почему MS не включает их в состав NET SDK?
<<Visual Studio.NET, MSSQL 2k, Win2k Server + sp2>>
Здравствуйте, Dr_Sh0ck, Вы писали:
D_S>Здравствуйте, nap2k, Вы писали:
N>>А что получается через ILDasm можно посмотреть весь управляемый код? Т.е. написать декомпилятор для конктетного dotNET-языка (вроде Jad для Java) — раз плюнуть? Т.е. управляемый код совершенно незащищен?
D_S>Есть такой момент... D_S>Но есть и такие весчи, как обфускаторы.
Хмм ... а что значит вот такая галочка на страничке саламандры ?
de-obfuscate(turn any obfuscated code into recompilable format)
Здравствуйте, Andir, Вы писали:
A>Здравствуйте, Dr_Sh0ck, Вы писали:
D_S>>Здравствуйте, nap2k, Вы писали:
N>>>А что получается через ILDasm можно посмотреть весь управляемый код? Т.е. написать декомпилятор для конктетного dotNET-языка (вроде Jad для Java) — раз плюнуть? Т.е. управляемый код совершенно незащищен?
D_S>>Есть такой момент... D_S>>Но есть и такие весчи, как обфускаторы.
A>Хмм ... а что значит вот такая галочка на страничке саламандры ? A>
de-obfuscate(turn any obfuscated code into recompilable format)
<<Visual Studio.NET, MSSQL 2k, Win2k Server + sp2>>
Здравствуйте, Andir, Вы писали:
A>Хмм ... а что значит вот такая галочка на страничке саламандры ? A>
de-obfuscate(turn any obfuscated code into recompilable format)
Кстати с точки зрения декомпиляции эта байда (в смысле обфускация имен) усложняет жизнь совершенно не на много — просто при разыменовании токена за именем не в CIL таблицу лезеш — а в свою динамически построенную Ж-)
A>>Хмм ... а что значит вот такая галочка на страничке саламандры ? A>>
de-obfuscate(turn any obfuscated code into recompilable format)
Ну свой обфускатор они не подставляют — в нем есть спечиальная опция, типа, запретить саламандеру декомпилировать сборку.
А на деле, и до обфускации _хрен разберешься_ в сложном/большом проекте (и декомпиляторы не помогут), так что обфускаторы скорее мешают декомпилировать-изменить-закомпилировать сборку, + использовать сбоку на стороне, а не в составе продукта.
Здравствуйте, nap2k, Вы писали:
N>А вот еще вопрос. Вы думаете MS будет выпускать свои продукты под dotNET
А сам дотнет или куски студии это не продукт что ли?
N>Они же фактически станут OpenSource
Ну и что? MS вобще то никогда не отличался особой страстью к защитам, за исключением разве что активации.
N>Не значит ли это, что неуправляемый код будет жить еще очень долго если не всегда
Естественно в определенных областях обычный нативный код будет еще очень долго, по крайней мере до тех пор пока процессоры не научаться выполнять напрямую IL.
Здравствуйте, AndrewVK, Вы писали:
N>>Не значит ли это, что неуправляемый код будет жить еще очень долго если не всегда
AVK>Естественно в определенных областях обычный нативный код будет еще очень долго, по крайней мере до тех пор пока процессоры не научаться выполнять напрямую IL.
Скорее, проблема в GC. IL замечательно JIT-уется.
7. О чем невозможно говорить, о том следует молчать.