Побачити пароль прихований за зірочками
Hе пий з чайника - чайником станеш.
Створення і використання DLL:
Але що поробиш. Сьогодні мені доводиться коригувати свій план і виконувати твої прохання. У цьому номері обидві статті кодинга побудовані за численними проханнями.
Для цього прикладу я написав DLL файл, який буде зараз розписаний перед твоїми очима. Нічого особливо візуального ми сьогодні робити не будемо. Тільки кодинг і нічого більше. До речі, я вже перейшов на Delphi 6, так що все вихідні тепер будуть писатися в ньому. Якщо ти до сих пір застряг в Delphi 5, то бігом на ринок за свіженьким диском.
Для початку створимо новий проект. Але не той, який використовували до цього, а проект DLL бібліотеки. Для цього вибирай меню File-> New-> Other ... (для Delphi 5 це просто File-> New). Перед тобою відкриється вікно. Знайди тут пункт DLL Wizard і двічі кликни по ньому. Delphi створить порожній проект DLL бібліотеки. Відразу натисни пімпу «Save», щоб зберегти проект. Як ім'я введи «hackpass», це ж і буде ім'ям dll файлу.
Тепер зітри весь текст, який написав Delphi і напиши:
Найголовніше в нашій DLL - це процедура RunStopHook. Їй передається один тільки параметр. Якщо він дорівнює true, то я реєструю пастку, яка буде ловити всі повідомлення Windows на себе. Для цього використовується функція SetWindowsHookEx. У цій функції чотири параметри:
- Тип пастки. Я вказав WH_GETMESSAGE, яка ловить всі повідомлення.
- Покажчик на функцію, якої будуть пересилатися повідомлення Windows.
- Покажчик на додаток.
- Ідентифікатор потоку. Якщо нуль, то використовується поточний.
В якості другого параметра я вказав ім'я функції SysMsgProc. Вона так само описана в цій dll. Давай на неї подивимося.
Пастка для повідомлень:
У першому рядку я передаю спіймана повідомлення іншим пасток встановленим в системі за допомогою CallNextHookEx. Після цього я отримую вікно згенерувати подія і перевіряю тип події. Якщо була клікнути ліва кнопка щури і утримана Пімпа Control, то прибрати зірочки.
Тепер напишемо прогу, яка буде завантажувати DLL і запускати пастку. Для цього створи новий проект (такі ми вже створювали). Перейди в исходник, і знайди розділ var. Поруч має бути написано щось типу «Form1: TForm1». Допиши сюди рядок:
У цьому рядку я пояснюю Delphi, що є така функція RunStopHook, яка знаходиться в написаній мною бібліотеці hackpass.dll і її індекс = 1. Ось за цим індексом Delphi і викликатиме функцію. Можна звичайно ж і по імені, але це буде трохи повільніше.
Тепер створи обробник події для форми OnShow і напиши там: