Архив за Октябрь 2008

Мысли об Adware

Октябрь 25, 2008

Кодеки.
Тема загажена хуже некуда. Раньше как было – какая-то компания создавала реальный кодек, который делал что-то полезное (сжимал видео с хорошим качеством, например); к этому кодеку (к бесплатной версии) лепилось adware. Вобщем все выглядело вполне пристойно – полезная программа, EULA (пусть и на 30 страниц, но тем не менее оттуда можно было понять, ЧТО ты скачиваешь, если хватит терпения прочесть до конца). Что же сейчас происходит – народ кинулся в эту тему кодеков, но как таковых кодеков уже никто не делает. Делают псевдо-кодеки: 1). программы , которые делают редиректы через файл «hosts», 2). BHO, которые тоже делают редиректы, 3). программы,  которые перехватывают API и опять таки делают редиректы. К тому же нет никакой EULA. Неудивительно, что антивирусы стали палить такие программы – легальности НОЛЬ.

КПД Adware.
В случае с BHO – программа получает полный контроль над содержимым загруженной страницы и осуществляет подмену «родным» для ОС путем, но чем навороченне BHO, тем менее переносимо это BHO на другие версии и даже подверсии Internet Explorer (появляются сообщения об ошибках, браузер вылетает…), а про другие браузеры вообще говорить не приходится – а ведь их доля растет. Способ улучшить КПД – немаленький штат программистов и тестировщиков.
Программа перехвата API – максимально возможный доступ к содержимому страницы. Однако, приходится учитывать массу ньюансов (для разработки эфективной подмены содержимого прийдется попотеть), к тому же переносимость на другие версии ОС затруднена; совместимость с Антивирусами, Файрволами и другим секьюрным ПО тоже плохая. Способ улучшить КПД – немаленький штат программистов и тестировщиков.
Обычная программа, которая показывает pop-up, pop-under – великолепная совместимость со всей линейкой родной ОС (Win32). Но есть большой минус – задалбывает пользователя. Елинственный способ улучшить КПД – найти золотую середину между количеством поп-апов и прибылью от них.

Способ распространения adware.
Почти все, что создается в RU/UA – это 3-5-ти летний отголосок того, что уже произошло в US/EU. Там давно уже поняли, что способ распространения должен быть максимально легальный.  Тема с кодеками (настоящими) US/EU уже отошла на второй план. На первый план вышел премиум контент – музыка, видео, скринсейверы… К тому же EULA присутствует при каждой загрузке, а это позволяет защищать себя от психически неустойчивых пользователей и антивирусников в суде.  Конечно распространение премиум-контента не дает такого же конверта как распространение псевдо-кодеков (различие – в разы, а то и в десятки раз), но оно позволяет не труситься перед мыслью о том, что завтра регистратор может вырубить домен из-за пары-тройки абуз, а послезавтра прийдет повестка в суд – а защиту построить не на чем! Так что надо легализоваться. Вот Агава, например, распространяет свое adware легально уже несколько лет – и все в порядке.

Структура Adware.
Ни в коем случае Adware система не должна полагаться только на один домен. Лучше всего сделать так:
1.    Выпускается несколько версий adware. Каждая версия привязывается к одному домену (будем называть его «домен с конфигом»).
2.    На каждый «домен с конфигом» загружается конфигурационный файл в котором указывается ссылка на «главный администрирующий домен».
3.    Каждое Adware сначала заходит на свой родной «домен с конфигом», читает конфигурационный файл, переходит на «главный администрирующий домен».
Схема простая, но действенная, можно сказать – «почти непотопляемая».  Если вырубается один из «доменов с конфигом», то остаются еще несколько – потеря минимальна. Если вырубается «главный администрирующий домен», то просто перезаливаем новые конфиги на «домены с конфигами» – весь трафик будет переведен на новый «главный администрирующий домен». Чем больше «доменов с конфигами» тем более устойчива система к внешним воздействиям. Главное не покупать все домены у одного регистратора.

Получение прибыли от Adware.
Варианты здесь могут быть разные: использовать фиды одного из фид-провайдеров, программно кликать по баннерам,… Но в любом из этих вариантов ты лишь посредник. А чем больше посредников в цепочке тем меньше твоя прибыль. К тому же шейвят многие. Вот и напрашивается решение – нужно создавать свое «рекламное агентство». Тогда все деньги будут идти непосредственно через тебя.

Заключение.
В любом интернет-бизнесе есть две вещи без которых любой самый супер-пупер проект скорее всего провалиться  – это СТАРТОВЫЙ КАПИТАЛ и КОМАНДА. Как жаль, что их поиски занимают так много времени.

Mutex (Мьютекс) – запрет на запуск более чем одной копии программы

Октябрь 9, 2008

Решился написать серию микро-статей о программировании под Win32. Статья про Мьютексы будет первая.

Частенько сталкивался с вопросом новичков в программировании – «Как сделать так , чтобы запускалась только одна копия программы?». Все очень просто – как один из способов, нужно использовать Мьютексы (англ. Mutex – объект взаимного исключения). Вообще-то Мьютексы используются для синхронизации потоков, но они очень хорошо подходят и для много другого (когда человек пишет троянца или кейлогер, то нужно быть стопроцентно уверенным, что запустится только одна копия программы, иначе могут быть конфликты).

Так как основным языком программирования для меня является C++, то и пример того, как надо использовать Мьютексы я буду реализовывать на этом языке. Пример очень простой. Все объяснения находятся внутри кода. Алгоритм работы: создаем мьютекс с определенным именем; если мьютекс создался (не вернул код ошибки), то это значит, что запущена только одна копия программы и поэтому работа программы продолжается; если мьютекс не был создан (вернул код ошибки), то это значит, что уже запущена одна копия программы и работу второй копии программы нужно завершить (выход из программы через “..return 0;”).

// Mutex.cpp : Defines the entry point for the console application.
//

#include «stdafx.h»
#include <iostream>
#include <tchar.h>
#include <windows.h>

bool Alone()
{
HANDLE hMutex = CreateMutex(0,TRUE,»UniqueMutex!»);

if(GetLastError() == ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
return false;
}
return true;
}

int _tmain(int argc, _TCHAR* argv[])
{
if(!Alone())
return 0;
else
{
for(int i=0;i<10;i++)
{
std::cout << «I am alone :) » << std::endl;

Sleep(2000);
}
}
return 0;
}

Приват24 – вечная «БЕТА» ??

Октябрь 6, 2008

Приватбанк  несколько лет тому назад запустил многообещающий сервис онлайн-банкинга Приват24.  Совсем недавно я решил зарегистрироваться в этом проекте, полагая, что нескольких лет будет вполне достаточно для того, чтобы любой интернет- сервис стал полноценным, так сказать – «вырос из пеленок»… я ошибся.

Один из способов регистрации в Приват24 – покупка логина и пароля к Приват24 в банкомате при помощи любой пластиковой карты , эмитированной Приватом.  Во-первых, инструкции по покупке логина и пароля наполовину не соответствовали тому, что появлялось на экране банкомата, к тому же часть информации отображалась на русском, а часть не английском (я то его знаю неплохо, но ведь есть люди, которые не знают английского вообще). Во-вторых, после получения логина и пароля регистрация на сайте Приватбанка была запутанной – оказывается нельзя использовать Красную Кнопку (нафиг тогда они ее туда запостили). В-третьих, при попытке использовать купленные за 1 грн. логин и пароль (срок действия – 30 дней) система Привата запросила номер мобильного телефона, на который будет выслан короткоживущий динамический пароль; я ввел номер моего мобильника; система прислала СМС-ку с  динамическим паролем; пароль был тут же введен, но Приват24 сообщил о том, что «время сессии истекло» (как оно могло истечь?!  Я же ввел пароль сразу после его получения!!!).  Я попытался повторить всю процедуру сначала, и результат не заставил себя ждать – мой логин и пароль, купленный в банкомате, были заблокированы! И я так и не смог воспользоваться Приват24, потерял деньги (мелочь, но все равно обидно), потерял время. Попытка решить проблему через тех-поддержку результатов не принесла. Похоже, что Приват24 как был в состоянии БЕТА-версии так в нем и остался :-\ Обидно, задумка была не плохой, но реализация хромает на обе ноги :-( Теперь мне боязно пользоваться другими Приватовскими сервисами, а вдруг и там проявится какой-нибудь баг, причем в самый неподходящий момент?

Прийдется обратить свой взор на другие банки … УкрСоцБанк или VAB например :) Может быть там я смогу найти нормально работающие сервисы?

Странность PHP

Октябрь 2, 2008

Сижу, работаю с фото галереей на своем сайте и вдруг замечаю, что перестали подгружаться фотографии. Откатил все изменения назад, но глюк не исчез – фотографии упорно не хотели подгружаться. Прошелся по ПХП скрипту, который осуществлял выдачу фоток – все в порядке, ошибок нет. Я попытался локализовать проблемную часть внезапно переставшего работать кода и понял, что проблема не в коде а в первой переменной  «b» из УРЛа (пример: “http://mysite.com/script.php?b=123&q=456”). Переменная состоит всего из одного символа («Краткость – сестра таланта»). Я решил поменять название этой переменной с «b» на «bg» – хм, просто добавил символ, во всех участках кода, где эта переменная появлялась. И все вновь заработало! Если честно, то я так и не понял, почему первая одно символьная переменная из УРЛа, до этого работавшая нормально, вдруг перестала работать, и почему банальное изменение названия переменной устранило глюк :-\