Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых)

 eXeL@B —› Основной форум —› CRC секции
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 августа 2005 04:03
· Личное сообщение · #1

Люди добрые, обьясните дурачку: как подсчитать crc секции кода?




Ранг: 299.6 (наставник)
Активность: 0.30
Статус: Участник
Armadillo Killer

Создано: 06 августа 2005 04:12
· Личное сообщение · #2

Попробуй прогой F-CRC Calculator 0.51 или CRC Calculator

http://www.vladimir13.narod.ru/download/crc.zip http://www.vladimir13.narod.ru/download/crc.zip
http://download.softobzor.net/download/win/17308/Security-Related/Secu rity/F-CRC-Calculator-051.html http://download.softobzor.net/download/win/17308/Security-Related/Security/F-CRC-Calculator-051.html



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 августа 2005 04:22 · Поправил: User32
· Личное сообщение · #3

Сорри, неправиильно задал вопрос.
Можно ли во время работы программы (в подходящий момент ) проверить crc секции в памяти?
Хорошо бы исходник на asm'e, c или delphi.




Ранг: 78.6 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 06 августа 2005 04:22
· Личное сообщение · #4

недавно уже была тема
http://www.exelab.ru/f/action=vthread&forum=1&topic=2577



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 августа 2005 04:30
· Личное сообщение · #5

Ещё бы знать, как этот адрес получить...




Ранг: 78.6 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 06 августа 2005 04:41
· Личное сообщение · #6

вызови GetModuleHandle это будет начало кода



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 06 августа 2005 18:58
· Личное сообщение · #7

Source: ImageBase+VirtualOffset
Size: VirtualSize

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 06 августа 2005 19:08
· Личное сообщение · #8

Вот так это делает MS (для всего файла)
/**

* Compute a partial checksum on a portion of an imagefile.
*/
unsigned short inline
chk_sum(
unsigned long part_sum, ///< Supplies the initial checksum value.
unsigned short * source, ///< Supplies a pointer to the array of words
///< for which the checksum is computed.
unsigned long length ///< Supplies the length of the array in words.
)
{
while (length--)
{
part_sum += *source++;
part_sum = (part_sum >> 16) + (part_sum & 0xffff);
}
return (unsigned short)(((part_sum >> 16) + part_sum) & 0xffff);
}


/**
* This functions computes the checksum of an image mapped as a data file.
*/
unsigned long
calculate_checksum (
void * base, ///< Supplies a pointer to the base of the mapped file.
unsigned long length ///< Supplies the length of the file in bytes.
)
{
unsigned short * a_sum;
IMAGE_NT_HEADERS * headers;
unsigned short part_sum;

// Compute the checksum of the file and zero the header checksum value.
//
part_sum = chk_sum(0, (unsigned short *)base, (length + 1) >> 1);

// If the file is an image file, then subtract the two checksum words
// in the optional header from the computed checksum before adding
// the file length, and set the value of the header checksum.
//
if (((IMAGE_DOS_HEADER *)base)->e_magic != IMAGE_DOS_SIGNATURE)
return 0;
else
{
headers = (IMAGE_NT_HEADERS *)((char *)base + ((IMAGE_DOS_HEADER *)base)->e_lfanew);

a_sum = (unsigned short *)(&headers->OptionalHeader.CheckSum);
part_sum -= (part_sum < a_sum[0]);
part_sum -= a_sum[0];
part_sum -= (part_sum < a_sum[1]);
part_sum -= a_sum[1];

// Compute the final checksum value as the sum of the paritial checksum
// and the file length.
//
return (unsigned long)part_sum + length;
}
}



 eXeL@B —› Основной форум —› CRC секции
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати