MSIL -> ?
От: Anton Batenev Россия https://github.com/abbat
Дата: 15.11.05 05:42
Оценка: :)
Hello, All!

Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re: MSIL -> ?
От: IDecember Россия  
Дата: 15.11.05 05:51
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Hello, All!


AB>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?


ilasm'ом
Re: MSIL -> ?
От: ie Россия http://ziez.blogspot.com/
Дата: 15.11.05 05:52
Оценка: 2 (1)
Здравствуйте, Anton Batenev, Вы писали:

AB>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?


1. не каждый MSIL можно конвертнуть в C#.
2. попробуйте Reflector, к нему помнится были плагины, которые по скомпилированному MSIL выкидывали пачку файлов для дальнейшей обработки.
Превратим окружающую нас среду в воскресенье.
Re[2]: MSIL -> ?
От: ie Россия http://ziez.blogspot.com/
Дата: 15.11.05 05:53
Оценка:
Здравствуйте, IDecember, Вы писали:

ID>Здравствуйте, Anton Batenev, Вы писали:


AB>>Hello, All!


AB>>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?


ID>ilasm'ом


А я думал задача ilasm'а компилировать MSIL
Превратим окружающую нас среду в воскресенье.
Re[3]: MSIL -> ?
От: IDecember Россия  
Дата: 15.11.05 06:11
Оценка:
Здравствуйте, ie, Вы писали:

ie>А я думал задача ilasm'а компилировать MSIL


Ты думай лучше — есть мсил, компилишь его в сборку, и после рефлектор и все остальное.
Re[4]: MSIL -> ?
От: ie Россия http://ziez.blogspot.com/
Дата: 15.11.05 06:27
Оценка:
Здравствуйте, IDecember, Вы писали:

ie>>А я думал задача ilasm'а компилировать MSIL


ID>Ты думай лучше — есть мсил, компилишь его в сборку, и после рефлектор и все остальное.


Хммм... Ну допустим я НЕ знаю что есть такая сущность как рефлектор, читаю твой пост про ilasm и никакой аналогии м/у скомпилированной сборкой и читабельным кодом я тут не улавливаю.
Превратим окружающую нас среду в воскресенье.
Re[5]: MSIL -> ?
От: IDecember Россия  
Дата: 15.11.05 06:31
Оценка: 2 (1) -2 :)
Здравствуйте, ie, Вы писали:

ie>Хммм... Ну допустим я НЕ знаю что есть такая сущность как рефлектор, читаю твой пост про ilasm и никакой аналогии м/у скомпилированной сборкой и читабельным кодом я тут не улавливаю.


Надо знать.
Re[2]: MSIL -> ?
От: Anton Batenev Россия https://github.com/abbat
Дата: 15.11.05 08:06
Оценка:
Здравствуйте, ie, Вы писали:

AB>>Есть код MSIL, требуется его конвертировать в более читабельный, чтобы подправить и перекомпилить (С#). Чем это можно сделать?

ie>1. не каждый MSIL можно конвертнуть в C#.

Это я уже понял

ie>2. попробуйте Reflector, к нему помнится были плагины, которые по скомпилированному MSIL выкидывали пачку файлов для дальнейшей обработки.


Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало...
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: MSIL -> ?
От: GlebZ Россия  
Дата: 15.11.05 09:23
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало...

Название методов, имен классов, свойств и полей и т.д. сохраняется. Теряются имена локальных переменных.

С уважением, Gleb.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: MSIL -> ?
От: ie Россия http://ziez.blogspot.com/
Дата: 15.11.05 09:36
Оценка:
Здравствуйте, GlebZ, Вы писали:

AB>>Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало...

GZ>Название методов, имен классов, свойств и полей и т.д. сохраняется. Теряются имена локальных переменных.

Видимо, речь идет о сборке, к которой была применена обфускация.
Превратим окружающую нас среду в воскресенье.
Re[5]: MSIL -> ?
От: Anton Batenev Россия https://github.com/abbat
Дата: 15.11.05 11:02
Оценка:
Здравствуйте, ie, Вы писали:

AB>>>Да, только, похоже, что не судьба нынче. Разбираться в классах, методах и полях с именами a,b,c,...aa,ab,ac,...zz у меня как-то всякое желание пропало...

GZ>>Название методов, имен классов, свойств и полей и т.д. сохраняется. Теряются имена локальных переменных.
ie>Видимо, речь идет о сборке, к которой была применена обфускация.

Похоже на то. Преследовал 2 задачи — "сломать", выяснить на сколько это сложно. До этого имел только общее представление о том, что код никак не защищен и прочее. Проверил. Оказалось все не так уж и плохо. Не смотря на то, что вроде как весь алгоритм на руках, обратно скомпилить его без большого и толстого напильника не удавалось. Сделал для себя промежуточные выводы. Отсюда вопрос. На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к которой была применена обфускация?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[6]: MSIL -> ?
От: TK Лес кывт.рф
Дата: 15.11.05 11:21
Оценка:
Hello, "Anton Batenev"
>
> На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к
> которой была применена обфускация?

Разбирать/собирать совершенно не надо. Для слома вполне может быть
достаточно исправить сам IL (бинарно, если есть место) или аналогичным
образом выборочно заменить тело одного/двух методов.
Декомпиляция/исправление IL/компиляция — направление не самое простое.
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[6]: MSIL -> ?
От: kig Россия  
Дата: 15.11.05 20:32
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

[]

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'

...



Без всяких проблем собирается обратно без всяких напильников.


Встречный вопрос. Алгоритм защиты симметричный или асимметричный?
Re[7]: MSIL -> ?
От: kig Россия  
Дата: 15.11.05 20:38
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello, "Anton Batenev"

>>
>> На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к
>> которой была применена обфускация?

TK>Разбирать/собирать совершенно не надо. Для слома вполне может быть

TK>достаточно исправить сам IL (бинарно, если есть место) или аналогичным
TK>образом выборочно заменить тело одного/двух методов.

Мне кажется, что фокус не пройдет, если сборка, где сосредоточена защита подписана, а от нее зависят остальные (или часть) сборок "ломаемого" продукта.
Re[8]: MSIL -> ?
От: TK Лес кывт.рф
Дата: 15.11.05 20:43
Оценка:
Hello, "kig"

> Мне кажется, что фокус не пройдет, если сборка, где сосредоточена защита подписана, а от нее зависят остальные (или часть) сборок "ломаемого" продукта.


Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[9]: MSIL -> ?
От: kig Россия  
Дата: 15.11.05 20:53
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello, "kig"


>> Мне кажется, что фокус не пройдет, если сборка, где сосредоточена защита подписана, а от нее зависят остальные (или часть) сборок "ломаемого" продукта.


TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.


Можешь описать ситуацию в контексте защиты?
Re[10]: MSIL -> ?
От: TK Лес кывт.рф
Дата: 15.11.05 21:06
Оценка: 12 (1)
Hello, "kig"

> TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.

>
> Можешь описать ситуацию в контексте защиты?

В контексте защиты это значит то, что строгое имя взломщику особенно не помешает... Например, для сборок в GAC контроль целостности не производится. Следовательно, сборку помещенную в GAC можно менять как угодно. Плюс, можно просто для опреденного PublicKey отключить подобные проверки.
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[11]: MSIL -> ?
От: Anton Batenev Россия https://github.com/abbat
Дата: 16.11.05 02:30
Оценка:
Здравствуйте, TK, Вы писали:

TK>Плюс, можно просто для опреденного PublicKey отключить подобные проверки.


А можно по подробнее?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[9]: MSIL -> ?
От: Anton Batenev Россия https://github.com/abbat
Дата: 16.11.05 02:45
Оценка:
Здравствуйте, TK, Вы писали:

TK>Строгое имя у сборки это не понацея. Есть масса ситуаций когда целостность сборки со строгим именем не контролируется.


Я вот так и не понял каким образом защищаются подписаные сборки. Ведь, если я ее могу разобрать, изменить и собрать, то и подпись я просто могу удалить и вообще все следы подписи убрать. Или нет?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[7]: MSIL -> ?
От: Anton Batenev Россия https://github.com/abbat
Дата: 16.11.05 02:56
Оценка:
Здравствуйте, kig, Вы писали:

AB>>Похоже на то. Преследовал 2 задачи — "сломать", выяснить на сколько это сложно. До этого имел только общее представление о том, что код никак не защищен и прочее. Проверил. Оказалось все не так уж и плохо. Не смотря на то, что вроде как весь алгоритм на руках, обратно скомпилить его без большого и толстого напильника не удавалось.

kig>А в чем проблема?

Кабы я знал. Reflector откатал исходник на шарпе с конструкциями в виде:

// подобная конструкция не компилировалась
internal enum a
{
    int a;,
    b = 0,
    c = 1
}


AB>>Сделал для себя промежуточные выводы. Отсюда вопрос. На сколько реально разобрать и, что немаловажно, потом собрать, сборку, к которой была применена обфускация?

kig>ActiveReport. Сборка ActiveReports.Chart.dll. Код обфусцирован и после ildasm выглядит примерно так:
kig>Без всяких проблем собирается обратно без всяких напильников.

Из / в MSIL я собираю без ошибок и подправленый мной код, но остается тогда проблема с тем, что сборка подписана и, соответственно, перестает работать. Как заставить ее после пересборки работать — не знаю ибо только вчера задался подобными вопросами. Если кто подскажет?

kig>Встречный вопрос. Алгоритм защиты симметричный или асимметричный?


А когда сборку подписывают — это какой алгоритм защиты (я просто не в курсе)?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.