Blog. Just Blog

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

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

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

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

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

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

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

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

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

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

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

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

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

15.02.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter
Алгоритм Fletcher's Checksum был назван в честь его автора - Джона Флетчера (John Fletcher), который разрабатывал проекты для систем дальней связи, тяжелой промышленности, спутниковой навигации и даже NASA. Ему потребовался максимально быстрый и компактный алгоритм для контроля целостности передаваемых данных. Для обработки больших объемов данных Fletcher's Checksum не подходит, так как велика вероятность коллизий (количество возможных значений контрольной суммы всего 65535). Этот алгоритм наиболее эффективен для обнаружения погрешности в несколько бит, например, искажение пакета данных в случае помех при передаче по линии связи. Дальнейшее развитие алгоритма Fletcher's Checksum привело к появлению алгоритма Adler-32, о котором я писал раньше.
  1. ;-----------------------------------------------------------------------
  2. ; Функция вычисления контрольной суммы Флетчера
  3. ; by ManHunter / PCL
  4. ; http://www.manhunter.ru
  5. ;-----------------------------------------------------------------------
  6. ; Параметры:
  7. ;       lpData - указатель на строку
  8. ;       dSize  - длина строки
  9. ; На выходе:
  10. ;       AX = полученный хеш
  11. ;-----------------------------------------------------------------------
  12. proc    fletcher lpData:DWORD, dSize:DWORD
  13.         push    ebx ecx esi
  14.  
  15.         ; Инициализация
  16.         xor     ebx,ebx
  17.  
  18.         ; Длина строки
  19.         mov     ecx,[dSize]
  20.         or      ecx,ecx
  21.         jz      .loc_ret
  22.  
  23.         ; Указатель на начало строки
  24.         mov     esi,[lpData]
  25.  
  26.         ; Хеширование
  27. .loc_checksum:
  28.         lodsb
  29.         add     bl,al
  30.         add     bh,bl
  31.         loop    .loc_checksum
  32.  
  33. .loc_ret:
  34.         movzx   eax,bx
  35.  
  36.         pop     esi ecx ebx
  37.         ret
  38. endp
Параметры вызова: lpData - указатель на данные, для которых надо подсчитать контрольную сумму, dSize - размер данных. 16-битное значение контрольной суммы возвращается в регистре EAX. Алгоритм легко преобразуется в вариант Fletcher-32 и Fletcher-64, разница только в используемых регистрах и размере блоков, используемых для цикла хеширования.

Читать статью целиком »
Просмотров: 2262 | Комментариев: 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 - соль для пользовательской модификации хеша.

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

Программы для поиска криптоалгоритмов в исполняемых файлах

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

Программы для поиска криптоалгоритмов в исполняемых файлах

При анализе различных защит часто приходится определять, какой алгоритм был использован для шифрования данных или преобразований регистрационного имени в правильный серийный номер. Часто авторы не изобретают велосипедов, а используют готовые алгоритмы шифрования или хеширования. Вы должны понимать, что алгоритмы шифрования и алгоритмы хеширования - это разные вещи, но для удобства в статье я буду называть их просто "криптоалгоритмами". Если алгоритмы стандартные, то их можно идентифицировать, например, по характерным константам-полиномам, таблицам преобразований или по последовательности выполняемых операций (хорошие статьи по этой теме на английском можно почитать тут). Для поиска криптоалгоритмов в исполняемых файлах созданы специальные программы, небольшой обзор которых я подготовил в этой статье.

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

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