Побачити пароль прихований за зірочками

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 і напиши там: