Toon posts:

[VB 2005] ReadProcessMemory

Pagina: 1
Acties:
  • 414 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hey, ik probeer memory uit te lezen met VB.NET maar het wil me maar niet lukken, normaal in VB 6.0 was het veel makkenlijker. Kan iemand mij helpen met het verhelpen van mijn probleem?

code:
1
2
3
4
5
6
7
8
9
10
11
Public Function ReadLong(ByVal Address As Long) As Long

        Dim valbuffer As Integer 'Byte

        pHandle = OpenProcess(&H10, False, ProcessID.ToInt32())
        ReadProcessMemory(pHandle, Address, valbuffer, 4, 0&)
        ReadLong = valbuffer

        CloseHandle(pHandle)

End Function


De error die ik krijg is:
System.AccessViolationException was unhandled
Message="Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Misschien dat je eerst even lees-rechten moet zetten op het stuk geheugen dat je wil lezen, middels VirtualProtectEx (of het VB-equivalent ervan).

[ Voor 13% gewijzigd door serkoon op 08-05-2007 22:40 . Reden: Naam van functie gefixt :P ]


Verwijderd

Topicstarter
serkoon schreef op dinsdag 08 mei 2007 @ 22:31:
Misschien dat je eerst even lees-rechten moet zetten op het stuk geheugen dat je wil lezen, middels VirtualMemoryProtect.
Ik zal even op google gaan zoeken hoe ik deze functie kan gebruiken, bedankt!

Edit: Op google vind ik alleen Chinese sites... :'(

[ Voor 22% gewijzigd door Verwijderd op 08-05-2007 22:35 ]


  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Functie heet dus VirtualProtectEx, zonder 'Memory'.

Verwijderd

Topicstarter
Ik vind het wel vreemd, want in VB 6.0 kon ik hem gewoon lezen, of is dat normaal?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Je krijgt deze melding waarschijnlijk door het feit dat je van uit managed code unmanaged geheugen aan wil spreken.

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
MTWZZ schreef op woensdag 09 mei 2007 @ 08:35:
Je krijgt deze melding waarschijnlijk door het feit dat je van uit managed code unmanaged geheugen aan wil spreken.
Hmm, ik ben nog niet echt zo goed in die memory reading enzo, en dit is is du allemaal nieuw voor me.. Met VB 6 ging het iig makkenlijker ik denk dat ik er zo niet uit ga komen. Misschien handiger om met VB 6 door te gaan dan :p

  • masterpoi
  • Registratie: Oktober 2004
  • Laatst online: 01-12 17:47
Wat wil je eigenlijk bereiken? Misschien zijn er betere manieren om te bereiken wat je wil dan gewoon rechstreeks in de heap van een process zitten te kijken?

Verwijderd

Topicstarter
Ik wil die adressen uitlezen uit de memory, ik moet er nog veel meer uitlezen.. Het gaat om een spelletje, health en andere informatie uitlezen.

Verwijderd

check deze post, ik heb een soortgelijk probleem gehad paar maanden geleden en toen opgelost:
\[VB.NET 2005] Pointer naar waarde
op codeproject.com had ik ook een goed artikel gevonden betreffende dit onderwerp, maar weet niet meer welke zoekterm ik gebruikt had :?

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 09 mei 2007 @ 16:19:
check deze post, ik heb een soortgelijk probleem gehad paar maanden geleden en toen opgelost:
\[VB.NET 2005] Pointer naar waarde
op codeproject.com had ik ook een goed artikel gevonden betreffende dit onderwerp, maar weet niet meer welke zoekterm ik gebruikt had :?
Als ik dat met die ByVal probeer weg te halen zet VB dat er automatisch weer neer...

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Zou je de Declare van ReadProcessMemory eens kunnen laten zien?

Verwijderd

Topicstarter
bigbeng schreef op donderdag 10 mei 2007 @ 14:36:
Zou je de Declare van ReadProcessMemory eens kunnen laten zien?
Public Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Integer, ByVal lpBuffer As String, ByVal nSize As Integer, ByVal lpNumberOfBytesWritten As Integer) As Long

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Moet zijn:
Public Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Integer, ByRef lpBuffer As String, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long

Dit was ook de kern van de opmerking van alexundertaker.

Verwijderd

bigbeng schreef op vrijdag 11 mei 2007 @ 15:42:
Moet zijn:
Public Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Integer, ByRef lpBuffer As String, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long

Dit was ook de kern van de opmerking van alexundertaker.
ja precies, dat was bij mij de doorslaggevende oplossing
Pagina: 1