Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 16.11.10 02:20
[офтоп] Никогда не понимал, как можно из одного процесса писать в память другого.. Кстати помнится DetectiveStory была шустрее артманей

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: xawp.narod.ru
 Профиль | | #5
Добавлено: 16.11.10 19:33
похоже на грабинг паролей...

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: winandfx.narod.ru
 Профиль | | #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-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 18.11.10 12:05
оу. Dim arr(19) As Byte

Ну вот. легко прочитал 13 байтную строку из проги на vb6.
  1. Option Explicit
  2. Private Const PROCESS_VM_READ = &H10
  3. Private Const PROCESS_VM_WRITE = &H20
  4. Private Const PROCESS_VM_OPERATION = &H8
  5. Private Const PROCESS_VM = PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE
  6.  
  7. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  8. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
  9. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  10. Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByRef lpBuffer As Byte, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
  11. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  12.  
  13. Private Sub Form_Load()
  14.     Dim hW As Long, PId As Long, hP As Long, buf(25) As Byte
  15.     hW = FindWindow("ThunderRT6FormDC", "Form1")
  16.     If hW Then
  17.         Call GetWindowThreadProcessId(hW, PId)
  18.         If PId Then
  19.             hP = OpenProcess(PROCESS_VM, 0&, PId)
  20.             If hP Then
  21.                 If ReadProcessMemory(hP, &H4015E8, buf(0), 26, 0&) Then _
  22.                     MsgBox buf
  23.                 Call CloseHandle(hP)
  24.             End If
  25.         End If
  26.     End If
  27. End Sub

Ответить

Номер ответа: 15
Автор ответа:
 maxis



Вопросов: 9
Ответов: 45
 Web-сайт: нет)
 Профиль | | #15
Добавлено: 18.11.10 15:43
  1. hW = FindWindow("ThunderRT6FormDC", "Form1")

Через ThunderRT6FormDC не находит окно

Ответить

Страница: 1 | 2 |

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



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