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!
|