Blog. Just Blog

Образ мышления: Assembler

То, что не удается запрограммировать на Ассемблере, приходится паять
Образ мышления: Assembler - RSS-канал Образ мышления: Assembler - Карта сайта

Расчет 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 - соль для пользовательской модификации хеша.

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

Перехват и блокировка завершения работы Windows

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

Перехват и блокировка завершения работы Windows

В статье про отключение перезагрузки при установке обновлений, я упомянул программу ShutdownGuard, которая не дает перезагружаться компьютеру. Мне стало очень интересно, каким образом можно из своего приложения перехватить и заблокировать перезагрузку или выключение компьютера, а также каким образом система завершает работу. Результаты исследований вы можете прочитать в этой статье.

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

Отладка приложений с помощью Process Monitor

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

Отладка приложений с помощью Process Monitor

Если вы разработчик программного обеспечения под Windows, вам наверняка знакома утилита Process Monitor от Марка Руссиновича. С ее помощью можно легко отследить, к каким файлам или ключам реестра обращается приложение, просмотреть параметры ввода и вывода, работу с процессами и многое другое. Но мало кто знает, что Process Monitor можно также использовать в качестве отладочного инструмента, который позволяет разработчикам создавать события вывода отладчика и добавлять их в поток событий. Например, можно выводить текстовые сообщения прямо в трассировку при вызове и завершении функций, чтобы сопоставить их с другими перехватываемыми событиями.

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

Как узнать дату установки Windows

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

Как узнать дату установки Windows

Сегодня я расскажу, как можно узнать дату установки Windows. Я не могу оценить степень полезности этой информации, скорее всего, она находится где-то на уровне спортивного интереса. Ну или если вы задумались, например, не пора ли переустановить систему. В качестве инструмента для решения этой задачи будет использоваться Ассемблер.

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

Генератор случайных чисел с использованием RANDOM.ORG

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

Генератор случайных чисел с использованием RANDOM.ORG

Тема генераторов случайных чисел является одной из основных в криптографии. Использование любых программных генераторов случайных чисел имеет один главный недостаток: последовательность чисел может называться случайной только если между символами, нету зависимости. А любой алгоритм так или иначе подразумевает зависимость от вычислений. Истинно случайные числа получаются только от аппаратных генераторов. Одним из таких генераторов является сайт RANDOM.ORG. По заявлению его владельцев, источником для случайных чисел является атмосферный шум. Не берусь утверждать, так это или нет, но этот сайт пользуется заслуженной популярностью среди разработчиков всего мира.

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

prev 01 ... 39 40 41 42 43 44 45 ... 68 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0039 сек.) / Память: 4.5 Mb
Наверх