| Autor |
Nachricht |
dudeldu
Unregistrierter
|
dudeldu Unregistrierter
23:11:42 24.05.2012 Titel: |
Speicher von anderem Programm lesen |
Zitieren |
Hallo! Ich möchte zu Analysezwecken den Speicher eines Programms auslesen.
Ich verwende dafür die Funktion
| C++: | | HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); | |
bekomme auch den gewünschten Prozess raus.
Danach versuche ich den Heap zu lesen mit
| C++: | | hHeapSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST, entry.th32ProcessID); | |
Und hier ist das Problem. Ich bekomme ein als rückgabe INVALID_HANDLE_VALUE.
Und mit GetLastError() hab ich rausbekommen das es sich um ERROR_ACCESS_DENIED handelt.
Frage: Wie kann ich trotzdem (lese-)Zugriff auf den Speicher bekommen?
Bzw. woran liegt es das ich keinen zugriff habe? Bei firefox z.B. bekomm ich kein ERROR_ACCESS_DENIED. |
|
|
|
 |
dudeldu
Unregistrierter
|
dudeldu Unregistrierter
12:07:37 25.05.2012 Titel: |
|
Zitieren |
Habs selber gelöst, bin aber nicht zufrieden mit der Lösung.
Man muss Visual Studio mit Adminrechten starten.
Muss aber auch anders gehen oder?
Keiner 'ne Idee? |
|
|
|
 |
Andreas XXL
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.01.2004
Beiträge: 1011
|
Andreas XXL Mitglied
12:31:35 25.05.2012 Titel: |
|
Zitieren |
Versuch mal, ob es auch mit dem Release außerhalb der Visual Studio Umgebung mit Admin Rechten geht. Dort wird es noch komplizierter es hinzubekommen. |
|
|
|
 |
Martin Richter
Moderator
Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 14218
|
Martin Richter Moderator
13:47:24 25.05.2012 Titel: |
|
Zitieren |
Und warum attached Du Dichnicht einfach mit dem Debugger? |
_________________ Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
|
|
 |
dudeldu
Unregistrierter
|
dudeldu Unregistrierter
20:12:08 25.05.2012 Titel: |
|
Zitieren |
| Martin Richter schrieb: | | Und warum attached Du Dichnicht einfach mit dem Debugger? |
Noch nie gemacht. Interessiert mich aber sehr.
Wie würde ich den z.B. für den Windows Taschenrechner(calc.exe) den Speicher auslesen? Nehmen wir an ich hätte 12345679 eingetippt, bekomm ich das irgendwie damit raus?
Habe jetzt Visual Studio gestartet dann Debuggen->Attach to Process, dann die calc.exe ausgewählt.
Danach läd er kurz und ich sehe nix im VS.
Drücke ich Pause sehe ich assembler code, und nu?
Sorry habe noch nie damit gearbeitet. |
|
|
|
 |
Bassmaster
Mitglied
Benutzerprofil
Anmeldungsdatum: 19.09.2007
Beiträge: 627
|
Bassmaster Mitglied
11:04:05 30.05.2012 Titel: |
|
Zitieren |
| dudeldu schrieb: |
Wie würde ich den z.B. für den Windows Taschenrechner(calc.exe) den Speicher auslesen? Nehmen wir an ich hätte 12345679 eingetippt, bekomm ich das irgendwie damit raus?
|
Ich vermute mal du willst wissen an welcher Stelle im Speicher 12345679 steht, da solltest du dich mal mit Reverse Code Engineering beschäftigen.
Schau dir mal das hier an:
http://tuts4you.com/download.php?view.122
Da gibts eine ganze Tutorial Serie. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|