Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: подскажите по ReadProcessMemory в VB.net Добавлено: 22.01.09 13:11  

Автор вопроса:  dimon
VB.net express 2005
Нужно читать память одного приложения, в артмани нашел адрес, но при запуске ReadProcessMemory получаю
 __out LPVOID lpBuffer - nothing
Return Value - 0

ошибок типа protected memory нету. процесс тоже нужный.

У кого нить есть работающий кусок кода с ReadProcessMemory?
Запостируйте плиз, может я где то не то пишу...


BOOL WINAPI ReadProcessMemory(
  __in HANDLE hProcess,
  __in LPCVOID lpBaseAddress,
  __out LPVOID lpBuffer,
  __in SIZE_T nSize,
  __out SIZE_T *lpNumberOfBytesRead
)


Или оторву от сердца nn-ое кол-во ВМЗ :) за код программки на VB.net которая:
раз в 30сек. читает всю память, например процесса notpad.exe
и пишет ее содержимое в .тхт файл

Ответить

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

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



Вопросов: 6
Ответов: 23
 Профиль | | #1 Добавлено: 22.01.09 13:26
Забыл- icq 353-232-625

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 22.01.09 23:15
  1. <DllImport("kernel32.dll", SetLastError:=True)> _
  2.     Public Shared Function ReadProcessMemory( _
  3.     ByVal hProcess As IntPtr, _
  4.     ByVal lpBaseAddress As IntPtr, _
  5.     <Out()> ByVal lpBuffer() As Byte, _
  6.     ByVal dwSize As Integer, _
  7.     ByRef lpNumberOfBytesRead As Integer) As Boolean
  8.     End Function
  9. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  10.         Dim proc As Process = Process.GetProcessesByName("notepad")(0)
  11.         Dim dump() As Byte
  12.         Dim ptrBytesReaded As IntPtr
  13.         ReDim dump(proc.MainModule.ModuleMemorySize)
  14.         If ReadProcessMemory(proc.Handle, proc.MainModule.BaseAddress, dump, proc.MainModule.ModuleMemorySize, ptrBytesReaded) = 0 Then
  15.             Dim lastError As Integer
  16.             lastError = Marshal.GetHRForLastWin32Error
  17.             MsgBox(Marshal.GetExceptionForHR(lastError).ToString)
  18.         Else
  19.             IO.File.WriteAllBytes("dump.dat", dump)
  20.         End If
  21.     End Sub

Ответить

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



Вопросов: 6
Ответов: 23
 Профиль | | #3 Добавлено: 23.01.09 12:03
Спасибо!!
Работает.
попробую обнаглеть ))- а если читать не всю память, а один адрес?

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #4
Добавлено: 23.01.09 14:06
попробую тоже. нада указать не всю память, а один адрес))

Ответить

Номер ответа: 5
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #5
Добавлено: 24.01.09 03:56
ну укажите в нужных параметрах адрес ячейки и длину считываемых данных. читать же вроде умеете, смотрите описание апи.

Ответить

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



Вопросов: 6
Ответов: 23
 Профиль | | #6 Добавлено: 25.01.09 19:32
Спасибо. да вроде читать умею, но как до АПИ функций доходит.... как об стенку головой.
Вроде все как описано делаю- результатов нет)
Спасибо, буду дальше читать- ковырять))
Главное уже подсказали.

Ответить

Страница: 1 |

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



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