Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: ДОСАДНАЯ ОШИБКА Добавлено: 17.11.02 21:44  

Автор вопроса:  Pete

Появился новый вопрос:

Предположим адрес мы уже нашли (CheatFinderoм или МТСом): 0448СB79. Адрес надо будет указывать в программе сразу после знаков &H (&H0448СB79) без пробелов - это укажит программе, что мы используем шестнадцатеричные значения.Запускаем Visual Basic. Начинайте новый проект и выберете Standart EXE.                      В окне Properties в поле Caption назначить название окна, вместо принятого по умолчанию Form1 Добавте в                        форму TexBox, Button и Timer                       Выделите только что добавленное текстовое поле-TexBox, и сотрите в окне (справо) Properties в поле Text название Text1 - текстовое поле будет нужно для записи желаемого значения. Выделете Timer и в окне Properties в поле Interval поставте 500 - это частота обнавления значения в игре (заморозка). Выделете Button и в окне Properties в поле Caption сможете поставить свое название кнопки (она нужна для записи в игру набранного нами в текстовом поле трайнера значения). Выберите в меню Project опцию Add Module, чтобы добавить новый модуль в программу. В ок
не Project перейдите в этот модуль и наберите указанные ниже строчки. Каждая новая строчка начинается со слова Declare и должна быть набрана в одну строку:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As     String)As Long 'У вас все должно быть в одну строчку
Declare Function GetWindowThreadProcessld Lib "user32"(ByVal hwnd As Long,lpdwProcessld As Long)As Long
Declare Function OpenProcess Lib "kernel32"(ByVal dwDesiredAcess As Long,ByVal blnheritHandle As Long,ByVal dwProcessld As Long)As Long
Declare Function WriteProcessMemory Lib "kernel32"(ByVal hProcess As Long,ByVal lpBaseAdress As Any,ByVal lpBuffer As Any, ByVal nSize As Long,lpNumberOfBytesWritten As Long)As Long
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long,ByVal lpBaseAddess As Any,ByVal lpBuffer As Any, ByVal nSize As Long,lpNumberOfBytesWriten As Long)As Long
Declare Function CloseHandle Lib "kernel32"(ByVal hObject As Long)As Long

Теперь перейдите в Form1, щелкнув по ней в окне Project. Теперь перейдите в Form1, щелкнув по ней в окне Project. Вы увидете исходный экран с образом вашего будущего трейнера. Щелкнув на экране правой кнопкой мыши выберете View Code. Напишем следующий код. Зеленом выделен коментарий(после знака ' ), который можно не писать.

Private Sub Command1_Click() 'Объявляем необходимый код для кнопки
Dim hwnd As long 'Удерживаем управление, переданное функцией FindWindow
Dim pid As Long 'Используется для хранения идентификатора процесса
Dim pHandle As Long 'Держит управление процессом
'Ищем окно игры, и если игра не запущена выдаем сообщение об ошибке.
hwnd = FindWindow(vbNullString,"Ваш заголовок окна игры") 'Заголовок окна игры можно узнать по надписи на кнопке свернутого окна, нажав Alt+Tab во время игры
If(hwnd=0) Then
MsgBox "Window not found"
Exit Sub
End If
'Теперь определяем идентификатор процесса.
GetWindowThreadProcessld hwnd,pid
'Используем этот идентификатор для получения управления процессом.
pHandle =OpenProcess(PROCESS_ALL_ACCESS,False,pid)
If(pHandle=0)Then
MsgBox "Couldn't get a process handlel"
Exit Sub
End If
'Записываем новое значение в память по нужному адресу
WriteProcessMemory pHandle,&H0448СB79,"Beans",5,0& 'За место &H0448СB79 вставте свой.
'Прекращаем управлять процессом.
CloseHandle hProcess
End Sub
Private Sub ReadTimer_Timer()'объявляем некоторые необходимые моменты для таймера.
Dim hwnd As Long 'Удерживает управление,переданное функцией FindWindow
Dim pid As Long 'Удерживает идентификатор процесса.
Dim pHandle As Long 'Удерживает управление процессом.
Dim str As String*20 'Параметр текстовой строки
'Вначале ищем окно игры
hwnd = FindWindow(vbNullString,"Ваш заголовок окна игры")
If(hwnd=0) Then Exit Sub
GetWindowThreadProcessld hwnd,pid 'Определяем идентификатор процесса.
'Используем идентификатор для управления процессом.
pHandle =OpenProcess(PROCESS_ALL_ACCESS,False,pid)
If(pHandle=0)Then Exit Sub
'Теперь можно прочитать из памяти
ReadProcessMemory pHandle, &H0448СB79,str,20,0&
'Покажим строку в текстовом поле
txtDisplay=str
'Прекращаем управлять процессом.
CloseHandle hProcess
End Sub

Все, трейнер почти готов. Осталось его создать запускаемый файл
В меню File выберете Make Project1.exe. Трейнер готов. Не забудьте, что сначало нужно запустить игру а затем уже трейнер.

Все это работает, только не работает вызов в модуле проекта (в отмеченом жирным выдает ошибку) помогите плиз!!!!

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Slay



Вопросов: 27
Ответов: 150
 Web-сайт: www.slaysoft.stormway.ru
 Профиль | | #1
Добавлено: 18.11.02 14:41

не знаю где ты взял этот пример... но в нем есть косяк API'шка

GetWindowThreadProcessld действительно не существует в user32!!!

на самом деле должна быть вот эта GetWindowThreadProcessId!!!

Т.е. в конце не LD а ID....

Best Regards!

Slay

Ответить

Номер ответа: 2
Автор ответа:
 Pete



Вопросов: 20
Ответов: 5
 Профиль | | #2 Добавлено: 18.11.02 16:52

Спасибо Slay!!!!!!!!!!!!!!!!

Ты мне очень помог. Взял я этот пример с www.rzd.chat.ru/vzlom/

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам