Skocz do zawartości

Snake

Użytkownicy
  • Postów

    1 445
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Snake

  1. Pamiętajcie tylko, żeby nie trzymać w pamięci całego ciągu znaków checksumy np.

    GML
    39dllCrc = '10B6F084';

    // lub

    39dllCrc = 280424580;

    i sprawdzać tak:

    GML
    if not crcpliku = 39dllCrc

    show_message( 'Nieprawidlowy plik' );

    bo takie coś łatwo podejrzeć/podmienić w pamięci.

    Lepiej tak zrobić:

    GML
    // przyjmijmy, że prawdziwa checksuma to: 10B6F084.

    // a get_checksum() zwraca sumę kontrolną CRC32 pliku w postaci stringa hex

    cksum = get_checksum( '39.dll' );

    if not string_char_at( cksum, 4 ) = '6' // jesli czwarty znak nie jest '6'

    { show_message( 'Plik 39.dll zostal zmodyfikowany' ); exit; }

    if not string_char_at( cksum, 7 ) = '8' // jesli siodmy znak nie jest '8'

    { show_message( 'Plik 39.dll zostal zmodyfikowany' ); exit; }

    if real( string_copy( cksum, 7, 2 ) ) - 34 <> 50 // jesli liczba z dwoch ostatnich znakow - 34 nie wynosi 50

    { show_message( 'Plik 39.dll zostal zmodyfikowany' ); exit; }

    // itd.

    i tak sprawdzić cały checksum :)

×
×
  • Dodaj nową pozycję...