Blog. Just Blog

Быстрый поиск

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

Meizu Music Card (Ritmix RF-7400)

14.01.2009 | Категория: Обзоры техники | Автор: ManHunter

Meizu Music Card (Ritmix RF-7400)

Надоело мучать свою мобилу несвойственными ей функциями MP3-плеера, поэтому к Рождеству сделал себе любимому такой приятный подарок. После лазания по "Савёле" остановился на этой модели. Выбор был сделан из желания получить не очень дорогой плеер с максимальной емкостью памяти для этой цены. Тактико-технические характеристики девайса без труда можно найти в интернете. Это не реклама, просто опишу свои личные ощущения от использования.

Управление очень простое. Все действия выполняются одной большой сенсорной кнопкой и одной маленькой кнопкой листания композиций. Сперва никак не мог приловчиться выполнять прокрутку, пытался делать это легким касанием, но оказалось что ее надо делать как раз с небольшим нажимом, а касание расценивается как команда "Ввод". Меню на русском языке, все интуитивно понятно. К тому же в комплекте идет внушительный мануал с картинками и описанием всех действий, тоже на русском языке. Чтобы кнопки случайно не нажались, например когда плеер лежит в кармане, на корпусе предусмотрен переключатель блокировки. Подключается через стандартный разъем mini-USB к компьютеру, системой определяется как обычная флешка. Заряжается через него же, не требует никаких посторонних батареек и аккумуляторов, что для меня является огромным плюсом. Заряд держит очень долго, даже при постоянном использовании. В документации заявлено более 20 часов непрерывной работы, похоже что так оно и есть.

Звук просто шикарный, особенно после телефона. Настраивается точно под ваши требования с использованием целой кучи опций, таких как объемный звук, усиление басов и высоких частот и т.д. На выходе дает такой громкий сигнал, что даже мой слух, тренированный разными брутальными стилями музыки, максимальную громкость в наушниках не выдерживает. Понимает форматы MP3, WMA, OGG, FLAC, WAV, все залитые в него композиции воспроизвелись без проблем. Также в устройстве есть FM-радио и диктофон. Ни тем, ни другим не пользуюсь, так что ничего больше про них сказать не могу. Еще из полезных мелочей присутствуют часы и календарик.

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

Runtime error R6002 floating point not loaded

13.01.2009 | Категория: Темная сторона Силы | Автор: ManHunter
После распаковки приложений, написанных на Microsoft Visual C++ и накрытых некоторыми протекторами (Armadillo, PECompact и другие) они могут падать при запуске или выполнении каких-либо действий с ошибкой Runtime error R6002 floating point not loaded. Причина ее возникновения следующая: программа была скомпилирована с Microsoft.VC80.CRT и при запуске в ней проверяются атрибуты секций.

Первый способ устранения ошибки R6002 заключается в выставлении атрибутов секций в распакованном файле в точности, как было в оригинальном. Сделать это можно с использованием бесплатной утилиты CFF Explorer VII. Второй вариант, более надежный и гарантированно рабочий - пропатчивание в исполняемом файле функции __fptrap, которая и отвечает за появление этого сообщения об ошибке. Дизассемблером IDA в файле она определяется примерно так:
  1. __fptrap  proc near
  2.           push    2             ; <--- заменить на RET
  3.           call    __amsg_exit
  4.           pop     ecx
  5.           retn
  6. __fptrap  endp
Ее надо пропатчить, заменив первую команду на немедленный возврат из функции RET. Сигнатура поиска 6A 02 E8 ?? ?? ?? ?? 59 C3. К сожалению, сигнатура достаточно короткая и в большом коде может быть найдено несколько совпадений, поэтому при анализе файла очень желательно пользоваться дизассемблером.

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

Функции base64 на Ассемблере

09.01.2009 | Категория: Образ мышления: Assembler | Автор: ManHunter
Алгоритм Base64 может использоваться в пользовательских почтовых приложениях, в качестве одного из уровней защиты шифрованием, для хранения двоичных данных и для решения многих других задачах. В большинстве языков высокого уровня используются штатные функции, в Ассемблере приходится все реализовывать самостоятельно.

Алгоритм Base64 использует две функции - кодирования данных и обратного декодирования. Для обеих функций кодирования и декодирования предварительно инициализируются следующие вспомогательные данные:
  1. section '.data' data readable writeable
  2. ...
  3. base64_table db "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  4.              db "abcdefghijklmnopqrstuvwxyz"
  5.              db "0123456789+/"
  6.  
  7. decode_table rb 100h
  8. ...
А вот сами функции для работы с Base64:
  1. ;---------------------------------------------------------------
  2. ; Функция кодирования Base64
  3. ; Параметры:
  4. ; dFrom - указатель на исходные данные
  5. ; dTo   - указатель на буфер для приема кодированных данных
  6. ; dSize - размер исходных данных
  7. ; Функция ничего не возвращает
  8. ;---------------------------------------------------------------
  9. proc    base64_encode dFrom:dword, dTo:dword, dSize:dword
  10.         push    eax ecx edx esi edi
  11.  
  12.         mov     esi,[dFrom]
  13.         mov     edi,[dTo]
  14.         mov     ecx,[dSize]
  15.  
  16.         or      ecx,ecx
  17.         jz      .r3
  18. .encode_loop:
  19.         lodsd
  20.         mov     edx,eax
  21.         cmp     ecx,3
  22.         jae     .remainder_ok
  23.         and     edx,0ffffh
  24.         cmp     ecx,2
  25.         jae     .remainder_ok
  26.         and     edx,0ffh
  27. .remainder_ok:
  28.         bswap   edx
  29.  
  30.         mov     eax,edx
  31.         shr     eax,26
  32.         and     eax,00111111b
  33.         mov     al,[base64_table+eax]
  34.         stosb
  35.  
  36.         mov     eax,edx
  37.         shr     eax,20
  38.         and     eax,00111111b
  39.         mov     al,[base64_table+eax]
  40.         stosb
  41.         dec     ecx
  42.         jz      .r2
  43.  
  44.         mov     eax,edx
  45.         shr     eax,14
  46.         and     eax,00111111b
  47.         mov     al,[base64_table+eax]
  48.         stosb
  49.         dec     ecx
  50.         jz      .r1
  51.  
  52.         mov     eax,edx
  53.         shr     eax,8
  54.         and     eax,00111111b
  55.         mov     al,[base64_table+eax]
  56.         stosb
  57.  
  58.         dec     esi
  59.         dec     ecx
  60.         jnz     .encode_loop
  61.  
  62.         jmp     .r3
  63. .r2:
  64.         mov     al,'='
  65.         stosb
  66. .r1:
  67.         mov     al,'='
  68.         stosb
  69. .r3:
  70.         xor     eax,eax
  71.         stosb
  72.         pop     edi esi edx ecx eax
  73.         ret
  74. endp
В этой функции все параметры обязательные. Размер буфера-приемника должен быть примерно в 1,5 раза больше исходных данных, это обусловлено особенностями алгоритма кодирования.

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

Обход эвристики Avira AntiVir в JavaScript

08.01.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Последние несколько дней посетители сайта стали жаловаться, что их антивирус эвристически определяет в HTML-коде страниц сайта вредоносный код. Их объединяло одно: они все пользовались "антивирусом" (в кавычках) под гордым названием Avira AntiVir. После недолгого расследования и тестирования было выяснено, что эта недоделка ругается на скрипт добавления страницы в закладки, а конкретно на его часть, отвечающую за работу в Internet Explorer:
  1. // Internet Explorer
  2. window.external.AddFavorite(urltitle);
Не знаю что надо курить, чтобы додуматься распознавать это действие как опасное, однако факт остается фактом: абсолютно безопасный код распознается этим "антивирусом" как вредоносный. Эвристика ругается на добавление страницы в закладки официально документированными средствами! Отличный пример как НЕ надо писать программы. Чтобы заткнуть Avira достаточно в скрипте чуть-чуть изменить сигнатуру "AddFavorite", а при выполнении привести ее в первоначальный вид:
  1. // Internet Explorer
  2. eval("window.external.AddFa-vorite(url, title)".replace(/-/g,''));
Приношу извинения пользователям за доставленные неудобства. А тупым дрочерам из младших классов, которые писали этот "антивирус", могу только порекомендовать поменьше лазать по порносайтам, тогда и в закладки ничего ставиться не будет. Ну и напоследок: реально вредоносный код на HTML-страницах можно спрятать от Avira AntiVir точно таким же примитивнейшим способом. Выводы о надежности этой поделки, думаю, сделаете сами.

Просмотров: 8568 | Комментариев: 16

Поздравляю с Рождеством Христовым!

07.01.2009 | Категория: Всякая всячина | Автор: ManHunter

Поздравляю с Рождеством Христовым!

Вот наступает Рождество,
Вчера закончились морозы,
А на снегу лежали розы
И, будто бы от них занозы,
Коснулись сердца моего.
Год пролетит - минует век,
Ах, время, как оно не вечно,
Течёт рекою скоротечной,
Каким же был вчера беспечным,
А ныне новый человек.
Журчит заботами своими
Жизнь, протекая, как вода,
То радости, а то беда,
То наступают холода,
Но оттепель грядёт за ними.


Просмотров: 3958 | Комментариев: 1

01 ... 278 279 280 281 282 283 284 ... 292
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2020
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0356 сек.) / Память: 4.75 Mb
Наверх