Blog. Just Blog

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

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

Эффект водной поверхности на Ассемблере

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

Эффект водной поверхности на Ассемблере

Бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как работают другие люди. К горящему огню мы вернемся как-нибудь в другой раз, а сегодня я предлагаю полюбоваться на эффект водной поверхности, реализованный на чистом Ассемблере. Я неоднократно встречал этот эффект в патчах и кейгенах разных крякерских команд и считаю его одним из лучших визуальных эффектов. Одно время даже была мысль рипнуть его из готовых exe-файлов, но потом мне попался оригинал исходника на MASM. Недолго думая, я портировал его на FASM и с огромным удовольствием буду использовать в своих релизах.

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

Как сделать снимок с web-камеры на Ассемблере

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

Как сделать снимок с web-камеры на Ассемблере

Начитался страшных историй про людей, которые опасаются, что через web-камеру их компьютера за ними следят спецслужбы и злые хакеры. Поэтому камеры заклеиваются черной изолентой, паранойя прогрессирует и все такое. Мне стало интересно, как сделать снимок с web-камеры без ведома пользователя?

Самый простой способ - воспользоваться стандартной библиотекой avicap32.dll, которая входит в состав системы еще с Windows 2000. Она предназначена для работы с такими медиа-устройствами как цифровые видеокамеры, web-камеры, видеокарты и т.д. через удобный механизм управления посредством сообщений. Как написано в MSDN, эта библиотека предоставляет достаточно большой набор инструментов для работы с web-камерами, но нас интересует только захват изображения, и желательно без создания видимых окон или чего-то подобного.

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

Расчет CRC64 на Ассемблере

30.07.2014 | Категория: Образ мышления: Assembler | Автор: ManHunter
Алгоритм подсчета CRC64, как и остальных контрольных сумм, предназначен для проверки целостности данных при их передаче или хранении. Также контрольные суммы могут использоваться для быстрого сравнения двух наборов данных на неэквивалентность: с большой вероятностью различные наборы данных будут иметь неравные контрольные суммы. Длина в 64 бита позволяет сократить число возможных коллизий, а использование предварительно посчитанной таблицы делает скорость вычисления достаточно большой.

В этой статье я покажу два варианта алгоритма подсчета CRC64. Они отличаются используемыми полиномами и, соответственно, полученными на их основе таблицами. Сами алгоритмы отличаются ненамного. Первый вариант - прямой или нормальный, принятый как стандарт ISO 3309. Он используется в различных программах, например, в базе данных PostgreSQL. Здесь за основу берется полином 0x42F0E1EBA9EA3693.
  1. ;-----------------------------------------------------------------------
  2. ; Функция вычисления CRC64 - Прямой табличный алгоритм (PostgreSQL)
  3. ;-----------------------------------------------------------------------
  4. ; Параметры:
  5. ;   lData  - указатель на участок памяти для расчета CRC64
  6. ;   dLen   - размер участка в байтах
  7. ; На выходе:
  8. ;   EAX:EDX = CRC64 участка памяти
  9. ;-----------------------------------------------------------------------
  10. proc calc_CRC64 lData:dword, dLen:dword
  11.         ; Сохранить регистры
  12.         push    edi esi ebx ecx
  13.  
  14.         ; Указатель на данные для подсчета CRC64
  15.         mov     esi,[lData]
  16.         ; Размер участка данных
  17.         mov     ecx,[dLen]
  18.  
  19.         xor     eax,eax
  20.  
  21.         ; Начальное значение CRC64 = -1
  22.         mov     ebx,0FFFFFFFFh
  23.         mov     edx,ebx
  24. @@:
  25.         ; Следующий символ данных
  26.         lodsb
  27.  
  28.         ; Вычислить смещение QWORD в таблице
  29.         mov     edi,edx
  30.         shr     edi,24
  31.         xor     eax,edi
  32.  
  33.         ; Вычислить значение CRC64
  34.         shld    edx,ebx,8
  35.         shl     ebx,8
  36.         xor     ebx,dword [crc64table+eax*8]
  37.         xor     edx,dword [crc64table+eax*8+4]
  38.  
  39.         loop    @b
  40.  
  41.         xchg    eax,ebx
  42.  
  43.         ; Финализация CRC64
  44.         not     eax
  45.         not     edx
  46.  
  47.         ; Восстановить регистры
  48.         pop     ecx ebx esi edi
  49.  
  50.         ret
  51. endp
Эта функция подразумевает, что подсчет контрольной суммы выполняется сразу для всей строки данных, без промежуточных накопительных подсчетов. Если требуется выполнять подсчет для нескольких блоков, например, периодически поступающие потоковые данные или очень большие объемы информации, то алгоритм придется немного модифицировать. Для этого начальное значение CRC64 при втором и последующем расчете инициализируется промежуточным значением с предыдущего подсчета, а финализация выполняется только после вычисления CRC64 последнего блока данных.

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

Подсветка ошибок FASM в консоли Sublime Text

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

Подсветка ошибок FASM в консоли Sublime Text

В одной из статей, посвященной Sublime Text мне задали вопрос по поводу можно ли сделать подсветку ошибок в консоли Sublime Text при запуске или сборке (Build) файла. В официальной документации мне не удалось найти ничего, касающегося настройки вывода консоли компиляции, но по данным из неофициальной документации оказалось, что все можно сделать. А если поковыряться в потрошках редактора, то можно найти и еще кое-что интересное.

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

Как подключить компилятор FASM к Sublime Text

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

Как подключить компилятор FASM к Sublime Text

После прикручивания синтаксиса Assembler к редактору Sublime Text 3, возникла необходимость добавить к нему и поддержку компилятора Flat Assembler (FASM). Задача немного осложнилась тем, что требовалось сделать два варианта компиляции: просто сборка исполняемого файла и сборка с последующим запуском. В результате получился небольшой плагин (package), с помощью которого компилятор Flat Assembler подключается к Sublime Text. Для установки распакуйте архив с плагином в папку редактора \Data\Packages с сохранением структуры каталогов. Горячие клавиши: Ctrl+B - компиляция, Ctrl+Shift+B - компиляция с последующим запуском (только для exe-файлов). В папке \Flat Assembler\FASM находится модифицированный компилятор Flat Assembler и все файлы из папки \INCLUDE официального дистрибутива. Вы можете обновлять эти файлы самостоятельно по мере необходимости. Также в файле \Default (Windows).sublime-keymap можно заменить кнопки запуска и компиляции на более привычные комбинации F9 и Ctrl+F9, как это сделано в FASM IDE.

Если используете расширение Package Control, то добавьте в него ссылку на мой репозиторий и устанавливайте расширение Flat Assembler через него. В этом случае все следующие обновления компилятора будут устанавливаться автоматически. Репозиторий:

https://www.manhunter.ru/autoupdate/packages.json
В репозитории всегда находится актуальная версия компилятора, тогда как здесь плагин может обновляться с некоторой задержкой.

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

prev 01 ... 45 46 47 48 49 50 51 ... 68 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0067 сек.) / Память: 4.5 Mb
Наверх