· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Вопрос о 'печати Баала'...

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Сен 7, 2004 21:10:48

Кто-нибудь может объяснить поподробнее, какую конкретно информацию MS link записывает между DOS stub'ом и собственно PE-заголовком и какими ключами ее XORит?

На http://board.win32asmcommunity.net поиском по lingo12 я что-то не нашел подробного описания этой неприятности, только то, как ее убрать (хотя это тоже ценно), и пару битых линков, видимо на старые посты.

Google и Yandex дали такие же результаты.

В содержимом .../tools/7/Rich.zip тоже не объясняется подробно, какую содержательную информацию пишет MS link в этой "печати Баала".


Дата: Сен 7, 2004 21:22:08

Вроде как, никому не удавалось это расшифровать.. Так что, скорее всего, разработчики унесут эту тайну в могилу. ИМХО, это просто левая сигнатура или просто цифры какие-то. Вряд ли это текст.. Хотя кто их знает, этих маленьких плюшевых извращенцев.. :)


Дата: Сен 7, 2004 21:28:09

Вроде как, никому не удавалось это расшифровать..

Ты б хоть не позорился. Там обычный XOR. А поксорен compid.


Дата: Сен 7, 2004 22:23:25

Эхх.. Голова-капуста.. :)
Ладно, буду книжки умные читать, а то так дурнем и останусь.. :(


Дата: Сен 8, 2004 11:08:06

Прошу прощения за глупый вопрос, а что такое compid?
Или просто поксорена сама строка "compid"? Но в этом случае ключи, которыми она ксорилась, у меня какими-то странными получились... :(


Дата: Сен 8, 2004 12:41:56

Поксорен идентификатор железок, которые в компе стоят. Хотя там наверняка хэши используются, и вряд ли узнаешь, на каком компе PE слинкован, хотя это бы интересно было.


Дата: Сен 8, 2004 16:34:12

А на что поксорено то? И каких железок ID?


Дата: Сен 9, 2004 00:35:33

Сразу после слова "Rich" идет 32 бита - код для xor.
Если начать xor'ить этим числом с начала печати Баала, то первым всегда пойдет идентификатор 536e6144h - это метка. Далее 12 байт не совсем понятного назначения (причем часто это вообще нули). Далее структурки по 8 байт (их может быть несколько) - это и есть идентификаторы "железок".


Дата: Сен 9, 2004 00:38:57

Спасибо, а каких железок?


Дата: Сен 9, 2004 01:55:52 · Поправил: bogrus

Да нету там никаких железок , даже compid никаким боком не лежит , хотя строку "@comp.id" иногда встречал , проскакивала там по хипу . Три часа просидел в отладчике Ж)

Короче первое , что будет играть роль при формировании печати , так это результат возвращаемый ф-цией VirtualAlloc :) . Потом к этому адресу прибавляеться количество байт он начала .obj файла до первого имени секции в нём (.text к примеру) . Ещё кое-какие подробности я пропускаю , они особой роли не играют . В общем назовём это числом A (оно не определённое) .

Второй т.н. ключ будет число 00789DEAh (там зашит) , обозвём его B .

Далее играет роль вшитый в линковщике дефолтный MZ+DOS заголовок размером 128 байт . Который в цикле ролиться (ROL) и суммируеться (ADD) в одно число . Весь этот алгоритм приводить думаю смысла нет , таким способом всегда получаеться одно число , это 884F3421h , обозвём его С .

Число A ролиться несколько (зависящих от него) раз и потом суммируеться с числом C . Его надо обозвать D .

Число D ксориться (XOR) с числом 536E6144h и получеться E .

Вот это число E есть первый дворд печати .
Три следующие дворда печати - это число D .
Пятый дворд обьяснять долго , просто скажу , что это немного изменённое число A и потом поксореное с числом D .
Шестой дворд это количество "циклов" изменения числа A для пятого дворда поксореное с числом D .
Седьмой - число B XOR D .
Восьмой - количество "циклов" (у меня на минимальной проге получилось - 1) XOR D .
Девятый - Rich (68636952h)
Десятый - число D .

Вышесказанное справедливо для link.exe версии 8.0.40426.16
Спрашиваеться - нафига это всё ?


Дата: Сен 9, 2004 11:19:27

Чтобы вот такие извращенцы ковырялись! :)


Дата: Сен 9, 2004 14:32:05

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

В конце концов они ведь могли хоть CRC файла , хоть entrypoint дублировать (прятать) таким образом . Да много чего можно . От этого хоть кому-то могла быть польза . А так , я не понимаю .


Дата: Сен 9, 2004 23:03:51

„Пятый дворд обьяснять долго , просто скажу , что это немного изменённое число A“

Разобрался с этим числом . В общем ml.exe версии 6.12.7164 к .obj файлу никакой лабуды не добавлял . А ml.exe версии 6.14.8444 уже добавляет строку "@comp.id" и один дворд 001220FC (зашит в нём) . Вот этот дворд и есть как я говорил "немного изменённое число А" .

Старшие версии ml.exe тоже добавляют такую фигню , только числа попадаються разные (все они определённые и зашиты туда) . Например в ml.exe версии 8.0.40426.16 это число - 007D9DEA . Интересно то , что оно странно похоже с числом B (вшитом в link.exe той же версии) - 00789DEA .

Есть ещё маленькие различия между старым link.exe и новым , например в том , что раньше эти извращенцы прятали слово "Rich" , т.е. вместо него было вшито число C236F034 , которое при формировании печати ксорилось с AA559966 и так получалось 68636952 (Rich) :)

Узнал немного истории :) В ml.exe 6.11 версии , сразу за MZ строка : "Copyright (C) 1986-1991 Phar Lap Software, Inc. C5S2S2PM"


Дата: Сен 24, 2004 17:37:30

„Есть ещё маленькие различия между старым link.exe и новым , например в том , что раньше эти извращенцы прятали слово "Rich" , т.е. вместо него было вшито число C236F034 , которое при формировании печати ксорилось с AA559966 и так получалось 68636952 (Rich) :)“

И метку 'DanS' тоже прятали:
        mov     eax, const1       ; 0F93BF822h
        xor     eax, edi          ; edi==дворд после Rich
        mov     [esi+4], edi
        xor     eax, 0AA559966h
        mov     [esi], eax


А "прячущую" константу 0AA559966h они явно с юмором написали: AA55 - это ж последние два байта mbr :)


Дата: Сен 24, 2004 18:15:40

„xor eax, 0AA559966h“

Да , встречал такое в старых версиях :)

„mov eax, const1 ; 0F93BF822h“

Пытался проанализировать эти константы , даже наклепал по шустрому прогу (в аттаче) , была мысль , что микрософт использует свои ID компиляторов ("@comp.id") , но правда ли и для чего ? Я дальше не разбирался .

1925930365__derich.zip

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.059