![]() |
Кейлогер на Vb или как правильно играть в Gta!!!
Эта статья писалась лет 8 назад, поэтому не глумитесь )
Поехали: Привет. Это моя первая статья и я решил написать её в Word’е, чтобы вы могли её распечатать и не портить себе глаза чтением с монитора (надеюсь потом она будет и в других форматах)… Теперь о мониторе :--))) У меня поломался мой супер-большой и навороченный монитор и я взял монитор у своего знакомого. Всё бы ничего, но у монитора максимальное разрешение 640*480 точек. Представьте сами как удобно в таком печатать, а уж тем более делать скриншоты, а они в рамках этой статьи запланированы, поэтому если будет не красиво – не обисуйте!!! Как заметно из названия статья она будет о том, как написать сканер клавиатуры на Visual Basic’е. Сначала мы напишем сам сканер, а потом а приведу пример как его можно будет использовать в мирных целях, т.е. без затроянивания соседа, хотя, что с ним делать – это уже не моё дело!!! Начнём!!! Многие крутые кодеры говорят, что сканер клавиатуры обязательно делать с помощью хуков. Это такие API-функции. Да, я с ними согласен – это самый крутой и навороченный вариант, который подойдёт для всех условий, но нах его использовать, если есть варианты попроще и не менее эффективны, а также подойдут для любого Трояна? Наш сканер будет использовать всего две API-функции – это GetKeyState и GetAsyncKeyState. Я попробую написать эту статью для новичка, который знает как писать простенькие программы на VB, но ещё плохо представляет, что такое функция… С этого и начну. Итак, если вы уже программировали на VB, то уже использовали какие-нить функции, например Sin() или Cos() или любый другие. Прикол функции в том, что вы её просто пишите, а всё остальное она делает за вас сама. Это тоже самое как в матиметике Sin(п/2)=1 или cos(п/2)=0. Ведь вы, наверняка не знаете почему эти функции от этих параметров равны именно этим значениям (я это узнал благодаря моему препаду в РГУ ШАБАРШИНОЙ (стерва, нах оно мне надо!!!)!!!), но вы их всё равно используете. Так же и в программировании. Вы получаете результат функции, но не знаете как она получает этот результат и оно вам на фиг не впилось!!! Чтобы было круче понятно расскажу на примере функции возведения в квадрат. Вы её напишите сами. Откройте VB и добавьте на форму кнопу(Button1) и текстовое поле(Text1). У кнопки в свойство Caption напишите “ВОЗВЕСТИ В КВАДРАТ”. Должно получиться вот так (ещё раз, прошу прошения за мой монитор!!!). http://labnauka.ru/je0n/image1.jpg Дальше система такая – вводим в текстовое поле (Text1) какое-нить число, нажимаем на кнопку и в том же текстовом поле получаем квадрат этого число. Для это мы будем использовать функцию Kvad(x as Double). То есть переменная x будет содержать то число, которое мы хотим возвести в квадрат. Вот код этой функции: Код:
Function Kvad(x As Double) As DoubleИ теперь в обработчике события кнопки пишём Text1.Text = Kvad(Text1.Text). Теперь вы вводите любое число в текстовое поле, нажимаете на кнопке и получаете квадрат этого числа (надеюсь не слишком заумно). Естественно вы должны ввести только число и ничего кроме числа, иначе программа выдаст ошибку. Это один из недостатков (или, наоборот, достоинств, кому как нравиться) VB. Приведу полный пример кода программы: Код:
Function Kvad(x As Double) As Double- Fucntion – ключевое слово, которое означает, что дальше буде идти функция, функция заканчивается ключевыми словами End Function - Kvad(x As Double) As Double – как видите этот набор буковок идёт вместе со словом Function – так вот здесь определяется имя функции и параметры, который будут ей (функции) передаваться, то есть x As Double означает, что будем передавать функции число типа Double (надеюсь, знаете, что это за тип у числа, если не знаете – читайте учебники или спрашивайте на jeon@inbox.ru). И этот самый x мы можем использовать в самой функции (то есть между словами Function и End Function). Что мы и делаем в следующей строчке. - Kvad = x * x – Заметьте у нашей функции имя Kvad и передаём мы ей x, вот и присваиваем Kvad’у x*x. То есть функция вернёт перемноженный x, как и синус п/2 вернёт еденицу. Буду надеяться, что это понятно. - End Function – ну это я уже не однократно описал, эти слова означают конец функции. Ну и теперь в обработчике нажатия кнопки мыши мы пишем Text1.Text = Kvad(Text1.Text) . Это означает, что в текстовое поле засовываем результат функции Kvad() из того же поля. Ну надеюсь вы поняли, что такое функция, без дебильных университетских определений, типа функция – это блок операторов, выполняющих определённую задачу. Ненавижу институтское образование!!! Это для лохов!!! Нормальный чуваки учатся как у них получиться, а не у долбанного старпёра-препада, который кроме названия своего предмета ни хера не знает!!! Это меня просто отчислили из универа, вот я и злой такой. Хотя я на самом деле считаю так (привет Шабаршина-сучара!!! ). Ну теперь переходим к API функциям. Api-функции – это такие же функции, но их использует операционная система и лежат они (функции) в .dll файлах. Например, есть API-функции создания окна, получение текста из заголовка окна, но они нас сейчас не волнуют. Нам нужны функции GetKeyState и GetAsyncKeyState. Прежде чем их использовать их надо объявить в своей программе. Сейчас мы сделаем будущую форму для нашего кейлогера и объявим эти функции, а потом я объясню, что значат эти функции. Создайте новый exe-проект и добавьте на форму таймер (Timer1). У таймера свойство интервал поставьте примерно в 50 (если кто не знает, то это через сколько миллисекунд будет выполняться таймер). Теперь идите в меню Добавления->МенеджерДополнений. Извините – не знаю как это выглядит в английской версии, но Добавления это второй пункт меню от конца (т.е. предпоследний). В появившемся окне выбирайте API Viewer (два раза клацните на нём) и давите OK. Теперь идите в меню Добавления->ApiViewer. Здесь будем выбирать нужный нам функции, чтобы не прописывать их ручками. Итак, в программе API Viewer выбирите File->LoadTextFile и загружайте файл WIN32API. Там есть строчка для поиска, так вот в ней и вводите GetKeyState, когда найдёте её, Declare Scope установите в Private и давите кнопку Add. Тоже самое проделайте с GetAsyncKeyState. Вот скриншот, что должно получиться: http://labnauka.ru/je0n/image2.jpg Теперь нажмите на кнопку Copy и закрывайте Api Viewer, теперь объявления этих функций у вас в буфере обмена и вы просто можете вставить их в код свой программы. Именно это и делайте, т.е. откройте окна кода VB и в самый верх вставьте эти несколько строчек. Теперь напишем функцию, которая и будет сканить клаву. Для этого вам нужно знать как работают эти две функции. Начнём с функции GetKeyState. Эта функция определяет каково состояние у клавиши: поднята, нажата или переключается. В качестве входящего параметра эта функция принимает код клавиши (которую мы и будем проверять – нажата она или нет). В документации о возвращаемых значениях написано примерно так: Возвpащаемое значение: Клавиша нажата, если стаpший бит pавен 1, и клавиша пеpеключается, если младший бит pавен 1. Вам что-нить ясно из этого? И мне было абсолютно не понятно, пока я не поэкспериментировал с этой функцией сам. И скажу вот что – функция возвращает либо 0, либо 1 если клавиша отпущена (т.е. не нажата). Или же -127, или -128 если кнопка нажата. Причём значения 0 и 1 берутся не наобум, а последовательно. Короче если я нажал кнопку, а затем отпустил её и у меня функция вернула 0, то в следующий раз она вернёт 1, а потом опять 0 и т.д. На этом мы и будем играть. Мы создадим массив в котором будем хранить возвращаемые значения функции, а затем в цикле будем проверять значения возвращаемые этой функцией, если какое-либо значение не совпало со значением в массиве, значит эта кнопка была нажата, а для стопудовой гарантии ещё и будем проверять это дело функцией GetAsyncKeyState. Эта функции принимает такое же значение как и GetKeyState, только возвращает 0 если кнопка отпущена (не нажата), или любое другое значение, если кнопка нажата. Все полученные от функции значения мы будем записывать в текстовый файл. Теперь приведу весь код программы. Код:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As IntegerКод:
If i >= 65 And i <= 90 ThenВот собственно и весь сканер, но я обещал написать про то, как это можно использовать в GTA. Хорошо приступим к этому. Вы наверняка постоянно пользуйтесь паролями при игре в GTA – Vice City. Вы постоянно вводите Aspirine, gettherefast и т.д. Но иногда при большой перестрелке заморачивает вводить тот-же aspirine по десять раз. Вот мы напишем программу, которая будет вводить эти пароли за нас. Нам только нужно будет нажать горячую клавишу для пароля и он введется сам. Вот такую программу мы сейчас и напишем. Добавьте текстовое поле в тот же проект, в котором делали сканер клавы, и его свойству Name дайте значение Hots (от слова HotKeys). Теперь нам нужно создать массив таких элементов с именем Hots. Для этого клацните правой пимпой мыши на текстовом поле и выбирите Copy. Ну и вставьте на форму этот же элемент. Вам предложат создать массив таких элементов. Соглашайтесь – т.е. жмите «да». Подставляйте ещё таких же элементов штук пять – или сколько вам надо вводить паролей для классного гейминга. Теперь добавьте новое текстовое поле на форму и дайте ей имя Pass (от password) – сюда будите вписывать пароли. И расположите её напротив первого элемента Hots. И такой же темой как вы создавали массив Hots создайте массив Pass. Причём расположите 0-й элемент Hots напротив 0-вого элемента Pass и тоже самое с первыми, вторыми и.т.д элементами. У меня получилось вот так: http://labnauka.ru/je0n/image3.jpg То есть в левый столбик вы будите записывать горячие клавиши, а в правый пароли, который будут соответствовать этим клавишам. В обработчик события KeyUp массива Hots запишите следующий код: |
Код:
Private Sub Hots_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer)Теперь в обработчике таймера сотрите, все, что мы понаписали до этого и введите следующий код: Код:
Private Sub Timer1_Timer()Если будут какие проблемы пишите на jeon@inbox.ru, постараюсь ответить. В архиве со статьёй лежат исходники программы, которую мы писали. Удачи. |
Лень читать) но может кто нить скажет причем тут гта?
|
тут пишется прога, которая перехватывает нажатия кнопок (кейлогер). И для некоторых кнопок делаются горячие клавиши для ввода паролей в гта. Нажал кнопку - у тебя все жизни... :)
|
честно говоря из вышенаписанного мало что понял... особенно пароли гта....
|
идея интересная, спасиб))
только... ты над этим думал только ради кодов в гта? =) |
ээээээ.... да я собственно вообще над этим не думал. Идея так сканить кнопки не моя. Она известна еще с незапятных времен :)
А гта.... Просто показал, реализацию горячих клавиш на полезной вещи :). Ты бы понял меня если бы свалил в кучу штук 50 машин и посмотрел на этот "ядерный взрыв". |
| Время: 12:04 |