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

Парсинг метаданных файлов SPX на Ассемблере
17.02.2025 | Категория: Образ мышления: Assembler | Автор: ManHunter

Парсинг метаданных файлов SPX на Ассемблере
Аудиоформат Speex был создан в 2002 году как часть проекта Vorbis и использовался преимущественно для кодирования речи и в VoIP-телефонии. Этот формат сжимает аудиопоток с потерями, что означает снижение качества звука ради уменьшения размера файлов. Сегодня Speex считается устаревшим, его заменил более современный формат Opus. Однако файлы в формате Speex все еще можно встретить в интернете, поэтому важно уметь работать с их метаданными.
Читать статью целиком »
Просмотров: 212 | Комментариев: 0

Самошифрующийся код на Ассемблере
11.02.2025 | Категория: Образ мышления: Assembler | Автор: ManHunter

Самошифрующийся код на Ассемблере
Макросы - один из наиболее мощных инструментов FASM. С их помощью можно не только описывать сложные структуры и целые наборы команд, но также модифицировать данные еще на этапе компиляции. Сегодня мы сделаем самошифрующийся код с помощью макросов FASM и реализуем его защиту.
Читать статью целиком »
Просмотров: 520 | Комментариев: 7

Как узнать количество подключенных к компьютеру мышек
05.02.2025 | Категория: Образ мышления: Assembler | Автор: ManHunter

Как узнать количество подключенных к компьютеру мышек
Даже если я работаю на ноутбуке, обязательно подключаю к нему мышь и полноразмерную клавиатуру. Работать на тачпаде могу только в самых крайних случаях. И как-то раз я подумал: курсор можно двигать через тачпад, можно при помощи мыши, можно даже подключить сразу несколько мышей. А вот как узнать, какое количество мышей подключено к компьютеру? Вопрос, как и ответ на него, на первый взгляд кажется бесполезным. Но таким образом мы научимся работать со списком устройств в системе, а также обрабатывать ситуации, когда у пользователя действительно может не оказаться подключенных мышек. В этом случае ваше приложение должно предупреждать пользователя об ограничении функционала или взаимодействовать с пользователем, учитывая максимальное использование клавиатуры.
Читать статью целиком »
Просмотров: 322 | Комментариев: 0

Декомпиляция CHM-файлов на Ассемблере
11.01.2025 | Категория: Образ мышления: Assembler | Автор: ManHunter

Декомпиляция CHM-файлов на Ассемблере
CHM-файлы, как правило, содержат в себе справочную документацию в формате HTML, скомпилированную и сохраненную с помощью сжатия LZX. Справочный файл может также включать в себя содержание, предметный указатель, базу для полнотекстового поиска по страницам, а также файлы изображений, скрипты, таблицы стилей и даже вложенные архивы. Чтобы извлечь все эти данные из CHM-файла, его надо декомпилировать. Об этом и будет сегодняшняя статья.
Читать статью целиком »
Просмотров: 550 | Комментариев: 0

Алгоритм хеширования Jenkins на Ассемблере
27.12.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
Семейство хеш-функций Jenkins ведет свою историю с 1997 года, когда этот алгоритм был впервые опубликован. Автором является Bob Jenkins, известный специалист в области создания генераторов псевдослучайных чисел и криптографии. Несмотря на кажущуюся простоту, хеш Jenkins обладает высокой скоростью работы и отличным лавинным эффектом. Даже на небольших объемах данных количество коллизий минимальное. Вот вариант этого алгоритма на Ассемблере.Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------
- ; Функция вычисления хеша Jenkins
- ; Copyright (C) ManHunter / PCL
- ; https://www.manhunter.ru
- ;---------------------------------------------
- ; Параметры:
- ; lpData - указатель на строку
- ; dSize - длина строки
- ; На выходе:
- ; EAX = полученный хеш
- ;---------------------------------------------
- proc Jenkins lpData:DWORD, dSize:DWORD
- push ebx ecx esi
- ; Инициализация
- xor ebx,ebx
- ; Длина строки
- mov ecx,[dSize]
- or ecx,ecx
- je .loc_ret
- mov esi,[lpData]
- @@:
- lodsb
- movzx eax,al
- ; hash += key[i];
- add ebx,eax
- ; hash += hash << 10;
- mov eax,ebx
- shl eax,10
- add ebx,eax
- ; hash ^= hash >> 6;
- mov eax,ebx
- shr eax,6
- xor ebx,eax
- ; i++
- dec ecx
- jnz @b
- .loc_ret:
- ; hash += hash << 3;
- mov eax,ebx
- shl eax,3
- add ebx,eax
- ; hash ^= hash >> 11;
- mov eax,ebx
- shr eax,11
- xor ebx,eax
- ; hash += hash << 15;
- mov eax,ebx
- shl eax,15
- add eax,ebx
- pop esi ecx ebx
- ret
- endp
Читать статью целиком »
Просмотров: 357 | Комментариев: 0
