Winlock на delphi

Репутація: 110/2

Winlock на Delphi. Докладний розбір простого Winlock'а.

1) Що важливо розуміти.
__________
Сьогодні я розгляну те, що можна схопити в мережі найчастіше - найпримітивніший Winlock, написаний на коліні. Саме такий, з самими нехитрими способами роботи ми сьогодні і розглянемо. В подальшому буде розгляд Winlock'а з hook'амі (терпіти їх не можу, але показати треба) і Winlock'а на чистому API (що дасть дуже маленький розмір).
__________

Важливо розуміти, що в першу чергу така програма обрубує всі ходи відступу. А які є ходи назад? Ну як варіант диспетчер задач. Він не зголосився? Тоді зв'язки клавіш, наприклад Alt + F4. Не допомогло? Паніка-паніка! Потрібно перезавантажити комп'ютер, тоді все пройде! І вимагач і пристріт і понос! Перезавантажили, нічого не пройшло. У користувача вже зовсім паніка, windows заново він не вміє, і в розпачі відправляє смс на номер, що вимагач написав. Якщо winlock порядна, то він розблокує користувача, попередить що б більше так не робив і само-віддалиться. Якщо ж ні, то нічого не зміниться і користувачеві доведеться перевстановити систему.
Вся робота програми ґрунтується на обрубування цих самих ходів відступу, тобто спробах зупинити програму. Так що далі розглянемо як це зробити.

Що ще? Ще важливо зробити так, що б при перезавантаженні програма залишалася запущеної. Пропишемо що-небудь в реєстр, що б в момент відображення робочого столу відобразилася і програма (а далі вона вже активує свої злі можливості). Які ми підступні.


В поле буде вводитися пароль, якщо він не вірний - то нічого не розблокується. Якщо вірний - то все ok'ey. На кнопках 1-9 і 0 код простий:

У кнопки "Очистити" код:

Тепер розглянемо як же блокувати вікна. Почнемо з диспетчера задач.
Він викликається 2-мя методами: 1) Поєднання клавіш CTR + ALT + DELETE; 2) Поєднання клавіш CTR + SHIFT + ESC.
Ці поєднання можна виключити 4-ма а може і більше методами. HOOK, через Handle вікна, SystemParametersInfo і реєстр. На жаль останній. 3-ий, працював тільки в Windows XP. У 7-ій версії він уже не працює. HOOK я буду розглядати в наступній статті, так що сьогодні розглянемо відключення через Handle вікна:
У uses дописуємо модуль SHELLAPI і Registry.
Пишемо в подія форми OnCreate:

Як працює. Функція FindWindow має 2 параметри: 1) Клас вікна; 2) Заголовок вікна. Оскільки клас вікна ми не знаємо, ставимо замість нього NIL, а ось заголовок видно - "Диспетчер завдань Windows". Сама функція отримує дескриптор вікна (його положення в оперативній пам'яті) (іноді називають HANDLE, звідси і назва типу - Thandle). І ось цей дескриптор ми присвоюємо змінної відповідного типу. Далі функція ShowWindow грубо кажучи ставить пріоритет на виклик (коли вікно буде викликано, воно буде викликано з даними пріоритетом). Пріоритети знає гугл. Звідти і беремо, що SW_HIDE - прихований пріоритет. SW_SHOWNORMAL - нормальний пріоритет.
Тепер заблокуємо комбінацію клавіш Alt + F4:
У події форми Close потрібно написати:

Дурний спосіб, але він працює і залізно блокує цю зв'язку клавіш.


Ну і далі залишилося лише виконати невелику перевірку на пароль і написати все зворотні процедури на кнопку розблокувати:

Якщо ж в Delphi відмінно пишеш, варто було б написати драйвер захисту локера, або ж TService. Додавши в локер красиві стилі, кнопки (AlphaSkin, BSkin, DynamicSkinForm).
Робити все блокування, перехоплення на основі WinAPI / HOOK, і тоді буде просто шик.
_____________________
Люблю викладати свої ідеї

Навіщо зайвий сміття у вигляді красивих витребеньок і скінів. Це тільки приваб вага Локерен. Хоча вже його вага буде за межами дозволеного.
Якість софта визначається по функціоналу, а не по дизайну. Той хто його впіймає найменше буде хвилювати, який гарний дизайн у його локера, по краще ніж у того, що зловив сусід.

__________________
-= Only XakFor.Net = -
ICQ 373-99-18

Схожі статті