Логотип игрового форума RF-Cheats.ru    
Новости онлайн игр Правила форума Чёрный рынок Реклама и привилегии Гаранты Арбитраж

Регистрация Бан-лист Сообщество ПОПУЛЯРНОЕ
Вернуться   RF-Cheats.ru - форум читеров и ботоводов > > >

Взлом и программирование

: Аспекты программирования при реализации различных методик взлома.
Читы и обход фроста для RF Online без хайдаБоты и читы для Perfect World бесплатно без хайдаМоды и читы для World of Tanks (WoT) бесплатно без хайдаМоды и читы для Armored Warfare бесплатно без хайдаБоты и читы для DOTA 2 бесплатно без хайдаБоты и читы для Black Desert Online бесплатно без хайдаЧиты на ArcheAge бесплатно без хайдаБоты и читы для The Elder Scrolls Online (TESO) бесплатно без хайдаЧиты для Warface бесплатно без хайдаВзлом ВКонтакте и ОдноклассниковСписок разделов со всеми играмиЧиты для онлайн игр




Ответ
 
Опции темы
Старый 03.11.2010, 17:18   #1
JEY
Старая гвардия
Аватар для JEY
OFFLINE
Регистрация: 12.05.2008
Сообщений: 466
Благодарностей:
1,123 всего
Мнения: + 4250
Репутация: 3544
Отправить сообщение для JEY с помощью ICQ Отправить сообщение для JEY с помощью Skype™

Пишим трейнер для игр на VB


Доброе время суток дамы и господа!
В данной статье я решил описать процесс создания трейнера на языке Visual Basic. Что побудило меня на это? Да просто достало однообразие трейнеров, созданных в Detective Story, Magic Trainer Creator и т.п., хотелось чего то своего, чтобы все нужное находилось на своих местах. Немного погуляв по сети, я нашел пример на chemax.ru, но он оказался устаревшим и нерабочим. Попыхтев пару часов над кодом, я все таки нашел и исправил ошибки, и получился таки вполне работоспособный вариант :14: Приступим к написанию..
Откроем Visual Basic и создадим стандартный проект. Кликнем два раз по нашей форме и объявим нужные нам функции:
PHP код:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As StringByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As LonglpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAcess As LongByVal bInheritHandle As LongByVal dwProcessId As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As LongByVal lpBaseAdress As AnyByVal lpBuffer As AnyByVal nSize As LonglpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As LongByVal lpBaseAddess As AnyByVal lpBuffer As AnyByVal nSize As LonglpNumberOfBytesWriten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 
Описание каждой уже есть в статье на www.chemax.ru, но вкратце о каждой:
FindWindow - возвращает дескриптор окна по заголовку или классу окна (в нашем случае по заголовку)
GetWindowThreadProcessId - возращает идентификатор процесса, с помощью которого создано окно
OpenProcess - получает доступ к процессу
WriteProcessMemory - записывает данные в память процесса
ReadProcessMemory - читает данные из памяти процесса
CloseHandle - закрывает доступ к процессу. Ну это как я понимаю
Также объявим константу:
PHP код:
Private Const Process_All_Access As Long = &H1F0FFF 
Она пригодится нам для получения полного доступа к процессу.
Т.к. данные записываются в память процесса в шестнадцатиричном виде, то добавим еще пару-тройку полезных функций в код:
PHP код:
Private Function GetByte(Txt As Stringnum As Integer) As Byte
GetByte 
Asc(Mid$(Txtnum1))
End Function

Private Function 
Hex2Str(ByVal data As String) As String
Dim i 
As Integer
If Len(data) \ Int((Len(data) - 1) \ 2Then data data
For 1 To Len(dataStep 2
Hex2Str 
Chr(Val("&H" Mid$(datai2))) & Hex2Str
Next i
End 
Function

Private Function 
Str2Hex(ByVal Txt As String) As String
Dim i 
As Integer
Dim buff 
As String
For 1 To Len(Txt)
buff Hex(GetByte(Txti))
If 
Len(buff) = 1 Then buff "0" buff
Str2Hex 
buff Str2Hex
Next i
End 
Function 
GetByte - извлекает нужный нам байт из строки
Hex2Str - переводит шестнадцатеричный код в текст
Str2Hex - наоборот текст в шестнадцатитеричный код
Это то, чего так не доставало в проекте трейнера на chemax'е, и в память записывалось не знамо что. Далее я добавил еще две фунции для удобства, чтобы не писать код каждый раз, а просто вызывать их с нужными параметрами. Первая:
PHP код:
Private Function WriteMemory(WindowName As StringAdress As LongValue As Long)
Dim hWnd As Longpid As LongpHandle As Long ' объявляем переменные
hWnd = FindWindow(vbNullString, WindowName) '
ищем наше окно и передаем ее hWnd переменной
If (hWnd 0Then 'если окно не найдено выходим из функции, предварительно выдав ошибку
MsgBox "Окно не найдено! Вероятно, программа не запущена", 32
Exit Function
End If
GetWindowThreadProcessId hWnd, pid '
ищем идентификатор процесса
pHandle 
OpenProcess(Process_All_AccessFalsepid'открываем полный доступ к памяти
WriteProcessMemory pHandle, Adress, Hex2Str(Hex(Value)), 4, 0& '
запись в память
CloseHandle hProcess 
'закрываем доступ
End Function 
Функция записывает данные (Value) в заданный адрес (Adress), и ищет процесс по заголовку окна (WindowName). Следует учесть, что адрес в памяти ищется в шестнадцатеричном виде, и поэтому при вызове перед адресом нужно дописать &H. Выглядеть это будет вот так:
PHP код:
WriteMemory "Crusader", &HDF5AE01000000 
Вторая - функция чтения данных из памяти:
PHP код:
Private Function ReadMemory(WindowName As StringAdress As Long)
Dim hWnd As Longpid As LongpHandle As Longstr As String ' объявляем переменные
hWnd = FindWindow(vbNullString, WindowName) '
ищем наше окно и передаем ее hWnd переменной
If (hWnd 0Then Exit Function 'если окно не найдено выходим из функции
GetWindowThreadProcessId hWnd, pid '
ищем идентификатор процесса
pHandle 
OpenProcess(Process_All_AccessFalsepid'открываем полный доступ к памяти
ReadProcessMemory pHandle, Adress, str, 4, 0& '
читаем память и записываем в переменную
ReadMemory 
Val("&H" Str2Hex(str)) 'преобразуем данные к нормальному виду
If Val(ReadMemory) < 0 Then ReadMemory = 65536 + Val(ReadMemory) '
если число меньше нуля
CloseHandle hProcess 
'закрываем доступ
End Function 
Функция считывает данные из адреса Adress процесса с заголовком окна WindowName. Выглядеть это будет вот так:
PHP код:
ReadMemory("Crusader", &HDF5AE0
Ну теперь осталось только добавить текстовые поля и пару кнопок и вот он - готовый трейнер!

© grabberz.com

ICQ: 751228
Skype: Jeye51
E-Mail: Jey-n70@ya.ru


Научу кидать людей на деньги. Оплата: 50% до обучения, 50% после.
 
Ответить с цитированием
Сказали спасибо:
Euphoria (31.12.2010), Недоступно (03.11.2010)


Ответ



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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макросс-бот для всех игр жанра. bismark9000 Программы и боты для PW 3 27.09.2010 21:38

Мир танков | Проект "Армата" | ArcheAge | Black Desert | РФ Онлайн | Айон | Майнкрафт | Браузерные игры
Элдер скролс | Р2 Онлайн | Реквием Онлайн | ПУБГ | Роял Квест | ГТА Санадреас | Контра | Дота 2
Мир кораблей | Лост Арк | Arma2 DayZ mod | The War Z | Карос: Начало | Tera Online
Читы для всех Онлайн-игр
Загрузка...