Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 von Shadowman

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.

  • 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 von Shadowman

  • 2 Wochen später...

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.