Сейчас на форуме: rmn, exp50848 (+8 невидимых)

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

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

Создано: 20 ноября 2006 12:13 · Поправил: Nkey
· Личное сообщение · #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 (гость), 5thx
Активность: 0.010
Статус: Участник

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

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




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

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

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

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

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

-----
zzz




Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 17 июля 2010 23:06
· Личное сообщение · #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 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

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

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

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

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


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



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

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

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




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

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

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

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

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

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 21 июля 2010 09:18 · Поправил: uncleua
· Личное сообщение · #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 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

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

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

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 22 июля 2010 09:29 · Поправил: uncleua
· Личное сообщение · #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 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

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

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

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 16.5 (новичок), 5thx
Активность: 0.01=0.01
Статус: Участник
iOS expert

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

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



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

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

Katana

hxxp://sharebee.com/c539faa2



Ранг: 16.5 (новичок), 5thx
Активность: 0.01=0.01
Статус: Участник
iOS expert

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

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



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

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

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

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



Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

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

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

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




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

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

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

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

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

-----
zzz




Ранг: 16.5 (новичок), 5thx
Активность: 0.01=0.01
Статус: Участник
iOS expert

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

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



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 27 июля 2010 22:34
· Личное сообщение · #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 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

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

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

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

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

Скачал DerivativeCalculatorReal45 с офсайта, пропустил через De4dot. Exe-ник не запускается. Выше вроде упоминали, что этого достаточно. Может в программе сделали изменения, поэтому не работает ?
Или я неправильно делаю и надо открыть оригинальный exe в SAE и выбрать опцию "Deobfuscator" ?


<< . 1 . 2 .
 eXeL@B —› Основной форум —› .net После дизасемблированиякомпиляции странная ошибка(не strong name)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати