Убиваем «дзвіночок» від Google Chrome в треї

    hackers
З недавніх пір в Google Chrome з'явилася нова фіча з назвою оповіщення. Час від часу, за незрозумілих обставин в системному треї з'являється дзвіночок, і все. Тобто якщо не налаштувати його вручну він там просто займає місце не виконуючи ніяких функцій. А щоб він там з'явився досить наприклад розгорнути на повний екран відео в ютубі, прибрати його потім не можна, тільки закрити хром. Пошук способів як прибрати його правильно успіхом не увінчався. Способи ніби і працювали але потім дзвіночок знову з'являвся в треї, і дратував. В один вечір він сильно дістав, і довелося взятися за важку артилерію.
 
 

IDA, Hiew, обрізання дзвіночка

Перший справою дивимося де лежить сам Google Crhome, я подивився по ярлику лежить він, як з'ясувалося, у% USERPROFILE% \ AppData \ Local \ Google \ Chrome \ Application і судячи з усього лежить дві версії минула і поточна. Зараз нам потрібен каталог 35.0.1916.114 в ньому лежить багато dll'ок, але мені чомусь відразу сподобалася chrome.dll Копіюємо її куди небудь в зручне місце відкриваємо в IDA, і починаємо чекати, 28 мегабайт це досить переконливо. Поки ми чекаємо, трохи подумаємо що шукати далі. Загалом варіантів не багато, а точніше один (для Win) API функція Shell_NotifyIcon з shell32.dll її і будемо шукати. Отже, поки ми думали, IDA вже проаналізувала файл. Переходимо на вкладку Import і шукаємо там потрібну нам функцію
 
Нам пощастило функція імпортується. І для її виклику буде використаний адресу 0x371d7c0 в цілому IDA нам вже більше не потрібна. Отже у нас є адреса за яким імпортована потрібна нам функція. Тут одразу виникає ідея замінити всі виклики цієї функції на NOP однак варто згадати як відбувається виклик WinApi функцій . Ага ось і заморочка стек ми повинні очистити самі, ну да ладно подивимося що можна зробити. Відкриваємо dll в Hiew, перемикаємо його в режим Asm (Два рази натиснути Enter) і починаємо пошук виклику функції шляхом пошуку відомого вже нам адреси у файлі тут є не забуваємо при цьому що в x86 адреси числа пишуться в зворотному порядку, від молодшого байта до старшого тобто шукати треба не 371d7c0 а c0d77103 . Що загалом і знаходимо
Отже ми маємо FF 15 C0 D7 71 03 6 байт для виклику функції, нам їх потрібно замінити очищенням стека і про всяк будемо чесні з хромом обнуленням регістра EAX. Останнє треба щоб хром зрозумів що йому чомусь не вдалося додати іконку в трей. Функція Shell_NotifyIcon приймає два параметри, значить зі стека треба буде прибрати теж два параметра. Я вирішив використати для цього два виклики pop eax, c подальшим обнуленням EAX через XOR EAX, EAX після чого залишаються ще два байти, які забив NOP.
 
У підсумку отримуємо таке потрібно поміняти послідовність байт FF15C0D77103 на 585833C09090 що робиться просто пошуком і заміною. Таких викликів виявилося сім. Після чого копіюємо обработанности нами dll'ку на законне місце (попередньо закривши всі Google Chrome). Запускаємо Chrome намагаємося домогтися появи дзвіночка розворотом YouTuba на повний екран, але нічого не виходить, дзвіночка більше немає, підсумок перемога.
PS. Мені самому не дуже подобається такий спосіб, я сподіваюся що Google введе штатну можливість відключення даного функціоналу, ну а поки і так зійде.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.