daemon777 Einsteiger
 
  
  Registriert seit: 03.2006 Beiträge:6
   | Speicherzugriff Tutorial - ReadProcessMemory schlägt fehl Ich habe noch ein Problem bei dem Beispiel mit dem Memorytool ( Bereich "hacking").
 
 Und zwar ist diese Bedingung nicht positiv:
 
  Code:
  
 unsigned adress = 0x00409040;
 
 ....
 
 
 if(ReadProcessMemory(hproc,(LPCVOID)adress,&buffer,
                     sizeof(buffer),&rw))
 {
         cout << "Lesen erfolgreich\n";
         cout << buffer << endl;
 }
  
 
 Das gleiche übrigens auch bei der Bedingung zum Schreiben.
 
 
 Komisch noch beim Schreiben meiner Frage findet er plötzlich auch das Fenster nicht mehr. Mein Code:
 
  Code:
  
 char opfer[6]="opfer";
     wchar_t wopfer[6];
     _USE(cout.getloc(), ctype<wchar_t> ).widen(opfer, opfer+6, wopfer); 
 
     hWnd = FindWindow(0,wopfer);
 
     Sleep(1000);
     
     if(!hWnd)
     {
         cout << "Das Fenster wurde nicht gefunden !" << endl;
         Sleep(1000);
         return 0;
     }
  
 
 Das Verstehe ich daher nicht, da ich nichts geändert habe seit es funktioniert hat. Und ja: das andere Fenster ist offen und müsste daher auch gefunden werden.
 
 Ich glaube ich sollte mir wirklich mal eine andere Entwicklungsumgebung zulegen. Das ist so ja nicht zum Aushalten :( Dieser Beitrag wurde zuletzt am 20.03.2006 16:52 von Simon editiert. 
 
 
  | 
Simon Online-tutorials.net Administrator
 
  
  Registriert seit: 01.1970 Wohnort:Dornbirn Beiträge:1181
   | Speicher Zugriff, Virtuelle Adresse Du benutzt hier widechars. Wenn das das machst solltest du auch FindWindowW benutzen.
 
 W am Ende von Windows Funktionen bedeutet das sie widechars benutzen, A Ascii.
 
 Was für einen typ hat buffer?
 
 PS: unsigned adress = 0x00409040;  hast du schon an die Adresse von deinem Programm angepasst oder? Wenn nicht solltest du das Tutorial nochmal lesen. Dieser Beitrag wurde zuletzt am 20.03.2006 21:50 von Simon editiert.                          -------------------
                         http://www.online-tutorials.net/wiki/funktionsname
 
 Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials
 
  
 
 
  | 
daemon777 Einsteiger
 
  
  Registriert seit: 03.2006 Beiträge:6
   |  Ja habe ich.
 
 Die KOnvertieren von char zu wchar_t funktioniert nicht richtig. Da kommt immer eine Hexadezimalzahl raus.
 
 Wie gesagt mit der VC++ 6.0 Autoren Version geht es aber mit der VC++ Express Edition geht es nicht.
 
 Fällt dir vielleicht noch eine Lösung ein ?
 
 
  | 
Simon Online-tutorials.net Administrator
 
  
  Registriert seit: 01.1970 Wohnort:Dornbirn Beiträge:1181
   | Speicherzugriff, widechar Wie gesagt, ich würde entweder FindWindowW (wchar) oder FindWindowA nehmen (char).
 
 Gib mal den konvertierten String mit std::wcout << wopfer << std::endl; aus, und schau ob er passt, ansonsten habe ich hier noch eine Funktion, die das konvertiert:
 
  Code:
  
     std::wstring to_wstring(const std::string& s,const std::locale& loc) 
     { 
         std::vector<wchar_t> ret(s.size(),0); 
         const char* pCC = s.c_str(); 
         mbstate_t state; 
         wchar_t* pW = &*ret.end(); 
         const char* pC = pCC+s.size(); 
         std::use_facet<std::codecvt<wchar_t,char,mbstate_t> >(loc).in(state,pCC,pCC+s.size(),pC,&*ret.begin(),&*ret.end(),pW); 
  
         return std::wstring(&*ret.begin(),pW); 
     }
  
 
 Das Ding kannst du plattformunabhängig benutzen.                         -------------------                         http://www.online-tutorials.net/wiki/funktionsname
 
 Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials
 
  Firefox - besser durch das Web! 
 
 
  |