c++ readprocessmemory

0

Witam, mam pewien problem gdyż próbując pobrać wartość ze wskaźnika uzyskuję zero. Na początek oczywiście "otwieram" proces i uzyskuję uchwyt do niego, po chwili odczytuję funkcją readprocessmemory i zwraca wartość nie zerową - czyli jako tako rzekomo odczytał. Lecz jak już wcześniej powiedziałem w buforze otrzymuję zero. Zdziwiło mnie to i sprawdziłem getlasterrorem co jest tego przyczyną. Kod erroru to 127 (ERROR_PROC_NOT_FOUND, The specified procedure could not be found.). Nie wiem dlaczego tak się dzieje, pobierając wartość środowiskiem C-sharpa normalnie otrzymuję prawidłową wartość, a w środowisku c++ zwraca zero. Dlaczego, co zrobić, żeby normalnie zwracało? Czy jest tak, że w c++ nie mam dostępu do procesów?

Podaję przykładowy kod:

HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS,1,"Proces.exe");
if(handle != NULL)
{
     int buff;
     DWORD wskaznik = 0x55555555;
     if(ReadProcessMemory(handle,&wskaznik,&buff,4,NULL) != NULL)
    {
           cout << buff; 
    }
}
 
0

Uwazasz ze nie moga istniec 2 procesy z pliku "Proces.exe"?

0

4:42 - coś nie kontaktowałeś. Mam jeden proces odpalony i chcę z niego czytać, ale nie mogę coś tego dokonać. W c# nie było problemu.

0

Czy ktoś jest w stanie mi pomóc?

0

Ech...
http://msdn.microsoft.com/en-us/library/ms684320%28v=vs.85%29.aspx

HANDLE WINAPI OpenProcess(
  __in  DWORD dwDesiredAccess,
  __in  BOOL bInheritHandle,
  __in  DWORD dwProcessId
);

Trzeci parametr to PID procesu :/

0

Jeśli chodzi o PID procesu to nie musisz się martwić - jest prawidłowy (uzyskuję pewną funkcją po przez podanie nazwy). Powyższy kod to tylko przykład!

0

Eee... http://msdn.microsoft.com/en-us/library/ms681382%28v=vs.85%29.aspx
Pewnie skutek odszukania nieistniejącej procedury za pomocą GetProcAddress.
To na pewno w pokazanym kodzie dzieje się błąd? Bo ja wątpię.

0

Sory za kłopoty - już działa, po prostu zamiast wskaźnika trzeba rzutowanie na wskaźnik robić i zwraca poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1