Здравствуйте, Anton Batenev, Вы писали:
AB>Hello, All!
AB>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?
Здравствуйте, Anton Batenev, Вы писали:
AB>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?
1. не каждый MSIL можно конвертнуть в C#.
2. попробуйте Reflector, к нему помнится были плагины, которые по скомпилированному MSIL выкидывали пачку файлов для дальнейшей обработки.
Здравствуйте, IDecember, Вы писали:
ID>Здравствуйте, Anton Batenev, Вы писали:
AB>>Hello, All!
AB>>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?
ID>ilasm'ом
Здравствуйте, IDecember, Вы писали:
ie>>А я думал задача ilasm'а компилировать MSIL
ID>Ты думай лучше — есть мсил, компилишь его в сборку, и после рефлектор и все остальное.
Хммм... Ну допустим я НЕ знаю что есть такая сущность как рефлектор, читаю твой пост про ilasm и никакой аналогии м/у скомпилированной сборкой и читабельным кодом я тут не улавливаю.
Здравствуйте, ie, Вы писали:
ie>Хммм... Ну допустим я НЕ знаю что есть такая сущность как рефлектор, читаю твой пост про 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>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.
Hello, "kig"
> TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется. > > Можешь описать ситуацию в контексте защиты?
В контексте защиты это значит то, что строгое имя взломщику особенно не помешает... Например, для сборок в GAC контроль целостности не производится. Следовательно, сборку помещенную в GAC можно менять как угодно. Плюс, можно просто для опреденного PublicKey отключить подобные проверки.
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, 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>Встречный вопрос. Алгоритм защиты симметричный или асимметричный?
А когда сборку подписывают — это какой алгоритм защиты (я просто не в курсе)?