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

 WASM Phorum —› WASM.ZEN —› поле CheckSum в PE заголовке

. 1 . 2 . >>

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


Дата: Апр 7, 2004 14:31:32

господа!!! Вот интересный вопрос про это самое поле, оно устанавливается в заголовках, принадлежащих драйверам режима ядра. А как оно считается, по какому алгоритму и принципу ???


Дата: Апр 7, 2004 15:51:06

Если не ошибаюсь - сложить_все_байты xor 0xFFFF


Дата: Апр 7, 2004 16:51:06

win2k\private\ntos\rtl\checksum.c :)


Дата: Апр 7, 2004 18:25:10 · Поправил: Snowbit

Это из документации Microsoft по PE:
"The algorithm for computing is incorporated into IMAGHELP.DLL."
Не хочет Microsoft нам этот алгоритм раскрывать :). Если не ошибаюсь, контрольную сумму подсчитывает функция CheckSumMappedFile


Дата: Апр 7, 2004 21:12:52

\fasm\SOURCE\FORMATS.INC\calculate_checksum:

_http://board.win32asmcommunity.net/showthread.php?s=&threadid=1883


Дата: Апр 7, 2004 21:17:39

ssx

:)
USHORT
ChkSum(
    ULONG PartialSum,
    PUSHORT Source,
    ULONG Length
    )
{
    while (Length--) {
        PartialSum += *Source++;
        PartialSum = (PartialSum >> 16) + (PartialSum & 0xffff);
    }

return (USHORT)(((PartialSum >> 16) + PartialSum) & 0xffff);
}


Дата: Апр 7, 2004 22:24:39

volodya
Не дзенный какой-то вариант ;-)


Дата: Апр 7, 2004 22:45:19

В смысле?


Дата: Апр 8, 2004 12:56:01

Ну его на board.win32asmcommunity.net не хвалили - большой и медленный.
Кстати, в сорцах wine он тоже есть afaik.


Дата: Апр 8, 2004 13:56:25

Не дзенный какой-то вариант ;-)
Зато правильный, прямо "от производителя" :)


Дата: Апр 9, 2004 14:01:46

Всем бальшое спасиба !!!!


Дата: Июл 25, 2004 20:45:21

извините, но USHORT разве не 16 бит?
АФАИР, PE.OptionalHeader.Checksum - DWORD....


Дата: Июл 26, 2004 05:54:36

DarkK
извините, но USHORT разве не 16 бит?
АФАИР, PE.OptionalHeader.Checksum - DWORD...

Да 16 бит (2 байта). То что поле 32 бита еще ничего не значит.
S_T_A_S_
расшифруй afaik plz.


Дата: Июл 26, 2004 07:35:36

На сколько мне известно, это расшифровывается: As Far As I Know.

Соответственно, АФАИР, вероятно, сокращение от "As Far As I Remember",
но если мне не изменяет память, буржуи в таких случаях употребляют: IIRC - If I Recall Correctly

ЗЫ
Исходник-то из первых рук, там ошибки быть не может :)


Дата: Июл 26, 2004 07:44:28

S_T_A_S_
Спасибо за поднятие скилла =)

Исходник-то из первых рук, там ошибки быть не может :)

Да, кстати насчет 32 бит, кто-нить видел exe'шник, в котором старшие 16 бит не нули?

. 1 . 2 . >>


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