Страница: 1 | 2 |
Вопрос: Как вытащить текст из игры (ReadProcessMemory)
Добавлено: 15.11.10 23:20
Автор вопроса: maxis | Web-сайт:
Всем привет. Нигде не смог найти исходников, кто может помогите пожалуйста, если по зубам =)
МОДУЛЬ:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAcess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId 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
Private Sub Command4_Click()
Adr = "&H" & Text4.Text
' Объявляем некоторые необходимые моменты для таймера.
Const PROCESS_ALL_ACCESS = &H1F0FFF
Dim Adr2 As Long
Dim hwnd As Long ' удерживает управление, переданное функцией FindWindow.
Dim pid As Long ' удерживает идентификатор процесса.
Dim pHandle As Long ' удерживает управление процессом.
Dim str As String * 20 ' параметр текстовой строки.
'Вначале ищем окно игры.
hwnd = FindWindow(vbNullString, Text3.Text)
If (hwnd = 0) Then Exit Sub
' Теперь можно определить идентификатор процесса.
GetWindowThreadProcessId hwnd, pid
' Используем идентификатор для управления процессом.
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If (pHandle = 0) Then Exit Sub
' Теперь можно прочитать из памяти...
Adr2 = Adr
ReadProcessMemory pHandle, Adr2, str, 20, 0&
' ... и показать строку в текстовом поле трейнера.
Text2.Text = Asc(str)
Text5.Text = str
' Прекращаем управлять процессом.
CloseHandle hProcess
End Sub
Получается только первый знак от слова.
В арт маней написано Unicode 12 байт. Слово qwery.
Вообще если кто подскажет как искать строку из всех адресов будет вообще супер )
Ответы
Всего ответов: 30
Номер ответа: 1
Автор ответа:
maxis
Вопросов: 9
Ответов: 45
Web-сайт:
Профиль | | #1
Добавлено: 15.11.10 23:24
Вот еще скрин арт маней
http://img146.imageshack.us/img146/4794/artc.jpg
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 16.11.10 02:20
[офтоп] Никогда не понимал, как можно из одного процесса писать в память другого.. Кстати помнится DetectiveStory была шустрее артманей
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 16.11.10 08:38
StrConv?
Номер ответа: 4
Автор ответа:
maxis
Вопросов: 9
Ответов: 45
Web-сайт:
Профиль | | #4
Добавлено: 16.11.10 12:43
Winand, кто говрил что я буду писать в память? Я читаю.
Sharp, StrConv ведь преобразует Юникода в ANSI-строку!?
Номер ответа: 5
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #5
Добавлено: 16.11.10 19:33
похоже на грабинг паролей...
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 16.11.10 22:16
В том числе.
Номер ответа: 7
Автор ответа:
maxis
Вопросов: 9
Ответов: 45
Web-сайт:
Профиль | | #7
Добавлено: 17.11.10 01:42
AWP, хм, ну похоже, и что?)
Есть идеи у кого?
Номер ответа: 8
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #8
Добавлено: 17.11.10 09:55
есть, юзай дотнет.
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 17.11.10 10:16
Сам же сказал - юникод. Это означает уйму 0& символов, воспринимаемых как конец строки.
Считывай лучше в массив, так не ошибешься, а потом уже можешь преобразовывать во что угодно, хоть в ANSI, хоть в Unicode.
Номер ответа: 10
Автор ответа:
maxis
Вопросов: 9
Ответов: 45
Web-сайт:
Профиль | | #10
Добавлено: 17.11.10 22:04
Помогите, не справлюсь )
Номер ответа: 11
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #11
Добавлено: 17.11.10 22:41
типа таво наверное
Dim arr(19) As String 'массив на 20 байтов
ReadProcessMemory pHandle, Adr2, arr(0), 20, 0&
дальше смотри побайтно что прочиталось. Потом можно уже и преобразовать с помощью strconv
Номер ответа: 12
Автор ответа:
maxis
Вопросов: 9
Ответов: 45
Web-сайт:
Профиль | | #12
Добавлено: 17.11.10 23:20
Ничего не выводит \
Номер ответа: 13
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #13
Добавлено: 18.11.10 09:53
мб, нет прав? мб, нужно AdjustTokenPrivelegis или что-нибдуь в том духе? )
Номер ответа: 14
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #14
Добавлено: 18.11.10 12:05
оу. Dim arr(19) As Byte
Ну вот. легко прочитал 13 байтную строку из проги на vb6.
Номер ответа: 15
Автор ответа:
maxis
Вопросов: 9
Ответов: 45
Web-сайт:
Профиль | | #15
Добавлено: 18.11.10 15:43
Через ThunderRT6FormDC не находит окно