Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как подсчитать File CheckSum у exe или sys

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

aZer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как подсчитать File CheckSum
на любом языке программирования...
 
То что выдает например PE Explorer
 
   
 
сорри за ламерство...
хотя бы пошлите читать матчасть с указанием про что? какой метод подсчета данной контрольной суммы...

Всего записей: 243 | Зарегистр. 25-04-2002 | Отправлено: 23:38 24-01-2008 | Исправлено: aZer, 23:41 24-01-2008
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В любой поисковик по CRC32

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 02:44 25-01-2008
aZer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
простите за глупость, но непонятно как считается CRC32 в данном случае...
 
вот посчитал CRC32 целиком файла получилось 76E3F64C и никак не бъется...
 
Может это не CRC32 или считает со смещением?

Всего записей: 243 | Зарегистр. 25-04-2002 | Отправлено: 09:27 25-01-2008 | Исправлено: aZer, 09:28 25-01-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tantos

Цитата:
CRC32

Сомневаюсь.
 
aZer
Многие компиляторы записывают в заголовок EXE файла Checksum=0, например Delphi.
Checksum считают с помощью IMAGEHLP.DLL. Там есть функция CheckSumMappedFile.
Если тебя интересует код Delphi как посчитать Checksum по новой то это:

Код:
uses  
  ImageHlp;
 
procedure DoChecksum;
var
  M: TMemoryStream;
  I, C: Integer;
begin
  M := TMemoryStream.Create;
  try
    M.LoadFromFile('D:\Windows\explorer.exe');
    CheckSumMappedFile(M.Memory, M.Size, @I, @C);
    ShowMessageFmt('%x', [C]);
  finally
    M.Free;
  end;
end;

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 14:05 25-01-2008
dmka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Может это не CRC32 или считает со смещением?

Кажется там обычный CRC32, только поле Checksum должно быть заполнено нулями, потому как оно заполняется уже после подсчета CRC файла.

Всего записей: 947 | Зарегистр. 23-04-2003 | Отправлено: 15:19 25-01-2008
aZer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Огромное спасибо...
 
И в дополнение, потом сразу же нашел то что нужно было... благодаря информации о IMAGEHLP
http://www.dotfix.net/module.php?module=@6e786b36696d69666d74756c
 
т.к. мне не тока его считать нужно, а так же записывать в поле CheckSum
 
 
Добавлено:
dmka

Цитата:
Кажется там обычный CRC32, только поле Checksum должно быть заполнено нулями, потому как оно заполняется уже после подсчета CRC файла.

Часто, но не всегда поле CheckSum=0000000h это я знаю...
 
Я жеж спрашивал как посчитать...
Ответ получил...
теперь ищу PElib для Delphi - в этом деле нужная штука...  

Всего записей: 243 | Зарегистр. 25-04-2002 | Отправлено: 16:16 25-01-2008 | Исправлено: aZer, 16:27 25-01-2008
dmka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aZer

Цитата:
Я жеж спрашивал как посчитать...  

Ну я тебе и говорю - считается CRC32 файла с CheckSum=0000000h, а результат записывается обратно в CheckSum. Или считается CRC32 файла "как есть" и вычитается значение CheckSum из заголовка.

Всего записей: 947 | Зарегистр. 23-04-2003 | Отправлено: 15:06 27-01-2008
ptahy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
uses  
  ImageHlp;  
 
procedure DoChecksum;  
var  
  M: TMemoryStream;  
  I, C: Integer;  
begin  
  M := TMemoryStream.Create;  
  try  
    M.LoadFromFile('D:\Windows\explorer.exe');  
    CheckSumMappedFile(M.Memory, M.Size, @I, @C);  
    ShowMessageFmt('%x', [C]);  
  finally  
    M.Free;  
  end;  
end;

 
Здравствуйте !  приводится данный алгоритм CHECKSUM. В связи с этим вопрос а что это за алгоритм подсчёта и как он называется правильно , как подсчитывает?

Всего записей: 14 | Зарегистр. 12-03-2019 | Отправлено: 22:08 12-03-2019 | Исправлено: ptahy, 22:09 12-03-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ptahy
я же дал ссылку - читайте
https://www.codeproject.com/Articles/19326/An-Analysis-of-the-Windows-PE-Checksum-Algorithm
http://www.cyberforum.ru/cpp-beginners/thread1088478.html

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 22:12 12-03-2019 | Исправлено: Mavrikii, 22:13 12-03-2019
ptahy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да почитал, спасибо за ссылку, как я понял это: Анализ алгоритма контрольной суммы Windows PE, алгоритм Microsoft для создания контрольных сумм PE. Корпорация Майкрософт, по-видимому, не публично предлагает спецификацию, включая отсутствие документации в спецификации Microsoft Portable Executable и Common Object File Format. Кроме того, Matt Pietrek не предлагает алгоритм в своих работах.
 
Но всё же, Вопреки распространенному мнению, алгоритм, используемый Microsoft, не является CRC. Это несмотря на то, что статьи базы знаний, такие как 65122, утверждают, что используется 32-битный CRC.
 
Как я понял это подсчёт для exe + от дебагеров, чтоб не смогли внести изменения в программу. да ещё с вирусами может работать.
Неплохой алгоритм.
 
А вот можно ли его применить для обычных файлов , там прошивка, файл пдф ?
Ну скажем, подсчитал сумму прошивки, занёс в конец прописанную сумму, ну и потом подсчитывать и сравнивать ?

Всего записей: 14 | Зарегистр. 12-03-2019 | Отправлено: 23:19 12-03-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ptahy
можно, а чтобы быть уверенным можно и просто считать любой хэш - MD5, к примеру
и считать, конечно же, до места записи значения хэша, иначе изменится.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 23:23 12-03-2019 | Исправлено: Mavrikii, 23:24 12-03-2019
ptahy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...
 
Добавлено:
Не понимаю, почему моё письмо и код не загружаются ?
Как правильно ответить в теме?
 

Всего записей: 14 | Зарегистр. 12-03-2019 | Отправлено: 13:03 13-03-2019 | Исправлено: ptahy, 14:18 13-03-2019
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
...Ну скажем, подсчитал сумму прошивки, занёс в конец прописанную сумму, ну и потом подсчитывать и сравнивать ?

 
В этом алгоритме применяется простое суммирование с переносом, для контрольной суммы он будет мало пригодным. Например, если добавить к одному из байтов содержимого 1, а от через один байт следующего байта отнять 1, сумма сохранится, а содержимое уже будет другим.
Лучше CRC32 использовать для таких целей, а если ещё нужна и уверенность в том, что кто нибудь преднамеренно не изменит содержимое, тогда данные надо хешировать криптографически стойкими алгоритмами (SHA256, например).

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 14:16 13-03-2019 | Исправлено: ne_viens, 14:16 13-03-2019
ptahy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, согласен с вами, прогу написал, можно считать файл и сравнивать после, а также экзешники. Но вот с CRC16 не могу ни как понять как реализовать для подсчёта файла со сверкой контрольной суммы. Интересует CRC16, какая то билибирда получается.
 
А для этого новую тему надо создавать, или можно здесь?

Всего записей: 14 | Зарегистр. 12-03-2019 | Отправлено: 14:43 13-03-2019
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ptahy

Цитата:
Да, согласен с вами, прогу написал, можно считать файл и сравнивать после, а также экзешники. Но вот с CRC16 не могу ни как понять как реализовать для подсчёта файла со сверкой контрольной суммы. Интересует CRC16, какая то билибирда получается.

Разбирайтесь со структурой EXE (не знаю какой сейчас именно формат используется PE или что то другое). Изучайте, какие поля не используются и куда можно записать инфу о контрольной сумме. А при анализе игнорируйте этот блок. Но это все от лукавого. Уж если CRC32 не дает гарантированной защиты от изменения файлов, то CRC16 тем более. Получение хэша (даже md5) и то более верный способ. А уж SHA256 вообще true way.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:29 14-03-2019
ptahy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 14 | Зарегистр. 12-03-2019 | Отправлено: 12:34 15-03-2019
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как подсчитать File CheckSum у exe или sys


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru