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

 eXeL@B —› Основной форум —› [.Net] SuppressIldasmAttribute
Посл.ответ Сообщение


Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 ноября 2008 01:52 · Поправил: Nimnul
· Личное сообщение · #1

Начал реверсить одну прогу .Net (давно это не делал), оказывается сейчас много всяких защитных фишек появилось. Среди них атрибут SuppressIldasmAttribute фтыкать здесь. http://blogs.msdn.com/vijaysk/archive/2007/12/05/preventing-ildasm-from-disassembling-your-assembly.aspx

Раньше это я бы вылечил так:
1. качаем http://www.mono-project.com/Cecil http://www.mono-project.com/Cecil
2. создаем консоль подключаем cecil к проекту
3. запускаем:
Code:
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using Mono.Cecil;
  5. namespace ConsoleApplication1
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             string path = @"C:\Program Files\SmartQuant Ltd\OpenQuant 2\crk\SmartQuant.dll\SmartQuant.dll";
  12.             Clear(path);
  13.             Console.ReadLine();
  14.         }
  15.         static void Clear(string path)
  16.         {
  17.             var asm = AssemblyFactory.GetAssembly(path);
  18.             for (int i = 0; i < asm.CustomAttributes.Count; ++i)
  19.             {
  20.                 var atr = asm.CustomAttributes[i];
  21.                 if (atr.Constructor.DeclaringType.Name == "SuppressIldasmAttribute")
  22.                 {
  23.                     asm.CustomAttributes.Remove(atr);
  24.                     break;
  25.                 }
  26.             }
  27.             // Clear Strong Name
  28.             asm.Name.PublicKey = null;
  29.             asm.Name.PublicKeyToken = null;
  30.             string savePath = Path.GetDirectoryName(path) +
  31.                               Path.GetFileNameWithoutExtension(path) +
  32.                               "_clear" +
  33.                               Path.GetExtension(path);
  34.             AssemblyFactory.SaveAssembly(asm, savePath);
  35.         }
  36.     }
  37. }


Но похоже там еще испорчен PE и cecil падает, хотя рефлектор хавает эту dll. Что нибудь можете посоветовать?

PS: Некоторые интересные тулзы имхо нужно добавить в тулзы на креклаб
http://ntcore.com/netunpack.php http://ntcore.com/netunpack.php
http://portal.b-at-s.info/tools.php http://portal.b-at-s.info/tools.php

-----
have a nice day





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 ноября 2008 02:20
· Личное сообщение · #2

помог hiew изменили строку атрибута в дизасме теперь ildasm работает нормально . Можно тоже добавить в тулзы, чтоб потом народ время не тратил.

2429_07.11.2008_CRACKLAB.rU.tgz - ildasm.rar

-----
have a nice day




Ранг: 145.8 (ветеран)
Активность: 0.070
Статус: Участник
www.int3.net

Создано: 08 ноября 2008 03:25
· Личное сообщение · #3

Nimnul пишет:
Но похоже там еще испорчен PE и cecil падает, хотя рефлектор хавает эту dll


На баг похоже. Отправь бы репорт разработчикам сесила.




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 ноября 2008 03:36
· Личное сообщение · #4

Вот вопрос такой кто нить ломал запакованное .NET Reactor'ом ? Нашел загрузку нативной длл и вызовы функций из нее. Вопрос такой может ли прога жить без этой длл, если я тупо удалю вызовы из нее? И есть ли авто анпакеры ? хотя последнее врятли.

-----
have a nice day




Ранг: 56.4 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 08 ноября 2008 11:48
· Личное сообщение · #5

Я обычно патчу название атрибута в сборке и все. Фича эта ооочень старая, в бетах sdk первой версии баже был ключик специальный чтобы ставить этот атрибут.
По поводу анпака нативных защит (a-la JIT hook) ходи на reteam - там все.




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 ноября 2008 14:04 · Поправил: Nimnul
· Личное сообщение · #6

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

Code:
  1.     
  2. //IL_0000:  call       void '<PrivateImplementationDetails>{B4838DC1-AC79-43d1-949F-41B518B904A8}'    ::'<PrivateImplementationDetails>{F1C5056B-0AFC-4423-9B83-D13A26B48869 }a'()
  3. //IL_0005:  call       void '<PrivateImplementationDetails>{B4838DC1-AC79-43d1-949F-41B518B904A8}'    ::KUPcUot9D7gf0oSaikMb()


они располагаются в статических конструкторах классов .cctor. Сделать это с помощью автоматической замены в любом редакторе. Я обычно делаю это в студии. Ну а дальше можно без проблем реверсить логику триала.

jfx

Ты не встречал хорошего дизасмовского двига на 3.5?

Я обычно патчу название атрибута в сборке и все.
А смысл? Проще один раз дизасм исправить и все.

-----
have a nice day





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 ноября 2008 15:46
· Личное сообщение · #7

Народ подскажите еще, чем можно сделать готовый крек-патч, что бы не особо заморачиваться, и куда потом его выкладывать.

-----
have a nice day




Ранг: 56.4 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 11 ноября 2008 15:07 · Поправил: jfx
· Личное сообщение · #8

[q]Ты не встречал хорошего дизасмовского двига на 3.5?[/q]
А что, с выходом нового фреймворка изменились спецификации IL-а? Или я что-то не так понял?




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 13 ноября 2008 17:30
· Личное сообщение · #9

Да изменилась, LINQ, ананимные делегаты, методы расширители и еще куча всего.

-----
have a nice day




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

Создано: 16 декабря 2008 07:32
· Личное сообщение · #10

Nimnul пишет:
помог hiew изменили строку атрибута в дизасме теперь ildasm работает нормально . Можно тоже добавить в тулзы, чтоб потом народ время не тратил.

2429_07.11.2008_CRACKLAB.rU.tgz - ildasm.rar


Аттач пропал- "Ошибка 404 - файл не найден"

Можно перевыложить?



Ранг: 145.8 (ветеран)
Активность: 0.070
Статус: Участник
www.int3.net

Создано: 16 декабря 2008 09:03
· Личное сообщение · #11

Nimnul пишет:
Да изменилась, LINQ, ананимные делегаты, методы расширители и еще куча всего.

Это все синтаксический сахар для шарпа, причем тут IL? Фреймворк 3.5 на уровне IL полностью совместим со 2.0




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 17 декабря 2008 17:09
· Личное сообщение · #12

NG

Я тоже об этом подумал. Откуда инфа?

NG пишет:
На баг похоже. Отправь бы репорт разработчикам сесила.


Отправь

DSER

120f_17.12.2008_CRACKLAB.rU.tgz - ildasm.rar

-----
have a nice day




Ранг: 56.4 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 18 декабря 2008 16:10 · Поправил: jfx
· Личное сообщение · #13

[q]Фреймворк 3.5 на уровне IL полностью совместим со 2.0[/q]
Именно это я и имел ввиду. IL остался прежним. Поэтому испоьзую любой. Например этот
hттp://www.ntcore.com/utilities.php

DisasMSIL

DisasMSIL is a free/open disasm engine for the Microsoft Intermediate Language (MSIL). You can use it any context you wish. There are no license restrictions. The only thing I ask you to do is to send me your bug fixes (if any). For more information about this project, read the article.



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

Создано: 12 июля 2013 18:01 · Поправил: gpluhin
· Личное сообщение · #14

Всем приветы!) А то насчет новой версии 3.8.0 64бита как ее расковырять...тот же триал остался на 30 дней...при запуске пишет, что версия не лицензионная и сколько осталось. Поможет кто с кряком?
Я совсем нуб...http://smartquant.com/downloads.php




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 12 июля 2013 18:21
· Личное сообщение · #15

gpluhin
Правила форума читать надо было, совсем нуб . Пункты 3 и 8.

| Сообщение посчитали полезным: gpluhin
 eXeL@B —› Основной форум —› [.Net] SuppressIldasmAttribute
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати