Русский / Russian English / Английский

Сейчас на форуме: eclips, cppasm (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› .net После дизасемблированиякомпиляции странная ошибка(не strong name)
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Статус: Участник

Создано: 20 ноября 2006 12:13 · Поправил: Nkey New!
Цитата · Личное сообщение · #1

Программа - ADrive 1.3

Декомпилирую(дизасемблирую) в ildasm.
Убираю publickey и AssemblyKeyFileAttribute.//пока не сделал был strong name error
Компилирую снова(ilasm).

Вылетает ошибка "Инициализатор типа "с1" выдал исключение".
Обьект этого класса создаеться практически сразу (первая команда после .entrypoint).
Если поставить break перед этим, то на break останавливаеться, а после тоже самое.
Если поставить break в c1::.ctor(), то даже не останавливаеться, все тоже самое.
Если сделать c1::.ctor() пустым(тока ret, стек выравнивается), тоже самое.
Учитывая, что это первый вызов какой-либо функции:
IL_0000: newobj instance void class c1::.ctor()
создаеться впечатление, что код вообще не может обратиться к какой-либо функции.
Подпись своим sn ничего не меняет.
В листенге ildasm есть следы DotFuscatora

Думал-читал, ничего не придумал.
Извините, если откровенный маразм спросил. Если надо могу приаттачить exe.

Спасибо.

Ранг: 9.6 (гость)
Статус: Участник

Создано: 12 июля 2010 11:06 New!
Цитата · Личное сообщение · #2

Господа, понимаю, что пошло уже много времени, но все же может кто-нибудь подсказать, каким образом DotFuscator портит IL?


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 17 июля 2010 21:59 New!
Цитата · Личное сообщение · #3

Как вообще с прогами после DotFuscatora общаться?
Как пример Derivative Calculator Real 45... Reflector половину не кажет, т.к. обфусцирован, а после DeDot не рабочий exe!
Что в таких случаях делают?


Ранг: 127.3 (ветеран)
Статус: Участник

Создано: 17 июля 2010 23:00 New!
Цитата · Личное сообщение · #4

да обычная обфускация там. тот же рефлектор il код показывает без проблем.
code.google.com/p/simple-assembly-explorer/
а вот эта супер вещь деобфусцирует на 1 2 3. в случае с калькулятором, он даже запускается и весь код как на ладони.

Ранг: 80.8 (постоянный)
Статус: Участник

Создано: 17 июля 2010 23:06 New!
Цитата · Личное сообщение · #5

Isaev пишет:
Что в таких случаях делают?


Деобфусцируют к примеру SAE - sites.google.com/site/simpledotnet/simple-assembly-explorer
а потом, несмотря на то, что деобфусцированый файл не запускается, анализируют его с помощью того же рефлектора...
Находим место где выскакивает окно с предложением ввести код активации:
Code:
  1.     if (this.g())
  2.     {
  3.         base.Enabled = true;
  4.     }
  5.     else
  6.     {
  7.         base.Enabled = false;
  8.         <I>this.f();</I> - вызов окна регистрации
  9.     }

img180.imageshack.us/img180/8199/123je.jpg

Откуда видим, что bool ah.g() должно возвращать единицу...
Правим это место в оригинальном обфусцированом файле с помощью SAE и сохраняем.
Получаем результат - depositfiles.com/files/ct5bpv2j0


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 18 июля 2010 16:43 New!
Цитата · Личное сообщение · #6

uncleua вариант
т.е. дебфускация до корректного файла не возможна?

Ранг: 80.8 (постоянный)
Статус: Участник

Создано: 18 июля 2010 17:40 New!
Цитата · Личное сообщение · #7

Isaev пишет:
т.е. дебфускация до корректного файла не возможна?


Возможна, но не всегда... Если после автоматической деобфускации с установками по умолчанию в SAE, прога не запускается - можно поиграться с галочками...
Еще можно загрузить в SAE обфусцированую программу и деобфусцировать каждую функцию по отдельности.
Сохранить, попробовать запустить, в случае запуска - деобфусцировать следующую, сохранить, попробовать запустить и т.д.

Ранг: 78.7 (постоянный)
Статус: Участник

Создано: 19 июля 2010 10:15 New!
Цитата · Личное сообщение · #8

на 90% работает случай
1. DeDOT
2. ildasm
3. ilasm
На Большинстве Прог Работает, на крайний случай можно немного ручками поколдовать !


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 21 июля 2010 03:48 New!
Цитата · Личное сообщение · #9

uncleua пишет:
Находим место где выскакивает окно с предложением ввести код активации:

Это просто визуально находим или есть более приемлемый способ?

uncleua пишет:
Еще можно загрузить в SAE обфусцированую программу и деобфусцировать каждую функцию по отдельности.

это как? там только полную деобфускацию нашёл

Ранг: 80.8 (постоянный)
Статус: Участник

Создано: 21 июля 2010 09:18 · Поправил: uncleua New!
Цитата · Личное сообщение · #10

Isaev пишет:
Это просто визуально находим или есть более приемлемый способ?


Строки ведь деобфусцированы, поэтому действуем как обычно при реверсинге - ищем строку за которую можно зацепиться - trial, license, expired и т.п, смотрим в какой функции она вызывается и начинаем одтуда плясать. На той картинке в рефлекторе в нижнем правом окне видно, что я начинал анализировать с функции ah.bz() (в рефлекторе правая кнопка на функции и Analyze или Ctrl+R), увидел что ah.bz() вызывается из ah.f() (если посмотреть код этой функции то ясно, что это само наг-окно выскакивающее при запуске программы), дальше после анализа откуда вызывается ah.f() доходим до ah..ctor() и булевой переменной g.
Дальше все просто...

Есть еще трейсеры для .net-приложений DotNET Tracer и dotNET Dumper - http://portal.b-at-s.info/download.php?list.9

Tracer эту прогу не берет, а Dumper - на ура.
Как раз последней строчкой в логе окажется функция вызова наг-скрина ah.f()

В проге, кстати, если постараться и копнуть не как обычно по верхам, а немного глубже, то можно и серийник вычислить...

это как? там только полную деобфускацию нашёл

http://img832.imageshack.us/img832/2087/98646450.jpg
http://img840.imageshack.us/img840/6959/20309389.jpg
http://img338.imageshack.us/img338/1521/56171124.jpg


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 21 июля 2010 15:09 New!
Цитата · Личное сообщение · #11

вот о трейсерах не знал, спасибо, полезная вещь!
uncleua пишет:
если постараться и копнуть не как обычно по верхам, а немного глубже, то можно и серийник вычислить...

Разве?
Копнув "как обычно по верхам" я увидел как собирается инфа о компе и введённый серийник и посылается на сервер, потом если получаем ответ, то сравнивается с введённым кодом, а ответ мы не получаем, т.к. или инфы о нас нет или серийник не правильный
Если при такой проверке есть ещё генерация в проге, то они лопухи!

Ранг: 80.8 (постоянный)
Статус: Участник

Создано: 22 июля 2010 09:29 · Поправил: uncleua New!
Цитата · Личное сообщение · #12

Isaev пишет:
я увидел как собирается инфа о компе и введённый серийник и посылается на сервер,


Я смотрел немного по-другому... Отталкиваясь не от информации отправляемой на сервер при попытке ввода регистрационного ключа, а от того, что программа будет считать себя зарегистрированой при наличии файла LocalProtection.txt и анализе его содержимого.

Если посмотреть ту самую пресловутую булевую функцию bool g(), то видно, что содержимое LocalProtection.txt сравнивается со строкой g5 (return (string.Compare(strA, this.g5, true) == 0);)
Строке g5 в свою очередь присваивается значение другой строки, другой - значение третьей и т.д...
Code:
  1.     this.g4 = this.e();
  2.     this.g6 = this.g4 + this.d() + this.c() + this.b();
  3.     this.g3 = this.i();
  4.     this.g5 = this.j();
  5.     if (this.g())
  6.     {
  7.         base.Enabled = true;
  8.     }
  9.     else
  10.     {
  11.         base.Enabled = false;
  12.         this.f();
  13.     }


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 22 июля 2010 22:13 New!
Цитата · Личное сообщение · #13

uncleua пишет:
что программа будет считать себя зарегистрированой при наличии файла LocalProtection.txt и анализе его содержимого.

логично, надо будеть поковырять на досуге
но это пример того, как не надо делать регистрацию!

Ранг: 16.5 (новичок)
Статус: Участник
iOS expert

Создано: 27 июля 2010 15:58 New!
Цитата · Личное сообщение · #14

А если тут умельцы, кто Reflector из раздела "Скачать" пропатчил для себя, чтобы он работал и не удалял сам себя без перевода даты? Киньте плз в личку, достал он меня

Ранг: 511.3 (!)
Статус: Модератор

Создано: 27 июля 2010 16:13 New!
Цитата · Личное сообщение · #15

Katana

hxxp://sharebee.com/c539faa2

Ранг: 16.5 (новичок)
Статус: Участник
iOS expert

Создано: 27 июля 2010 18:02 New!
Цитата · Личное сообщение · #16

А причем здесь RedGate.Licensing ?

Ранг: 78.7 (постоянный)
Статус: Участник

Создано: 27 июля 2010 18:31 New!
Цитата · Личное сообщение · #17

Katana пишет:
А причем здесь RedGate.Licensing ?

Это и Есть Рефлектор, Самый Последний !

Ранг: 80.8 (постоянный)
Статус: Участник

Создано: 27 июля 2010 18:36 New!
Цитата · Личное сообщение · #18

Ну и что, что последний?
Переведите системную дату на компьютере на год всперед и увидите как этот последний рефлектор удалится...
Человека, походу, как раз вопрос обхода этого дела и интересует...

А некоторые плагины вообще на 6-ом рефлекторе работать не желают, а 5-й уже давно не запускается...


Ранг: 127.3 (ветеран)
Статус: Участник

Создано: 27 июля 2010 20:17 New!
Цитата · Личное сообщение · #19

его декомпилили до сорцов)

Reflector.v6.0.816.src.rar
www.myupload.dk/showfile/48017229f14.rar

собирается норм.

Ранг: 16.5 (новичок)
Статус: Участник
iOS expert

Создано: 27 июля 2010 22:24 New!
Цитата · Личное сообщение · #20

>DateTime time = new DateTime(int.Parse("2100", CultureInfo.InvariantCulture), 3, 30);
Как я понимаю уже исправлен... А почему 2100? А после 2100, что делать будем? Проще уже сразу поставить "return false" и удалить лишний код.

Ранг: 511.3 (!)
Статус: Модератор

Создано: 27 июля 2010 22:34 New!
Цитата · Личное сообщение · #21

Для тех у кого рефлектор мееееедленно запускается - дело в том что если ассембли подписан - рефлектор кой куда идет и проверяет ету подпись

ето можно отключить: файл Reflector.exe.config:

<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>

также сегодня вышел новый рефлектор -v6.5 (поддержка всех дотнетов - 1.0*, 1.1*, 2.0, 3.0, 3.5, 4.0, виндузов багфиксинг и т.д.)


Ранг: 756.3 (! !)
Статус: Участник
Student

Создано: 01 октября 2010 14:52 New!
Цитата · Личное сообщение · #22

uncleua пишет:
В проге, кстати, если постараться и копнуть не как обычно по верхам, а немного глубже, то можно и серийник вычислить...

нашёл тут время, полазил
на счёт серийника не думаю, там одни хеши...
но можно сделать, чтобы она сама создала валидный лицензионный файл

Ранг: 0.0 (гость)
Статус: Участник

Создано: 03 марта 2012 22:54 · Поправил: Модератор New!
Цитата · Личное сообщение · #23

Скачал DerivativeCalculatorReal45 с офсайта, пропустил через De4dot. Exe-ник не запускается. Выше вроде упоминали, что этого достаточно. Может в программе сделали изменения, поэтому не работает ?
Или я неправильно делаю и надо открыть оригинальный exe в SAE и выбрать опцию "Deobfuscator" ?
<< . 1 . 2 .
 eXeL@B —› Основной форум —› .net После дизасемблированиякомпиляции странная ошибка(не strong name)

Видеокурс ВЗЛОМ