Veröffentlicht 28. September 201311 j 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 201311 j von Shadowman
30. September 201311 j 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.
30. September 201311 j Autor 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!
1. Oktober 201311 j Der Arbeitsspeicher eines anderen Programms oder deinen Eigenen? Mit den entsprechenden Rechten geht beides eigentlich problemlos. Ohne Rechte wirds dann schon kniffliger
1. Oktober 201311 j Autor 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 201311 j von Shadowman
11. Oktober 201311 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.