Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

  Вопрос: ReadProcessMemory() Добавлено: 17.03.07 18:12  

Автор вопроса:  Gogic
Мне нужно вытащить данные из одного приложения. Я пытаюсь осуществить это с помощью функции ReadProcessMemory().


Dim WindowID As Long
Dim ThreadID As Long
Dim ProcessID As Long
Dim MemoryID As Long
Dim WBytes As Long
Dim MyBuffer


Private Sub Command1_Click()
'Получаю манипулятор окна по заголовку
WindowID = FindWindow(vbNullString, "ArbAlarm")
Debug.Print WindowID
'Получаю манипулятор текущего процесса и нити
ThreadID = GetWindowThreadProcessId(WindowID, ProcessID)
Debug.Print ProcessID

'Теперь мне нужно воспользоваться функцией ReadProcessMemory() чтобы получить копию памяти процесса
MemoryID = ReadProcessMemory(ProcessID, 1, MyBuffer, 500, WBytes)
Debug.Print MemoryID, MyBuffer, WBytes
'MemoryID=0, значит я что-то не так делаю.
'Второй параметр - это адрес в памяти процесса.
'Вопрос: что там задавать?

End Sub

Ответить

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

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



Вопросов: 0
Ответов: 454
 Профиль | | #1 Добавлено: 17.03.07 18:48
 базовый адрес не верно задан
 для EXE = &H400000
 для DLL = &H10000000

Ответить

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



Вопросов: 0
Ответов: 454
 Профиль | | #2 Добавлено: 17.03.07 19:04
OpenProcess должен предшествовать ReadProcessMemory

Ответить

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



Вопросов: 0
Ответов: 454
 Профиль | | #3 Добавлено: 17.03.07 19:23

Option Explicit
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const PROCESS_VM_READ = &H10

Dim MyBuffer() As Byte

Private Sub Command1_Click()
Dim WindowID As Long
Dim ThreadID As Long
Dim ProcessID As Long
Dim MemoryID As Long
Dim WBytes As Long

Dim basar As Long
Dim hndl As Long
Dim x As Integer
Dim sz As Integer
    sz = 500
    WindowID = FindWindow(vbNullString, "Form1";)
    ThreadID = GetWindowThreadProcessId(WindowID, ProcessID)
    basar = &H400000
    ReDim MyBuffer(sz - 1)
    hndl = OpenProcess(PROCESS_VM_READ, True, ProcessID)
    MemoryID = ReadProcessMemory(hndl, ByVal basar, ByVal VarPtr(MyBuffer(0)), sz, WBytes)
    CloseHandle (hndl)
    
    For x = 0 To 499
        Debug.Print MyBuffer(x)
    Next
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #4 Добавлено: 18.03.07 02:52
вот только зачем всё это???

Ответить

Номер ответа: 5
Автор ответа:
 W[4Fh]LF



Вопросов: 0
Ответов: 187
 Web-сайт: hunger.ru
 Профиль | | #5
Добавлено: 18.03.07 15:27
для EXE = &H400000
 для DLL = &H10000000


ImageBase для PE файлов не есть константа.

Ответить

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



Вопросов: 38
Ответов: 121
 Профиль | | #6 Добавлено: 18.03.07 18:32
Я хотел данные вытащить из программы. Она подключается клиентом к одному серверу. Пакеты я снифал, там белиберда, похоже они шифрованные. В памяти тоже лажа, как я вчера увидел (спасибо за посты, кстати). Сейчас попробую еще что-нибудь вытащить на уровне окон, если есть какая инфа по этой теме, подскажите тоже плиз. Прога вообще какая-то странная, ни к dll, ни к ocx не обращается, т.е. вся скомпиленная вместе с контролами похоже.

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 18.03.07 19:17
Ты хоть бы рассказал какие именно данные, может есть другие способы их вытащить кроме как сканирование памяти процесса

Ответить

Номер ответа: 8
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #8 Добавлено: 18.03.07 20:25
CODE]какие именно данные[/CODE]
букмейкерские записи, как я понял.

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 18.03.07 22:26
х.з. я ещё телепатию не досконально освоил...

Ответить

Номер ответа: 10
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #10 Добавлено: 18.03.07 22:29
ArbAlarm

Ответить

Номер ответа: 11
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #11 Добавлено: 18.03.07 23:32
ох, ну прям как я мог незнать :) благо яндекс выручил, и то одна ссылка только
http://www.yandex.ru/yandsearch?rpt=rad&text=ArbAlarm
)))

Ответить

Номер ответа: 12
Автор ответа:
 Gogic



Вопросов: 38
Ответов: 121
 Профиль | | #12 Добавлено: 18.03.07 23:36
Прога представляет собой клиент, который цепляется к серверу. На сервер собирает букмекерские

вилки паук. Сервак betspider.net:8989. Прога при включении посылает серваку логин с паролем,

после чего периодически получает данные. Мне эти данные нужны для дальнейшей обработки. Может

как-нибудь еще можно вытащить? Я даже незнаю, что там за типы идут. Из окна проги можно

вытащить, как вы думаете?

Ответить

Номер ответа: 13
Автор ответа:
 Gogic



Вопросов: 38
Ответов: 121
 Профиль | | #13 Добавлено: 18.03.07 23:37
Прога буржуйская и анлимный доступ к серваку стоит 2.5k енотов.

Ответить

Номер ответа: 14
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #14 Добавлено: 19.03.07 00:31
Как прога отображает полученные данные? Где точнее? ListView etc?...

Ответить

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



Вопросов: 38
Ответов: 121
 Профиль | | #15 Добавлено: 19.03.07 01:29
Ага, там 3 взаимосвязанных Listview, каждый Listview во Frame.

Ответить

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

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



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