Blog. Just Blog

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

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

Запрет запуска нескольких копий программы

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

Первый способ основан на том, что в приложении можно определить расшаренную секцию, данные из которой будут доступны для всех его запущенных экземпляров. Достаточно прописать в ней некоторую переменную и присвоить ей уникальное значение. При старте выполняется проверка, и если значение переменной равно начальному, то считается что это старт первой копии, иначе приложение является второй копией и должно завершить свою работу. Поэтому первая копия приложения сразу после запуска и проверки должна заменить значение переменной на другое.
  1. ; Расшаренная секция, общая для всех копий данного приложения
  2. section '.shared' data readable writeable shareable
  3. started  dd  1       ; Флаг первого запуска
  4.  
  5. ; Сегмент кода
  6. section '.code' code readable executable
  7.         cmp     [started],1       ; Уже запущен экземпляр программы?
  8.         jne     already_started   ; Да, на выход
  9.         xor     eax,eax
  10.         ; Префикс LOCK и команда XCHG используются для предотвращения
  11.         ; возможных конфликтов на многопроцессорных машинах
  12.         lock xchg eax,[started]   ; Сбросить флаг
  13.         ; Нормальный запуск программы 
  14.         ...
  15. already_started:
  16.         ; Выход из программы
  17.         ...
Этот способ будет работать только если приложение запускается из одной и той же папки. Если скопировать его в другую папку, то система будет считать что это совершенно другое приложение и разрешит запуск его второй копии. Впрочем, способ с расшаренной секцией вполне имеет место быть, если требуется запретить именно запуск второй копии приложения из одной и той же папки. Для глобального запрета этот способ не подходит.

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

Защита от спама на сайтах и форумах

14.12.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проблема спама в комментариях, гостевых книгах, сообщениях на форумах в настоящее время стоит очень остро. Раньше даже простенькая капча или подтверждение регистрации на форуме по e-mail были практически непреодолимым препятствием для спамботов и автосабмиттеров. Теперь появились достаточно мощные программы для авторегистрации и рассылки спама, способные реально обходить эти защиты. Никаких названий и ссылок на сайты указывать не буду, чтобы не делать рекламы этим ублюдкам. В описании одного из спамботов его аффтар хвалится:


Эксклюзивная возможность - программа обходит ЛЮБЫЕ виды защиты от автоматической регистрации и автосабмита! Такие, как:
- Защита при помощи пиктокода (тикетов) типа "Введите число, которое видите".
- Защита при помощи активации по e-mail.
- Защита при помощи некоторых Java-скриптов.
- Возможность распознавания защиты в виде арифметических операций и логических вопросов


а на следующей же страничке расписывается в своей беспомощности:


Изредка на некоторых форумах встречается защита от автосабмита в виде java- или VB-скрипта.
Как показала практика, чтобы научить программу обходить такого рода защиту, совсем необязательно писать полнофункциональный обработчик скрипта. Главное, чтобы такой вид защиты был достаточно распространён: нецелесообразно создавать обработчик, если такая защита используется только на одном-двух форумах.


Значит наш удар будет нанесен в самое слабое место спамботов - невозможность обрабатывать формы, защищенные при помощи скриптов JavaScript. Лично я противник использования на сайтах различных навороченных капчей, которые не то что робот, а и не каждый здоровый человек разберет. После первого же неправильного ввода желание оставлять комментарий, да и вообще посещать подобный ресурс, очень резко уменьшается. Туда же идут всякие "сколько будет 2+3", "что нарисовано на картинке" и прочие лишние телодвижения, не связанные непосредственно с комментированием.

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

Расчет хеша MD5 на Ассемблере

23.11.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Функция расчета хеша MD5 на Ассемблере. Готовых решений на FASM как всегда не было, пришлось портировать из MASM. Для работы процедуры в сегменте .data надо подготовить следующие данные:
  1. ; Сегмент данных
  2. section '.data' data readable writeable  
  3. ...
  4. ; Шаблоны функции wsprintf для перевода хеша в строковый вид,
  5. ; при необходимости можно оставить только какой-нибудь один
  6. szMD5Format1 db '%.8X%.8X%.8X%.8X',0  ; Для получения заглавных букв
  7. szMD5Format2 db '%.8x%.8x%.8x%.8x',0  ; Для маленьких букв в строке хеша
  8.  
  9. stMD5Result:
  10.   stdtA      dd ?   ; Переменные для получения и хранения
  11.   stdtB      dd ?   ; результата хеширования
  12.   stdtC      dd ?
  13.   stdtD      dd ?
  14.  
  15. stMD5Hash    rb 33  ; Буфер для строки хеша в формате ASCIIZ
А вот собственно сама процедура хеширования и пример использования:

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

Проверка принадлежности IP-адреса заданному диапазону

19.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проверка вхождения IP в заданный диапазон может применяться во многих ситуациях. Например бан всей подсетки злоумышленника, принудительное ограничение скорости для зарубежного трафика, переадресация на различные разделы сайта в зависимости от провайдера пользователя и т.д. Я использую такие функции:
  1. // ------------------------------------------------------------
  2. // Проверка вхождения IP в заданный диапазон
  3. // На входе:
  4. // $ip - массив октетов проверяемого IP
  5. // $ip_start - массив октетов начала интервала
  6. // $ip_end - массив октетов конца интервала
  7. // В интервалах допускаются маски '*'
  8. // На выходе: TRUE или FALSE, входит IP или нет в диапазон
  9. // ------------------------------------------------------------
  10. function chk_ips($ip,$ip_start,$ip_end) {
  11.   for ($i=0$i<4$i++) {
  12.     if ($ip_start[$i]=='*') { $ip_start[$i]='0'; }
  13.     if ($ip_end[$i]=='*') { $ip_end[$i]='255'; }
  14.   }
  15.   $ip_num=ip2long(join('.',$ip));
  16.   if ($ip_num>=ip2long(join('.',$ip_start)) 
  17.       && $ip_num<=ip2long(join('.',$ip_end))) {
  18.     // IP входит в интервал
  19.     return true;
  20.   }
  21.   else {
  22.     // IP не входит в интервал
  23.     return false;
  24.   }
  25. }
Функция универсальная, позволяет обрабатывать одиночные IP-адреса, точно заданные диапазоны и диапазоны с маской "*" в любом октете. Дополнительных проверок на корректность диапазонов не производится.

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

Абсолютная защита

16.10.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Каждый день появлятся все больше вредоносных программ, нацеленных на кражу паролей и другой приватной информации. Противодействие брони и снаряда идет с переменным успехом, талантливые программисты антивирусных лабораторий создают все более мощные средства обнаружения заразы, в это же время не менее талантливые представители андеграунда придумывают новые способы их обхода. Нет никакой уверенности, что обновление антивирусной базы скачается раньше, чем в системе окажется троян. Однако можно противопоставить им практически абсолютную защиту. Принцип ее основан на том, что все вредоносные программы ищут своих жертв по заранее известным параметрам: прописанные в реестре пути установки, фиксированные имена и расширения файлов с паролями. Ни в одной вредоносной программе не будет использоваться сложный алгоритм эвристики или поиска по содержимому, так как это увеличит размер троянов на порядки и затруднит их незаметное распространение.

Рассмотрим этот метод защиты на примере некоторых популярных программ: интернет-пейджера Miranda IM, файлового менеджера Total Commander и почтового клиента The Bat!. Я пользуюсь именно этими программами, для других вам придется искать решения самостоятельно. В качестве имитации вредоносной программы будет использоваться утилита для восстановления забытых паролей Multi Password Recovery. Программа MPR выбрана не случайно, ее автор в прошлом занимался разработкой самого известного трояна Pinch и в Multi Password Recovery используются те же самые алгоритмы для получения паролей, что и в Pinch. Некоторые антивирусные программы определяют MPR как вирус, но по указанной ссылке гарантированно никакой заразы нет.
Запускаем MPR и видим как на ладони все логины и пароли от почтовых ящиков The Bat!, ваших красивых асечных номерков Miranda и FTP-серверов из Total Commander. Даже не сомневайтесь, это же самое "увидит" и троянская программа.

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

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2023
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.004 сек.) / Память: 4.5 Mb
Наверх