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

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

 eXeL@B —› Основной форум —› Декомпиляция .NET - _IMAGE_DOS_HEADER
Посл.ответ Сообщение

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

Создано: 3 января 2007 18:55 New!
Цитата · Личное сообщение · #1

Есть некий SDK для .NET, почти все сборки прекрасно переподписались и перекомпилировались, работают отлично , но...
в парочке сборок ildasm выдает такую вещь:

.field public static valuetype _IMAGE_DOS_HEADER j at 0x00000000 /* WARNING: rogue pointer! */

И ilasm отказывается это компилировать.
some.dll.il(612) : error : syntax error at token '0x00000000'
in: .field public static valuetype _IMAGE_DOS_HEADER j at 0x00000000 /* WARNING
: rogue pointer! */

Что ему можно туда вместо нулей написать? Как ему передать этот указатель на структуру _IMAGE_DOS_HEADER?
Ildasm использовал и от 1.1 и от 2.0, результат одинаковый.


Ранг: 387.4 (мудрец)
Статус: Участник
системщик

Создано: 4 января 2007 09:37 New!
Цитата · Личное сообщение · #2

Посмотри этот файл (DLL по идее) в hiew - там должен быть dos header и pe header. Если нет, то файлик не кусок сборки. Может он порченый, а может это static lib....

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

Создано: 4 января 2007 12:11 New!
Цитата · Личное сообщение · #3

Все headers на месте, это полноценная DLL. И класс этот объявлен:
//
// ============== CLASS STRUCTURE DECLARATION ==================
//
.class public sequential ansi sealed _IMAGE_DOS_HEADER
extends [mscorlib]System.ValueType
{
} // end of class _IMAGE_DOS_HEADER

И вот тут он зачем-то используется
IL_006d: ldsflda valuetype _IMAGE_DOS_HEADER j
IL_0072: ldc.i4.1
IL_0073: ldc.i4.0
IL_0074: call int32 modopt([mscorlib]System.Runtime.CompilerServices.CallConvStdcall) a(void*,
unsigned int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsLongModifier),
void*)

Все сборки этого SDK обработаны dotfuscator-ом, что в принципе особо не помеха , но вот парочка не хочет перекомпилироваться из-за этого /* WARNING: rogue pointer! */.
А может быть, там добавлен нативный код и сборка смешанная?

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

Создано: 4 января 2007 15:48 New!
Цитата · Личное сообщение · #4

а обязательно перекомпилировать? Может можно решить без этого?


Ранг: 218.9 (наставник)
Статус: Участник
dotnet

Создано: 4 января 2007 22:10 New!
Цитата · Личное сообщение · #5

Sh[AHT]

Посмотри ep этих файлов.

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

Создано: 5 января 2007 00:37 New!
Цитата · Личное сообщение · #6

Nimnul пишет:
Посмотри ep этих файлов.


EP выглядит так:

.100114CE: FF2558D10410 jmp _CorDllMain ;mscoree
.100114D4: 8B4604 mov eax,[esi][04]
.100114D7: 85C0 test eax,eax
.100114D9: 7444 je .01001151F ---↓ (1)
.100114DB: 8D5008 lea edx,[eax][08]
.100114DE: 803A00 cmp b,[edx],000
и дальше идет x86 код. Это смешанная сборка?


jfx пишет:
а обязательно перекомпилировать? Может можно решить без этого?

Почему-то не получается. Все остальные сборки SDK пришлось переподписать и заменить publickeytoken на свой. Совсем без подписи SDK работать не хочет - не грузится общая сборка лицензирования. Переподписанные и перекомпилированные работают ок, но дополнительные кодеки дают вот такой трабл при декомпиляции. Просто заменить в hiew токен не получается - валится в exception. Я так думаю, что разработчики SDK лицензировали кодек у авторов, и замешали в одной сборке оригинальный код x86 и MSIL. Подружить его с остальными сборками без декомпиляции не получается

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

Создано: 5 января 2007 01:31 New!
Цитата · Личное сообщение · #7

Название?
и ссылка

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

Создано: 5 января 2007 01:46 New!
Цитата · Личное сообщение · #8

hттp://www.atalasoft.com
Atalasoft DotImage 4.0
кодеки Jpeg2000 Jbig2
прямой ссылки нет, чуть позже выложу либо полный дистр (за 40 метров), либо скомпоную минимальный пакет.

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

Создано: 5 января 2007 03:47 New!
Цитата · Личное сообщение · #9

Lz0 зарелизили недавно - ищи на 0days. У меня есть patch/keygen для 3 версии с исходниками. Перекомпиляция не требуется.

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

Создано: 5 января 2007 03:48 New!
Цитата · Личное сообщение · #10

Кстати, это был мой первый кряк для .NET


Ранг: 218.9 (наставник)
Статус: Участник
dotnet

Создано: 5 января 2007 17:54 · Поправил: Nimnul New!
Цитата · Личное сообщение · #11

Sh[AHT] пишет:
100114CE: FF2558D10410 jmp _CorDllMain ;mscoree


Прикол в том что должна присутствовать правильная дериктория IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR,
скорее всего в этих файла в ep правятся указатели на нее перед jmp.

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

Создано: 5 января 2007 19:10 New!
Цитата · Личное сообщение · #12

Вот минимальный комплект, нужный для работы (1,5MB):
rapidshare.com/files/10430877/atalasoft.rar.html

jfx пишет:
У меня есть patch/keygen для 3 версии с исходниками. Перекомпиляция не требуется.

В версии 4 они сделали DLL проверки лицензий at@lasoft.shared.dll. Файл лицензий подписан RSA. Любой патч нарушает strongname, соответственно требуется переподписание сборок своим ключом и перекомпиляция с измененными references.

Nimnul пишет:
должна присутствовать правильная дериктория IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR,

Можешь посмотреть, насколько она правильная?

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

Создано: 6 января 2007 03:06 New!
Цитата · Личное сообщение · #13

Переподписать сборки и исправить референсы можно без перекомпиляции, простым битхаком. Замени публичный ключь на свой и поправть токены на свои. Плсле этого sn -R assm.dll newkey.snk

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

Создано: 6 января 2007 03:37 New!
Цитата · Личное сообщение · #14

jfx пишет:
Замени публичный ключь на свой и поправть токены на свои.

Ключ и токены заменил, но сборка рушится. Видимо, что-то недозаменил.

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

Создано: 6 января 2007 03:59 New!
Цитата · Личное сообщение · #15

Кстати, для лентяев - утилита замены ключей
ahteam.org/files/tools/SNReplace.zip

Требует sn.exe и сгенерированный *.snk.

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

Создано: 6 января 2007 08:03 New!
Цитата · Личное сообщение · #16

по моему проще в WinHex-е это сделать, к томуже еще референсы править нужно.

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

Создано: 6 января 2007 09:42 New!
Цитата · Личное сообщение · #17

Спасибо, нашел кейген. Но все-таки любопытно, как они умудрились его сделать.
 eXeL@B —› Основной форум —› Декомпиляция .NET - _IMAGE_DOS_HEADER

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