Здравствуйте, ie, Вы писали:
ie>Хммм... Ну допустим я НЕ знаю что есть такая сущность как рефлектор, читаю твой пост про ilasm и никакой аналогии м/у скомпилированной сборкой и читабельным кодом я тут не улавливаю.
Hello, "Anton Batenev"
> TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется. > > Я вот так и не понял каким образом защищаются подписаные сборки. Ведь, если я ее могу разобрать, изменить и собрать, то и подпись я просто могу удалить и вообще все следы подписи убрать. Или нет?
Добавление к сборке StrongName это не защита, а идентификация. Возможность контроля изменений в такой сборке это всего лишь бесплатное дополнение.
Posted via RSDN NNTP Server 1.9
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Hello, "kig"
> TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется. > > Можешь описать ситуацию в контексте защиты?
В контексте защиты это значит то, что строгое имя взломщику особенно не помешает... Например, для сборок в GAC контроль целостности не производится. Следовательно, сборку помещенную в GAC можно менять как угодно. Плюс, можно просто для опреденного PublicKey отключить подобные проверки.
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, Anton Batenev, Вы писали:
AB>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?
1. не каждый MSIL можно конвертнуть в C#.
2. попробуйте Reflector, к нему помнится были плагины, которые по скомпилированному MSIL выкидывали пачку файлов для дальнейшей обработки.
Здравствуйте, Anton Batenev, Вы писали:
AB>Hello, All!
AB>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?
Здравствуйте, IDecember, Вы писали:
ID>Здравствуйте, Anton Batenev, Вы писали:
AB>>Hello, All!
AB>>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?
ID>ilasm'ом
Здравствуйте, IDecember, Вы писали:
ie>>А я думал задача ilasm'а компилировать MSIL
ID>Ты думай лучше — есть мсил, компилишь его в сборку, и после рефлектор и все остальное.
Хммм... Ну допустим я НЕ знаю что есть такая сущность как рефлектор, читаю твой пост про ilasm и никакой аналогии м/у скомпилированной сборкой и читабельным кодом я тут не улавливаю.
Здравствуйте, ie, Вы писали:
AB>>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать? ie>1. не каждый MSIL можно конвертнуть в C#.
Это я уже понял
ie>2. попробуйте Reflector, к нему помнится были плагины, которые по скомпилированному MSIL выкидывали пачку файлов для дальнейшей обработки.
Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало...
Здравствуйте, Anton Batenev, Вы писали:
AB>Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало...
Название методов, имен классов, свойств и полей и т.д. сохраняется. Теряются имена локальных переменных.
Здравствуйте, GlebZ, Вы писали:
AB>>Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало... GZ>Название методов, имен классов, свойств и полей и т.д. сохраняется. Теряются имена локальных переменных.
Видимо, речь идет о сборке, к которой была применена обфускация.
Здравствуйте, ie, Вы писали:
AB>>>Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало... GZ>>Название методов, имен классов, свойств и полей и т.д. сохраняется. Теряются имена локальных переменных. ie>Видимо, речь идет о сборке, к которой была применена обфускация.
Похоже на то. Преследовал 2 задачи — "сломать", выяснить на сколько это сложно. До этого имел только общее представление о том, что код никак не защищен и прочее. Проверил. Оказалось все не так уж и плохо. Не смотря на то, что вроде как весь алгоритм на руках, обратно скомпилить его без большого и толстого напильника не удавалось. Сделал для себя промежуточные выводы. Отсюда вопрос. На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к которой была применена обфускация?
Hello, "Anton Batenev" > > На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к > которой была применена обфускация?
Разбирать/собирать совершенно не надо. Для слома вполне может быть
достаточно исправить сам IL (бинарно, если есть место) или аналогичным
образом выборочно заменить тело одного/двух методов.
Декомпиляция/исправление IL/компиляция — направление не самое простое.
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
[]
AB>Похоже на то. Преследовал 2 задачи — "сломать", выяснить на сколько это сложно. До этого имел только общее представление о том, что код никак не защищен и прочее. Проверил. Оказалось все не так уж и плохо. Не смотря на то, что вроде как весь алгоритм на руках, обратно скомпилить его без большого и толстого напильника не удавалось.
А в чем проблема?
Сделал для себя промежуточные выводы. Отсюда вопрос. На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к которой была применена обфускация?
ActiveReport. Сборка ActiveReports.Chart.dll. Код обфусцирован и после ildasm выглядит примерно так:
...
// Image base: 0x06b80000
//
// ============== CLASS STRUCTURE DECLARATION ==================
//.namespace '-eh'
{
.class private auto ansi sealed beforefieldinit '-f3ef'
extends [mscorlib]System.Object
{
} // end of class '-f3ef'.class private auto ansi beforefieldinit '-dab2'
extends [mscorlib]System.Exception
{
} // end of class '-dab2'.class private auto ansi beforefieldinit '-311c'
extends [mscorlib]System.Object
{
} // end of class '-311c'.class private auto ansi beforefieldinit '-1ea1'
extends [mscorlib]System.Object
{
} // end of class '-1ea1'.class private auto ansi beforefieldinit '-20d0'
extends [mscorlib]System.Object
{
} // end of class '-20d0'
...
Без всяких проблем собирается обратно без всяких напильников.
Встречный вопрос. Алгоритм защиты симметричный или асимметричный?
Здравствуйте, TK, Вы писали:
TK>Hello, "Anton Batenev" >> >> На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к >> которой была применена обфускация?
TK>Разбирать/собирать совершенно не надо. Для слома вполне может быть TK>достаточно исправить сам IL (бинарно, если есть место) или аналогичным TK>образом выборочно заменить тело одного/двух методов.
Мне кажется, что фокус не пройдет, если сборка, где сосредоточена защита подписана, а от нее зависят остальные (или часть) сборок "ломаемого" продукта.
Hello, "kig"
> Мне кажется, что фокус не пройдет, если сборка, где сосредоточена защита подписана, а от нее зависят остальные (или часть) сборок "ломаемого" продукта.
Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Hello, "kig"
>> Мне кажется, что фокус не пройдет, если сборка, где сосредоточена защита подписана, а от нее зависят остальные (или часть) сборок "ломаемого" продукта.
TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.
Здравствуйте, TK, Вы писали:
TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.
Я вот так и не понял каким образом защищаются подписаные сборки. Ведь, если я ее могу разобрать, изменить и собрать, то и подпись я просто могу удалить и вообще все следы подписи убрать. Или нет?
Здравствуйте, kig, Вы писали:
AB>>Похоже на то. Преследовал 2 задачи — "сломать", выяснить на сколько это сложно. До этого имел только общее представление о том, что код никак не защищен и прочее. Проверил. Оказалось все не так уж и плохо. Не смотря на то, что вроде как весь алгоритм на руках, обратно скомпилить его без большого и толстого напильника не удавалось. kig>А в чем проблема?
Кабы я знал. Reflector откатал исходник на шарпе с конструкциями в виде:
// подобная конструкция не компилироваласьinternal enum a
{
int a;,
b = 0,
c = 1
}
AB>>Сделал для себя промежуточные выводы. Отсюда вопрос. На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к которой была применена обфускация? kig>ActiveReport. Сборка ActiveReports.Chart.dll. Код обфусцирован и после ildasm выглядит примерно так: kig>Без всяких проблем собирается обратно без всяких напильников.
Из / в MSIL я собираю без ошибок и подправленый мной код, но остается тогда проблема с тем, что сборка подписана и, соответственно, перестает работать. Как заставить ее после пересборки работать — не знаю ибо только вчера задался подобными вопросами. Если кто подскажет?
kig>Встречный вопрос. Алгоритм защиты симметричный или асимметричный?
А когда сборку подписывают — это какой алгоритм защиты (я просто не в курсе)?
Здравствуйте, kig, Вы писали:
kig>Сделал для себя промежуточные выводы. Отсюда вопрос. На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к которой была применена обфускация?
Это зависит от того, каким именно обфускатором прошлись по сборке. ANTS Profiler здорово обфусцирован. Хоть я и разобрался в коде, но собрать разобранную сборку нереально. Вместо названий методов — нечитабельные символы (квадратики).
[]
AB>Кабы я знал. Reflector откатал исходник на шарпе с конструкциями в виде:
[]
Шарп из рефлектора можно использовать только для простых случаев. Или для изучения внутренностей. Пересборку надо делать только через MSIL.
[]
AB>Из / в MSIL я собираю без ошибок и подправленый мной код, но остается тогда проблема с тем, что сборка подписана и, соответственно, перестает работать. Как заставить ее после пересборки работать — не знаю ибо только вчера задался подобными вопросами. Если кто подскажет?
Скорее не пересобранная сборка, а другие сборки, которые зависят от пересобранной, работать не хотят? Выдают типа: при попытке загрузки искали с PublicKeyToken=бла-бла, а найдена с PublicKeyToken=null?
Здравствуйте, kig, Вы писали:
AB>>Кабы я знал. Reflector откатал исходник на шарпе с конструкциями в виде: kig>Шарп из рефлектора можно использовать только для простых случаев. Или для изучения внутренностей. Пересборку надо делать только через MSIL.
OK. Принято к сведению.
AB>>Из / в MSIL я собираю без ошибок и подправленый мной код, но остается тогда проблема с тем, что сборка подписана и, соответственно, перестает работать. Как заставить ее после пересборки работать — не знаю ибо только вчера задался подобными вопросами. Если кто подскажет? kig>Скорее не пересобранная сборка, а другие сборки, которые зависят от пересобранной, работать не хотят? Выдают типа: при попытке загрузки искали с PublicKeyToken=бла-бла, а найдена с PublicKeyToken=null?
В том-то и дело, что она там одна и от нее никто не зависит. (Если, конечно, я правильно понял, что файл DLL тождественен сборке)
kig>>>Встречный вопрос. Алгоритм защиты симметричный или асимметричный? kig>Я имел в виду не подпись сборки (она реализуется по RSA-алгоритму), а защита в "ломаемой" сборке.
Да простое условие что-то типа:
Если (Ключ_не_валиден)
Форма_с_напоминанием_о_необходимости_покупки.Показать();
kig>ЗЫ: Если не секрет, что за продукт?
Не секрет, iGrid.NET — грид.
Вообще я начал заниматься его ломкой только из за того, что хотелось найти нормальный грид для отображения данных из БД (ну и еще посмотреть на сколько сложно будет ломать мои творения). Порыскал в и-нете, посмотрел то, что платно и бесплатно. То, что бесплатно (SourceGrid, например) — так это проще и быстрее будет вернуться на С++ билдер и использовать бесплатный EhGrid.
То, что платно, обратил внимание на DevExpress, даже ключики нашел, чтобы разрабатывать и не бояться, что eval-лицензия кончилась.
Меня жестого обломили — XtraGrid для VS2003 не цепляется к VS2005 b2, а XtraGrid для VS2005 почему-то не ставится на 2005 b2. Более того, установки / сносы привели к тому, что теперь они вообще отказываются ставиться на моей машине с сообщением о том, что Администратор (т.е. я) запретил установку (ну это уже ни в какие ворота не лезло).
iGrid — простенько и со вкусом вроде, судя по демкам. Вот его я и начал "ломать". Не доломал — бросил.
Вроде как начал разбираться со стандартным DbGridView. Вроде то и его достаточно, но чуть-чуть чего-то не хватает...
Так что, ломание — это уже вопрос теоретический (на будущее). Вопрос грида открытый, но, посмотрев архив RSDN, я так понял, что эта тема наболевшая и нормального решения так и не найдено.
Здравствуйте, TK, Вы писали:
TK>Hello, "Anton Batenev" >> >> TK>Плюс, можно просто для опреденного PublicKey отключить подобные проверки. >> >> А можно по подробнее?
TK>Есть утилита в SDK — sn.exe. Один из ее ключиков позволяет это сделать
Если нужно слегка поправить чужую софтину то Strong name обычно сносят нафик — есть специальные утилиты Вот например
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...