Shadowman Geschrieben 28. September 2013 Teilen Geschrieben 28. September 2013 (bearbeitet) Ich möchte unter C#.Net den Arbeitsspeicher, der einem Prozess zugeordnet ist nach einem bestimmten String durchsuchen. Der String besteht aus einer 10-stelligen Zahl, welche ich jedoch im String Format angebe. Dazu habe ich die Variable "processid" mit dem Prozess gespeichert. private bool searchInMemory() { IntPtr p = OpenProcess(0x10 | 0x20, true, this.processid); uint PTR = 0x00000000; byte[] buff = new byte[40]; String original = readConfig("original"); while (PTR != 0xFF000000) { ReadProcessMemory(p, (UIntPtr)PTR, buff, (UIntPtr)40, IntPtr.Zero); this.lblStatusValue.Text = Convert.ToString(buff); if(BitConverter.ToString(buff) == original) { return true; } PTR += 0x1; } return false; } Leider hängt sich das Programm auf und allgemein weiß ich auch nicht, ob alles so funktioniert, wie ich mir das vorstelle. Die Beschreibungen im Netz, wie sowas gehen soll sind leider auch nicht gerade verständlich geschrieben. Ich glaube es wäre ein Anfang, wenn ich den zugewiesenen Speicherbereich der Anwendung auslesen könnte und somit die suche schonmal eingrenzen könnte. Kann mir vielleicht jemand sagen was ich falsch mache und ggf. auch Verbesserungsvorschläge, bzw. Tipps geben? Gruß Shadowman Bearbeitet 28. September 2013 von Shadowman Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 30. September 2013 Teilen Geschrieben 30. September 2013 Es würde mich sehr wundern, wenn das so einfach gehen würde. Jedes Programm hat seinen eigenen, ihm zugeordneten Speicher, aus dem es nicht einfach so mir nichts dir nichts den Speicher eines anderen Programms durchsuchen kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 30. September 2013 Autor Teilen Geschrieben 30. September 2013 Danke für diese Info. Ich habe es jetzt soweit, dass ich im Speicher nach einem Wert suchen kann und diesen sogar überschreiben könnte! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 1. Oktober 2013 Teilen Geschrieben 1. Oktober 2013 Der Arbeitsspeicher eines anderen Programms oder deinen Eigenen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 1. Oktober 2013 Teilen Geschrieben 1. Oktober 2013 Der Arbeitsspeicher eines anderen Programms oder deinen Eigenen? Mit den entsprechenden Rechten geht beides eigentlich problemlos. Ohne Rechte wirds dann schon kniffliger Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Shadowman Geschrieben 1. Oktober 2013 Autor Teilen Geschrieben 1. Oktober 2013 (bearbeitet) Natürlich eines fremden Prozesses, der aber vom selben Benutzer gestartet wurde. Einzig das Durchsuchen des Arbeitsspeichers läuft sehr schleppend, da ich jeden Wert einzeln durchlaufe. Vielleicht muss ich das noch etwas optimieren, dass größere Sprünge beim durchlaufen gemacht werden. Ausserdem wäre es eine Hilfe den Anfang und das Ende des Speichers zu kennen, der dem Programm zugewiesen wurde. Leider konnte ich dazu bisher nichts finden, ausser die Größe des Speichers, der durch den Prozess belegt wird. Bearbeitet 1. Oktober 2013 von Shadowman Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lacka Geschrieben 11. Oktober 2013 Teilen Geschrieben 11. Oktober 2013 Du durchläufst nicht ernsthaft den gesamten Speicher? Beschäftige dich mal mit Cheatengine und OllyDBG bzw. Reversen generell. Es gibt massenhaft Bibilotheken die das memread/write vereinfachen (Blackmagic,Whitemagic,BotSuite vom Codebot Forum) Auf www.codebot.de findest du mehr als genug Tuts zu diesem Thema unteranderem auch nette sachen wie Captchacracking,Reversen und http automatisierung ist zwar sehr AutoIT lastig aber da findet man ein paar schöne sachen die man in der Ausbildung so gut wie garnicht behandelt ^.^ mfg Lacka Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.