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

Использование системных функций хеширования
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, о котором я писал раньше.Code (Assembler) : Убрать нумерацию
- ;-----------------------------------------------------------------------
- ; Функция вычисления контрольной суммы Флетчера
- ; by ManHunter / PCL
- ; http://www.manhunter.ru
- ;-----------------------------------------------------------------------
- ; Параметры:
- ; lpData - указатель на строку
- ; dSize - длина строки
- ; На выходе:
- ; AX = полученный хеш
- ;-----------------------------------------------------------------------
- proc fletcher lpData:DWORD, dSize:DWORD
- push ebx ecx esi
- ; Инициализация
- xor ebx,ebx
- ; Длина строки
- mov ecx,[dSize]
- or ecx,ecx
- jz .loc_ret
- ; Указатель на начало строки
- mov esi,[lpData]
- ; Хеширование
- .loc_checksum:
- lodsb
- add bl,al
- add bh,bl
- loop .loc_checksum
- .loc_ret:
- movzx eax,bx
- pop esi ecx ebx
- ret
- endp
Читать статью целиком »
Просмотров: 2262 | Комментариев: 0

Расчет MurmurHash на Ассемблере
29.01.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter
MurmurHash - семейство простых и быстрых хеш-функций. Необычное название произошло от двух базовых операций - умножение (MUltiply) и циклический битовый сдвиг (Rotate), которые используются в основном цикле хеширования. К достоинствам алгоритма Murmur можно отнести простоту реализации, хорошее распределение, мощный лавинный эффект, высокую скорость работы и сравнительно высокую устойчивость к коллизиям. Первая версия, разработанная Остином Апплеби (Austin Appleby), самая простая в реализации:Code (Assembler) : Убрать нумерацию
- ;-----------------------------------------------------------------------
- ; Функция вычисления хеша Murmur
- ; Автор: ManHunter / PCL
- ; http://www.manhunter.ru
- ;-----------------------------------------------------------------------
- ; Параметры:
- ; lpData - указатель на строку
- ; dSize - длина строки
- ; dSeed - соль
- ; На выходе:
- ; EAX = полученный хеш
- ;-----------------------------------------------------------------------
- proc Murmur lpData:DWORD, dSize:DWORD, dSeed:DWORD
- push ebx ecx edx esi edi
- MAGIC = 0xC6A4A793
- mov ebx,[dSize]
- imul ecx,ebx,MAGIC
- mov edx,[dSeed]
- xor ecx,edx
- mov esi,[lpData]
- .loc_loop:
- cmp ebx,4
- jb .loop_done
- mov eax,dword [esi]
- add ecx,eax
- imul ecx,MAGIC
- mov eax,ecx
- shr eax,16
- xor ecx,eax
- add esi,4
- sub ebx,4
- jmp .loc_loop
- .loop_done:
- cmp ebx,3
- je .loc_tail_3
- cmp ebx,2
- je .loc_tail_2
- cmp ebx,1
- je .loc_tail_1
- jmp .loc_finish
- .loc_tail_3:
- movzx eax,byte[esi+2]
- shl eax,16
- add ecx,eax
- .loc_tail_2:
- movzx eax,byte[esi+1]
- shl eax,8
- add ecx,eax
- .loc_tail_1:
- movzx eax,byte[esi]
- add ecx,eax
- imul ecx,MAGIC
- mov eax,ecx
- shr eax,16
- xor ecx,eax
- .loc_finish:
- imul ecx,MAGIC
- mov eax,ecx
- shr eax,10
- xor ecx,eax
- imul ecx,MAGIC
- mov eax,ecx
- shr eax,17
- xor eax,ecx
- pop edi esi edx ecx ebx
- ret
- endp
Читать статью целиком »
Просмотров: 2668 | Комментариев: 12

Программы для поиска криптоалгоритмов в исполняемых файлах
04.11.2015 | Категория: Темная сторона Силы | Автор: ManHunter

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