Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ренеймер. Используем хук.

-

Школа Читера

- Основы основ - начинаем писать статьи для начинающих с целью создания полноценного раздела

Ответ
 
Опции темы
Старый 21.11.2010, 17:45   #1
 Старший сержант
Аватар для Amba
 
Amba излучает ауруAmba излучает ауруAmba излучает ауруAmba излучает ауруAmba излучает ауруAmba излучает ауру
Регистрация: 15.07.2009
Сообщений: 176
Популярность: 672
Сказал(а) спасибо: 145
Поблагодарили 318 раз(а) в 99 сообщениях
Отправить сообщение для Amba с помощью ICQ Отправить сообщение для Amba с помощью Skype™
 
По умолчанию Ренеймер. Используем хук.

Привет всем, увидел статейку про ренеймер на Delphi и решил написать свою.

В данном примере мы будем учиться писать универсальный ренеймер, он будет работать по наведению курсора на окно, ну или другой объект. Но одним наведением мы не отделаемся, нам предстоит назначить клавишу при нажатии, на которую программа будет запоминать хендл объекта, он нам понадобится для дальнейшей работы. Ну, для начала выясним что же такое хендл...

Хендл - это тип, который может содержать ссылку на объект. Используя хендлы можно заявить более одной ссылки на объект. Не все типы объектов позволяют использовать хендлы. Например не могут иметь хендлы примитивные типы данных (логический, целый, дробный, и т.д.). Возможность использования хендла зарегистрированными типами зависит от параметров регистрации.

_______________________________


Движемся дальше, теперь по пунктам для лучшего понимания происходящего:


1) Открываем Delphi, ну как же без этого

2) Я думаю проект уже создан, форма есть, кидаем на форму 7 компонентов Edit( два столбика из 3-ёх эдитов каждый + 1 эдит под всеми, смотри рисунок ниже). Они живут на вкладке Standart.
Кидаем на форму одну кнопку (Buton1) она обитает рядом с Edit'ом (вкладка Standart).
Ну и осталось кинуть таймер он на вкладке System, сразу выставим в его свойстве Interval значение 100.

Позже станет понятно для чего, всё мы закончили подготовку интерфейса:


[Ссылки могут видеть только зарегистрированные пользователи. ]

P.S

Первый Эдит - Edit1;
Последний эдит во втором столбике - Edit6.


_______________________________


2) Приступаем к коду, тут всё предельно просто...

для начала впишем процедуру для ловли хендла и прочего, пишем после ключевого слова


Код:
public
код

Код:
procedure ShowHwndAndClassName(CrPos: TPoint);
Нажимаем сочетание клавиш

Ctrl+Shift+C

delphi генерирует шаблон для процедуры, конечный её вид будет таким:
Код:
procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
  H: THandle;[/B]
  aName: array [0..255] of Char;
  rName: array [0..255] of Char;
begin
  h := WindowFromPoint(CrPos); 	// получить дескриптор
  Edit1.Text := IntToStr(hWnd);
  GetClassName(H, aName, 255);  	// получить имя класса
  GetWindowText(H,rName,255); 	 // получить название
  Edit2.Text:= string(aName) ;		//Присваиваем эдиту значение массива aName (строковое)	
  Edit3.Text:= string(rName) ;		//Присваиваем эдиту значение массива rName (строковое)	
end;
Поясню что мы сделали:

В разделе описания переменных (var) мы объявили одну переменную и два массива, в массивах будет храниться клас и имя объекта.


Функция GetClassName извлекает данные об имени класса, которому принадлежит указанное окно.

Функция GetWindowText копирует текст заголовка определяемого окна (если окно имеет его) в буфер. Если заданное окно является органом управления, копируется его текст. Однако функция GetWindowText не может извлекать текст органа управления в другом приложении.




Ну вот с процедурой покончено, переходим к таймеру, на нём вся работа.

3) На таймере пишем:


Код:
 procedure TForm1.Timer1Timer(Sender: TObject);
var
  Pos: TPoint;  //переменная хранит значения X и Y, в данном случае координаты
begin
  if Boolean(GetCursorPos(Pos)) then //узнаём координаты курсора
   ShowHwndAndClassName(Pos);  // Ловим курсор и то что под ним нашей процедурой
   if getasynckeystate($51)<>0 // Если нажата клавиша "Q", тогда запоминаем хендл
    then begin
   Edit5.text:= Edit1.Text; // присваиваем эдитам второго столбца
   Edit6.text:= Edit2.Text; // значение эдитов
   Edit7.text:= Edit3.Text; // первого столбца
   end;
end;

То есть таймер следит за тем что под курсором и как только нажимаем «Q» сразу всё запоминаем. Замечу что в строке

Код:
if getasynckeystate($51)<>0
$51 - это кодировка клавиши “Q”

4) Теперь будем писать код у нашей единственной кнопочки:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if  Edit5.Text='' then // если в эдите нет текст тогда
exit;                  // прекращаем делать что либо
     SendMessage(StrToInt(Edit5.Text), WM_SETTEXT, 0, LParam(PChar(Edit4.Text)));
{отправляем собственный текст}
end;

Функция SendMessage отправляет заданное сообщение окну или окнам.


Ну вот и всё, осталось откомпилировать и проверить, таким вот способом мы написали ренеймер =)

Полностью готовый проект лежит здесь.

Списибо за внимание!
Вложения
Тип файла: rar пример ренеймера.rar (6.1 Кб, 16 просмотров)
________________

Последний раз редактировалось Amba; 22.11.2010 в 14:31.
  Ответить с цитированием
Пользователь сказал cпасибо:
reca (16.12.2010)
Старый 22.11.2010, 13:36   #2
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Ренеймер. Используем хук.

Цитата:
Сообщение от AmbaПосмотреть сообщение
Ctrl+Shoft+C




Цитата:
Сообщение от AmbaПосмотреть сообщение
SendMessage(StrToInt(Edit5.Text), WM_SETTEXT, 0, LParam(PChar(Edit4.Text)));



А юзать SetWindowText(handle, name); не модно?

Цитата:
Сообщение от AmbaПосмотреть сообщение
Ренеймер. Используем хук.

А где собственно хук?
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.

Последний раз редактировалось Kitsune; 22.11.2010 в 13:38.
  Ответить с цитированием
Старый 22.11.2010, 14:29   #3
 Старший сержант
Аватар для Amba
 
Amba излучает ауруAmba излучает ауруAmba излучает ауруAmba излучает ауруAmba излучает ауруAmba излучает ауру
Регистрация: 15.07.2009
Сообщений: 176
Популярность: 672
Сказал(а) спасибо: 145
Поблагодарили 318 раз(а) в 99 сообщениях
Отправить сообщение для Amba с помощью ICQ Отправить сообщение для Amba с помощью Skype™
 
По умолчанию Re: Ренеймер. Используем хук.

Ctrl+Shoft+C - очепятка xD

Цитата:
Сообщение от TBX1nПосмотреть сообщение
А юзать SetWindowText(handle, name); не модно?

Модно, а результат точно такой.
________________
  Ответить с цитированием
Старый 23.11.2010, 01:53   #4
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: Ренеймер. Используем хук.

Amba, вот именно. Но зачем изобретать велосипед?
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.
  Ответить с цитированием
Старый 05.12.2010, 00:15   #5
 Разведчик
Аватар для hnover
 
hnover никому не известный тип
Регистрация: 21.11.2010
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ренеймер. Используем хук.

Что бы на нем ездить?
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Используем шелл на всю возможность Helko Баги и читы Lineage 2 18 23.10.2017 22:27
[Статья] Пишем Ренеймер/Renamer окон [Delphi 7] Хакерок:) Школа Читера 7 09.01.2011 18:33
Ренеймер(пв\делфи) jason830 Вопросы и ответы, обсуждения 6 30.09.2010 18:25

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 14:01.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net