Blog. Just Blog

Образ мышления: 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 обладает высокой скоростью работы и отличным лавинным эффектом. Даже на небольших объемах данных количество коллизий минимальное. Вот вариант этого алгоритма на Ассемблере.
  1. ;---------------------------------------------
  2. ; Функция вычисления хеша Jenkins
  3. ; Copyright (C) ManHunter / PCL
  4. ; https://www.manhunter.ru
  5. ;---------------------------------------------
  6. ; Параметры:
  7. ;       lpData - указатель на строку
  8. ;       dSize  - длина строки
  9. ; На выходе:
  10. ;       EAX = полученный хеш
  11. ;---------------------------------------------
  12. proc    Jenkins 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.         je      .loc_ret
  22.  
  23.         mov     esi,[lpData]
  24. @@:
  25.         lodsb
  26.         movzx   eax,al
  27.  
  28.         ; hash += key[i];
  29.         add     ebx,eax
  30.  
  31.         ; hash += hash << 10;
  32.         mov     eax,ebx
  33.         shl     eax,10
  34.         add     ebx,eax
  35.  
  36.         ; hash ^= hash >> 6;
  37.         mov     eax,ebx
  38.         shr     eax,6
  39.         xor     ebx,eax
  40.  
  41.         ; i++
  42.         dec     ecx
  43.         jnz     @b
  44.  
  45. .loc_ret:
  46.         ; hash += hash << 3;
  47.         mov     eax,ebx
  48.         shl     eax,3
  49.         add     ebx,eax
  50.  
  51.         ; hash ^= hash >> 11;
  52.         mov     eax,ebx
  53.         shr     eax,11
  54.         xor     ebx,eax
  55.  
  56.         ; hash += hash << 15;
  57.         mov     eax,ebx
  58.         shl     eax,15
  59.         add     eax,ebx
  60.  
  61.         pop     esi ecx ebx
  62.         ret
  63. endp
Функции передаются два параметра: указатель на данные и размер этих данных, на выходе DWORD с полученным значением хеша.

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

prev 01 02 03 04 05 06 07 08 09 ... 74 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0048 сек.) / Память: 4.5 Mb
Наверх