Blog. Just Blog

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

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

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. К сожалению, сигнатура достаточно короткая и в большом коде может быть найдено несколько совпадений, поэтому при анализе файла очень желательно пользоваться дизассемблером.

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

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

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

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

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

Обход эвристики 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 точно таким же примитивнейшим способом. Выводы о надежности этой поделки, думаю, сделаете сами.

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

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

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

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

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


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

Новый Год под пальмами

04.01.2009 | Категория: Жизнь в оффлайне | Автор: ManHunter

Новый Год под пальмами

Вот я и вернулся из новогодней поездки в Египет. На этот раз я летал в курортный город Хургаду. Борт отправился рано утром из аэропорта "Внуково" и уже около 12 дня местного времени меня уже встречали в аэропорту представители турагенства. Дальше будет очень много фотографий, так что кто на платном трафике будьте аккуратнее.

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

01 ... 412 413 414 415 416 417 418 ... 426
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0271 сек.) / Память: 4.5 Mb
Наверх