eXeL@B —› Основной форум —› .net После дизасемблированиякомпиляции странная ошибка(не strong name) |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 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. Спасибо. |
|
Создано: 12 июля 2010 11:06 · Личное сообщение · #2 |
|
Создано: 17 июля 2010 21:59 · Личное сообщение · #3 |
|
Создано: 17 июля 2010 23:00 · Личное сообщение · #4 |
|
Создано: 17 июля 2010 23:06 · Личное сообщение · #5 Isaev пишет: Что в таких случаях делают? Деобфусцируют к примеру SAE - sites.google.com/site/simpledotnet/simple-assembly-explorer а потом, несмотря на то, что деобфусцированый файл не запускается, анализируют его с помощью того же рефлектора... Находим место где выскакивает окно с предложением ввести код активации: Code:
img180.imageshack.us/img180/8199/123je.jpg Откуда видим, что bool ah.g() должно возвращать единицу... Правим это место в оригинальном обфусцированом файле с помощью SAE и сохраняем. Получаем результат - depositfiles.com/files/ct5bpv2j0 |
|
Создано: 18 июля 2010 16:43 · Личное сообщение · #6 |
|
Создано: 18 июля 2010 17:40 · Личное сообщение · #7 Isaev пишет: т.е. дебфускация до корректного файла не возможна? Возможна, но не всегда... Если Еще можно загрузить в SAE обфусцированую программу и деобфусцировать каждую функцию по отдельности. Сохранить, попробовать запустить, в случае запуска - деобфусцировать следующую, сохранить, попробовать запустить и т.д. |
|
Создано: 19 июля 2010 10:15 · Личное сообщение · #8 |
|
Создано: 21 июля 2010 03:48 · Личное сообщение · #9 uncleua пишет: Находим место где выскакивает окно с предложением ввести код активации: Это просто визуально находим или есть более приемлемый способ? uncleua пишет: Еще можно загрузить в SAE обфусцированую программу и деобфусцировать каждую функцию по отдельности. это как? там только полную деобфускацию нашёл ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 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 - Tracer эту прогу не берет, а Dumper - на ура. Как раз последней строчкой в логе окажется функция вызова наг-скрина ah.f() В проге, кстати, если постараться и копнуть не как обычно по верхам, а немного глубже, то можно и серийник вычислить... это как? там только полную деобфускацию нашёл |
|
Создано: 21 июля 2010 15:09 · Личное сообщение · #11 вот о трейсерах не знал, спасибо, полезная вещь! uncleua пишет: если постараться и копнуть не как обычно по верхам, а немного глубже, то можно и серийник вычислить... Разве? Копнув "как обычно по верхам" я увидел как собирается инфа о компе и введённый серийник и посылается на сервер, потом если получаем ответ, то сравнивается с введённым кодом, а ответ мы не получаем, т.к. или инфы о нас нет или серийник не правильный Если при такой проверке есть ещё генерация в проге, то они лопухи! ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 22 июля 2010 09:29 · Поправил: uncleua · Личное сообщение · #12 Isaev пишет: я увидел как собирается инфа о компе и введённый серийник и посылается на сервер, Я смотрел немного по-другому... Отталкиваясь не от информации отправляемой на сервер при попытке ввода регистрационного ключа, а от того, что программа будет считать себя зарегистрированой при наличии файла LocalProtection.txt и анализе его содержимого. Если посмотреть ту самую пресловутую булевую функцию bool g(), то видно, что содержимое LocalProtection.txt сравнивается со строкой g5 (return (string.Compare(strA, this.g5, true) == 0);) Строке g5 в свою очередь присваивается значение другой строки, другой - значение третьей и т.д... Code:
|
|
Создано: 22 июля 2010 22:13 · Личное сообщение · #13 |
|
Создано: 27 июля 2010 15:58 · Личное сообщение · #14 |
|
Создано: 27 июля 2010 16:13 · Личное сообщение · #15 |
|
Создано: 27 июля 2010 18:02 · Личное сообщение · #16 |
|
Создано: 27 июля 2010 18:31 · Личное сообщение · #17 |
|
Создано: 27 июля 2010 18:36 · Личное сообщение · #18 |
|
Создано: 27 июля 2010 20:17 · Личное сообщение · #19 |
|
Создано: 27 июля 2010 22:24 · Личное сообщение · #20 |
|
Создано: 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, виндузов багфиксинг и т.д.) |
|
Создано: 01 октября 2010 14:52 · Личное сообщение · #22 uncleua пишет: В проге, кстати, если постараться и копнуть не как обычно по верхам, а немного глубже, то можно и серийник вычислить... нашёл тут время, полазил на счёт серийника не думаю, там одни хеши... но можно сделать, чтобы она сама создала валидный лицензионный файл ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 03 марта 2012 22:54 · Поправил: Модератор · Личное сообщение · #23 |
<< . 1 . 2 . |
eXeL@B —› Основной форум —› .net После дизасемблированиякомпиляции странная ошибка(не strong name) |