Быстрый поиск
Введите фрагмент названия статьи для поиска
Программы для поиска криптоалгоритмов в исполняемых файлах
04.11.2015 | Категория: Темная сторона Силы | Автор: ManHunter
Программы для поиска криптоалгоритмов в исполняемых файлах
При анализе различных защит часто приходится определять, какой алгоритм был использован для шифрования данных или преобразований регистрационного имени в правильный серийный номер. Часто авторы не изобретают велосипедов, а используют готовые алгоритмы шифрования или хеширования. Вы должны понимать, что алгоритмы шифрования и алгоритмы хеширования - это разные вещи, но для удобства в статье я буду называть их просто "криптоалгоритмами". Если алгоритмы стандартные, то их можно идентифицировать, например, по характерным константам-полиномам, таблицам преобразований или по последовательности выполняемых операций (хорошие статьи по этой теме на английском можно почитать тут). Для поиска криптоалгоритмов в исполняемых файлах созданы специальные программы, небольшой обзор которых я подготовил в этой статье.
Читать статью целиком »
Просмотров: 13653 | Комментариев: 12
Исследование защиты программы MD5 CrackFAST
06.08.2015 | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы MD5 CrackFAST
Программа MD5 CrackFAST предназначена для взлома хэшей MD5. Взлом выполняется прямым перебором, без использования таблиц, поэтому для больших строк о положительном результате можно сразу забыть. Но и без этого в незарегистрированной версии программы есть принудительное ограничение - восстанавливаются строки не более 3 символов длиной.
Читать статью целиком »
Просмотров: 5933 | Комментариев: 7
Расчет CRC24 на Ассемблере
05.01.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter
CRC24 - еще одна разновидность контрольной суммы. Как можно увидеть из названия, ее размер составляет 24 бита, или 3 байта. Я пока не нашел практического применения этому хешу, так же как и программ, использующих его. Но раз есть алгоритм, то почему бы его не реализовать на Ассемблере? Начнем с наиболее компактной реализации без использования таблицы.Code (Assembler) : Убрать нумерацию
- ;-----------------------------------------------------------------------
- ; Функция вычисления хеша CRC24
- ; by ManHunter / PCL
- ; http://www.manhunter.ru
- ;-----------------------------------------------------------------------
- ; Параметры:
- ; lpData - указатель на строку
- ; dSize - длина строки
- ; На выходе:
- ; EAX = полученный хеш
- ;-----------------------------------------------------------------------
- proc CRC24 lpData:DWORD, dSize:DWORD
- push ebx ecx edx esi
- CRC24_POLYNOM = 1864CFBh
- ; Инициализация
- mov eax,0B704CEh
- ; Длина строки
- cmp [dSize],0
- je .loc_ret
- ; Указатель на начало строки
- xor ecx,ecx
- @@:
- ; Получить символ из строки
- mov ebx,[lpData]
- movzx edx,byte [ebx+ecx]
- shl edx,16
- xor eax,edx
- xor esi,esi
- .loc_cycle:
- shl eax,1
- test eax,1000000h
- jz .loc_next
- xor eax,CRC24_POLYNOM
- jmp .loc_next
- .loc_next:
- inc esi
- cmp esi,8
- jb .loc_cycle
- ; Следующий символ
- inc ecx
- cmp ecx,[dSize]
- jb @b
- .loc_ret:
- and eax,0FFFFFFh
- pop esi edx ecx ebx
- ret
- endp
Читать статью целиком »
Просмотров: 5780 | Комментариев: 6
Расчет CRC64 на Ассемблере
30.07.2014 | Категория: Образ мышления: Assembler | Автор: ManHunter
Алгоритм подсчета CRC64, как и остальных контрольных сумм, предназначен для проверки целостности данных при их передаче или хранении. Также контрольные суммы могут использоваться для быстрого сравнения двух наборов данных на неэквивалентность: с большой вероятностью различные наборы данных будут иметь неравные контрольные суммы. Длина в 64 бита позволяет сократить число возможных коллизий, а использование предварительно посчитанной таблицы делает скорость вычисления достаточно большой.В этой статье я покажу два варианта алгоритма подсчета CRC64. Они отличаются используемыми полиномами и, соответственно, полученными на их основе таблицами. Сами алгоритмы отличаются ненамного. Первый вариант - прямой или нормальный, принятый как стандарт ISO 3309. Он используется в различных программах, например, в базе данных PostgreSQL. Здесь за основу берется полином 0x42F0E1EBA9EA3693.
Code (Assembler) : Убрать нумерацию
- ;-----------------------------------------------------------------------
- ; Функция вычисления CRC64 - Прямой табличный алгоритм (PostgreSQL)
- ;-----------------------------------------------------------------------
- ; Параметры:
- ; lData - указатель на участок памяти для расчета CRC64
- ; dLen - размер участка в байтах
- ; На выходе:
- ; EAX:EDX = CRC64 участка памяти
- ;-----------------------------------------------------------------------
- proc calc_CRC64 lData:dword, dLen:dword
- ; Сохранить регистры
- push edi esi ebx ecx
- ; Указатель на данные для подсчета CRC64
- mov esi,[lData]
- ; Размер участка данных
- mov ecx,[dLen]
- xor eax,eax
- ; Начальное значение CRC64 = -1
- mov ebx,0FFFFFFFFh
- mov edx,ebx
- @@:
- ; Следующий символ данных
- lodsb
- ; Вычислить смещение QWORD в таблице
- mov edi,edx
- shr edi,24
- xor eax,edi
- ; Вычислить значение CRC64
- shld edx,ebx,8
- shl ebx,8
- xor ebx,dword [crc64table+eax*8]
- xor edx,dword [crc64table+eax*8+4]
- loop @b
- xchg eax,ebx
- ; Финализация CRC64
- not eax
- not edx
- ; Восстановить регистры
- pop ecx ebx esi edi
- ret
- endp
Читать статью целиком »
Просмотров: 7499 | Комментариев: 4
Исследование защиты программы MD5 Tool
29.03.2014 | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы MD5 Tool
Программа MD5 Tool предназначена для подсчета и проверки контрольной суммы MD5 файлов. Есть множество бесплатных и гораздо более мощных аналогов, поэтому мне очень странно, что за эту софтину аффтар пытается подрезать с пользователей по червонцу баксов. "И его посчитаем".
Читать статью целиком »
Просмотров: 5857 | Комментариев: 5