Вопрос: Как вытащить текст из игры (ReadProcessMemory) | Добавлено: 15.11.10 23:20 |
Автор вопроса: ![]() |
Всем привет. Нигде не смог найти исходников, кто может помогите пожалуйста, если по зубам =)
МОДУЛЬ: 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 45 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 15.11.10 23:24 |
Вот еще скрин арт маней
http://img146.imageshack.us/img146/4794/artc.jpg |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 16.11.10 02:20 |
[офтоп] Никогда не понимал, как можно из одного процесса писать в память другого.. Кстати помнится DetectiveStory была шустрее артманей |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 16.11.10 08:38 |
StrConv? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 45 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 16.11.10 12:43 |
Winand, кто говрил что я буду писать в память? Я читаю.
Sharp, StrConv ведь преобразует Юникода в ANSI-строку!? |
Номер ответа: 5 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 16.11.10 19:33 |
похоже на грабинг паролей... |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 16.11.10 22:16 |
В том числе. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 45 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 17.11.10 01:42 |
AWP, хм, ну похоже, и что?)
Есть идеи у кого? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #8 | Добавлено: 17.11.10 09:55 |
есть, юзай дотнет. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #9 | Добавлено: 17.11.10 10:16 |
Сам же сказал - юникод. Это означает уйму 0& символов, воспринимаемых как конец строки.
Считывай лучше в массив, так не ошибешься, а потом уже можешь преобразовывать во что угодно, хоть в ANSI, хоть в Unicode. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 45 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 17.11.10 22:04 |
Помогите, не справлюсь ) |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 17.11.10 22:41 |
типа таво наверное
Dim arr(19) As String 'массив на 20 байтов ReadProcessMemory pHandle, Adr2, arr(0), 20, 0& дальше смотри побайтно что прочиталось. Потом можно уже и преобразовать с помощью strconv |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 45 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 17.11.10 23:20 |
Ничего не выводит \ |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #13 | Добавлено: 18.11.10 09:53 |
мб, нет прав? мб, нужно AdjustTokenPrivelegis или что-нибдуь в том духе? ) |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 18.11.10 12:05 |
оу. Dim arr(19) As Byte
Ну вот. легко прочитал 13 байтную строку из проги на vb6.
|
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 9 Ответов: 45 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 18.11.10 15:43 |
Через ThunderRT6FormDC не находит окно |
|