Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Алгоритм хеширования MaHash8 на Ассемблере

28.09.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter

Алгоритм хеширования MaHash8 на Ассемблере

MaHash8 - эффективная функция с высокой производительностью, которая позволяет выполнять операции хеширования с минимальным количеством коллизий. Она основана на простых операциях, имеет очень понятную структуру и легко реализуется на различных языках программирования.

Читать статью целиком »
Просмотров: 680 | Комментариев: 3

Использование системных функций хеширования

07.05.2022 | Категория: Образ мышления: Assembler | Автор: ManHunter

Использование системных функций хеширования

Я уже выкладывал на сайте ассемблерные реализации алгоритмов хеширования MD4, MD5 и SHA1. Но в Windows есть уже готовые функции для подсчета не только этих хешей, но и некоторых других. Конечно, делать все самому гораздо приятнее для души и полезнее для мозгов, но почему бы не переложить часть работы на систему? Как говорил один мой хороший товарищ: "У лошади голова большая, вот пусть она и думает".

Читать статью целиком »
Просмотров: 1157 | Комментариев: 5

Исследование защиты программы HashTab Shell Extension

07.08.2018 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы HashTab Shell Extension

HashTab Shell Extension - расширение стандартного Проводника Windows, которое позволяет подсчитывать контрольные суммы и хэши файлов прямо на вкладке свойств. Собственно, никаких ограничений по функционалу в программе нет, вся разница между бесплатной и платной версией заключается только в надоедливой надписи, что программа не лицензирована для коммерческого использования. Так что это будет не совсем исследование защиты, а так, косметическая операция. В конце концов, нельзя же все ломать, надо на чем-то и сидеть :)

Читать статью целиком »
Просмотров: 3659 | Комментариев: 6

Расчет Fletcher's Checksum на Ассемблере

15.02.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter

Расчет Fletcher's Checksum на Ассемблере

Алгоритм Fletcher's Checksum был назван в честь его автора - Джона Флетчера (John Fletcher), который разрабатывал проекты для систем дальней связи, тяжелой промышленности, спутниковой навигации и даже NASA. Ему потребовался максимально быстрый и компактный алгоритм для контроля целостности передаваемых данных.

Читать статью целиком »
Просмотров: 2763 | Комментариев: 0

Расчет MurmurHash на Ассемблере

29.01.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter
MurmurHash - семейство простых и быстрых хеш-функций. Необычное название произошло от двух базовых операций - умножение (MUltiply) и циклический битовый сдвиг (Rotate), которые используются в основном цикле хеширования. К достоинствам алгоритма Murmur можно отнести простоту реализации, хорошее распределение, мощный лавинный эффект, высокую скорость работы и сравнительно высокую устойчивость к коллизиям. Первая версия, разработанная Остином Апплеби (Austin Appleby), самая простая в реализации:
  1. ;-----------------------------------------------------------------------
  2. ; Функция вычисления хеша Murmur
  3. ; Автор: ManHunter / PCL
  4. ; http://www.manhunter.ru
  5. ;-----------------------------------------------------------------------
  6. ; Параметры:
  7. ;       lpData - указатель на строку
  8. ;       dSize  - длина строки
  9. ;       dSeed  - соль
  10. ; На выходе:
  11. ;       EAX = полученный хеш
  12. ;-----------------------------------------------------------------------
  13. proc    Murmur lpData:DWORD, dSize:DWORD, dSeed:DWORD
  14.         push    ebx ecx edx esi edi
  15.  
  16.         MAGIC = 0xC6A4A793
  17.  
  18.         mov     ebx,[dSize]
  19.         imul    ecx,ebx,MAGIC
  20.         mov     edx,[dSeed]
  21.         xor     ecx,edx
  22.  
  23.         mov     esi,[lpData]
  24.  
  25. .loc_loop:
  26.         cmp     ebx,4
  27.         jb      .loop_done
  28.  
  29.         mov     eax,dword [esi]
  30.         add     ecx,eax
  31.         imul    ecx,MAGIC
  32.         mov     eax,ecx
  33.         shr     eax,16
  34.         xor     ecx,eax
  35.  
  36.         add     esi,4
  37.         sub     ebx,4
  38.         jmp     .loc_loop
  39.  
  40. .loop_done:
  41.         cmp     ebx,3
  42.         je      .loc_tail_3
  43.         cmp     ebx,2
  44.         je      .loc_tail_2
  45.         cmp     ebx,1
  46.         je      .loc_tail_1
  47.         jmp     .loc_finish
  48.  
  49. .loc_tail_3:
  50.         movzx   eax,byte[esi+2]
  51.         shl     eax,16
  52.         add     ecx,eax
  53. .loc_tail_2:
  54.         movzx   eax,byte[esi+1]
  55.         shl     eax,8
  56.         add     ecx,eax
  57. .loc_tail_1:
  58.         movzx   eax,byte[esi]
  59.         add     ecx,eax
  60.         imul    ecx,MAGIC
  61.         mov     eax,ecx
  62.         shr     eax,16
  63.         xor     ecx,eax
  64.  
  65. .loc_finish:
  66.         imul    ecx,MAGIC
  67.  
  68.         mov     eax,ecx
  69.         shr     eax,10
  70.         xor     ecx,eax
  71.  
  72.         imul    ecx,MAGIC
  73.  
  74.         mov     eax,ecx
  75.         shr     eax,17
  76.         xor     eax,ecx
  77.  
  78.         pop     edi esi edx ecx ebx
  79.         ret
  80. endp
На входе функции передаются три параметра: lpData - указатель на строку данных, для которых надо подсчитать хеш, dSize - размер данных (длина строки), dSeed - соль для пользовательской модификации хеша.

Читать статью целиком »
Просмотров: 3444 | Комментариев: 12

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2026
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0024 сек.) / Память: 4.5 Mb
Наверх