Views
3 years ago

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

++++ >> coding ++++ ++++

++++ >> coding ++++ ++++ ++++ ++++ ++++ ++++ ++++ ДМИТРИЙ ТАРАСОВ / ROOT@DTARASOV.RU / ПРИМЕРНО ТАК ВЫГЛЯДИТ РЕЗУЛЬТАТ РАБОТЫ НАШЕЙ ПРОГРАММЫ ++++ ++++ ++++ ++++ ++++ ++++ GLOBAL POSITIONING TROJAN Следим за местоположением жертв продвинутого телефона В мартовском z мы подробно рассмотрели разновидности наиболее востребованных троянов для мобильных устройств под управлением операционной системы Symbian, а также процесс создания одного из них. Функционал заключался в сливании бабла со счета пользователя. Предлагаю продолжить раскрытие темы, познакомившись с процессом создания зловредов нового поколения! ++ ++ ++++ ++++ ++++ ЧТО ПИШЕМ? В предыдущем материале я писал, что наиболее ходовые разновидности шпионского ПО для мобильников — это перехватчики sms и программы, отправляющие Premium SMS на короткие номера. Во всяком случае, подобное ПО пользуется устойчивым спросом уже пару лет. Технологии не стоят на месте, и с развитием спутниковых систем и всеобщего возбуждения на этой почве все больше и больше смартфонов оснащаются GPS-приемниками. Было бы странно, если бы создатели вредоносного ПО не воспользовались этой возможностью (с целью создания продвинутых шпионов, в реальном времени сливающих информацию о местонахождении конкретного пользователя мобильного телефона). Сразу отмечу, что описываемый здесь функционал будет работать только на устройствах под управлением S60 и оснащенных полноценными GPS-приемниками. Методы определения местоположения по базовым станциям и точкам Wi-Fi на данный момент не могут быть использованы для определения более-менее точных координат, поэтому мы их не рассматриваем. Но чем дальше, тем больше моделей оказываются оснащены полноценным приемником. Поэтому потенциальный охват поддерживаемых аппаратов внушает оптимизм троянописателям и пессимизм обычным пользователям. Итак, наша задача — разработать программу, незаметно для жертвы отправляющую данные о ее местоположении на сервер. Дальше данные обрабатываются и отображаются на карте тем или иным образом, в зависимости от выбранного картографического сервиса. Кстати, можно было бы реализовать банальную отправку координат (долготы и широты) посредством SMS, но тогда пользователю трояна пришлось бы ручками ++++ 100 XÀÊÅÐ 07 /127/ 09

coding вводить их в картографическом сервисе, чтобы определить точку на карте. Это не очень удобно. ЗАЧЕМ ЭТО ВООБЩЕ НУЖНО? Прелесть подобного шпионского ПО в том, что потенциальная целевая аудитория покрывает не только ревнивых мужей и недобросовестных деловых партнеров (как в случае с sms-шпионами), но и, к примеру, заботливых мамаш, желающих убедиться, что их дитя утром идет в школу, а не бухать «ягуар» в подъезд с пацанами. Подобный софт может Open Image { file … использоваться и в качестве трекера — например, хозяин «Бентли» может выдать шоферу корпоративную мобилу и отслеживать маршрут передвижения. Конечно, на рынке присутствуют трекинговые сервисы, но используемые там приложения скрываться не обучены и потому заметны в системе. Image border РЕАЛИЗАЦИЯ ПРОГРАММЫ С точки зрения функционала приложения, очевидны три основные составляющие: • Функционал сокрытия программы в системе; • Функционал определения координат; • Функционал отправки координат на сервер. Первый пункт мы уже освещали, мягко говоря, неоднократно. Я рекомендую ознакомиться со статьей «Зло-кодинг под Symbian» в мартовском номере z, — там этот процесс подробно и доступно описан. А мы тем временем сосредоточимся на двух оставшихся компонентах. ФУНКЦИОНАЛ ОПРЕДЕЛЕНИЯ КООРДИНАТ Собственно функционал определения координат предельно прост — важно определиться лишь с логикой их получения и отправки. Для ясности изложения я предполагаю, что ты уже знаком с основами программирования под Symbian, умеешь использовать активные объекты и можешь создать, например, простейший таймер. Что касается логики зловреда, опять же, для простоты, я предлагаю реализовать функционал периодического определения текущих координат устройства и отправки их на сервер. Для реализации периодики опроса GPSприемника используется обертка вокруг стандартного симбиановского класса CTimer. По сути, это класс, унаследованный от CTimer и содержащий в своем конструкторе все необходимые действия по инициализации и настройке таймера. Также членом оберточного класса является ссылка на объект обсервера (Observer), который ответственен за выполнение действий по событию срабатывания таймера. Полный код класса CGpsTroyTimer находится на нашем диске. Здесь мы его не будем приводить, поскольку он довольно тривиален. Кстати, создание подобных оберточных классов над стандартными системными — хорошая практика разработки как под symbian, так и под любую объектно-ориентированную систему. Поскольку основная логика работы программы у нас содержится в классе AppUi, то, тем самым, мы освобождаем его конструктор и деструктор от кровавого месива кода, отвечающего за инициализацию и настройку тайминга. Для обработки события тика таймера необходимо унаследовать AppUi от класса MTimeOutNotifier (смотри заголовочный файл Timer.h). Так мы покажем, что AppUi — это тот самый обсервер, который содержит метод, вызываемый при срабатывании тика. class CGpsTroyAppUi : public MTimeOutNotifier public: // from MTimeOutNotifier void TimerExpiredL(); //ìåòîä, âûçûâàåìûé ïðè òèêå òàéìåðà private: CGpsTroyTimer* iTimer; //ñîáñòâåííî, îáúåêò òàéìåðà … } Теперь в конструкторе CGpsTroyAppUi необходимо лишь создать таймер: iTimer = CUniTelTimer::NewL( EPriorityStandard, *this); iTimer->After(KTimeOut); – и реализовать метод TimerExpired() примерно следующим образом: Save Show Annotation User::LeaveIfError( Tools void CGpsTroyAppUi::TimerExpiredL() { GetPosition(); iTimer->After(KTimeOut); } Здесь мы выполнили метод GetPosition(), отвечающий за определение координат устройства, и заново запустили таймер, чтобы обеспечить периодичность определения местоположения. Перейдем к функционалу определения координат. Для этого нам понадобится использовать объекты классов RPositionServer, RPositioner, TPositionInfo и TPosition. Рассмотрим каждый из них чуть подробнее: • RPositionServer — основной интерфейс к Location Server. В свою очередь, Location Server — это такой процесс, который отвечает за обработку клиентских обращений приложений к базовой функциональности GPS-приемника. RPositionServer служит для установки соединения с Location Server и получения соответствующего хэндла ресурса. • RPositioner — открывает субсессию к Location Server, которая уже используется для получения координат. Кроме того, объект класса RPositioner содержит информацию о последней полученной позиции, а также — о частоте опроса GPS-приемника. • TPositionInfo — структура, содержащую полную информацию, полученную от спутников. • TPosition –структура, содержащая информацию о координатах устройства (долгота, широта, высота, скорость и т.д.) и скорости его передвижения. Более детальное описание классов можно (и нужно) посмотреть в SDK. Если обобщить, то код упомянутого метода GetPosition может выглядеть примерно так: iPositionServer.Connect()); User::LeaveIfError(iPositioner. Open(iPositionServer)); User::LeaveIfError( iPositioner.SetRequestor( CRequestor::ERequestorService, CRequestor::EFormatApplication, My Favorite KRequestor)); Macro TPositionUpdateOptions updateOptions; updateOptions.SetUpdateInterval( KUpdateInterval); updateOptions.SetUpdateTimeOut( KUpdateTimeout); User::LeaveIfError( iPositioner.SetUpdateOptions( updateOptions)); Cancel(); iPositioner.NotifyPositionUpdate( iPositionInfo,iStatus); SetActive(); Объяснять нечего — код смело можно отнести к самодокументированным. Обрати внимание, что запрос на получение координат может выполняться довольно долго, поэтому запускается на выполнение асинхронно. Это значит, что класс CGpsTroyAppUi необходимо унаследовать от CActive и реализовать метод RunL(). Именно он будет выполняться при получении координат. void CGpsTroyAppUi::RunL() { switch(iStatus.Int()) { case KErrNone: { //êîîðäèíàòû óñïåøíî ïîëó÷åíû TPosition position; iPositionInfo.GetPosition( position); TInt latitude = position.Latitude(); //ïîëó÷àåì øèðîòó TInt longitude = position.Longitude(); XÀÊÅÐ 07 /127/ 09 101

Скачать - Xakep Online
ИюНь - Xakep Online
Май - Xakep Online
Ноябрь - Xakep Online
ЛУЧШИХ ВИРУСОВ - Xakep Online
JIT SPRAY АНАЛИЗ TDSS - Xakep Online
Скачать - Xakep Online
Январь - Xakep Online
УЧИМ КАКОценить сбалансированность системы ... - Xakep Online
ЛЕГКИЙ ХАК - Xakep Online
Офисное западло - Xakep Online
ВЗЛОМ ИНТЕРНЕТ-МАГАЗИНА: - Xakep Online
КОНКУРС - Xakep Online
7 ЧУДЕС KDE - Xakep Online
Ноябрь - Xakep Online
Скачать - Xakep Online
Взлом GSM - Xakep Online
Untitled - Xakep Online
WebMoney - Xakep Online
с татьи - Xakep Online
сишься, что левые трояны, вирусы и всякая про ... - Xakep Online
cамые лучшие материалы 1-4 номеров + вся ... - Xakep Online
2009 - Xakep Online
Много новогодних конкурсов Много новогодних ... - Xakep Online
c-лето ;) - Xakep Online
содержание 10 (59) - Xakep Online
ЗАКАДРИ КАРДИНГ НАШИ ИДУТ! - Xakep Online