Entwickler-Ecke
Off Topic - mmf name ermitteln
Boldar - Mo 08.04.13 14:46
Titel: mmf name ermitteln
Hi,
Ich bin nicht sicher, ob das wirklich hier rein passt, aber seis drum.
Ich habe eine Software vorliegen (ohne Quellcode), welche eine MMF zur IPC benutzt, auf welche ich auch zugreifen möchte.
Ich sehe im Disassemblat die entsprechenden aufrufe von memcpy, kann jedoch den Namen der mmf bei der initialisierung nicht finden. Gibt es da weitere möglichkeiten? Ich habe schon versucht, getmappedfilename zu benutzen, das klappt jedoch (warum auch immer) nicht.
lg Boldar
jaenicke - Mo 08.04.13 15:21
Hast du einmal die Liste im Process Explorer durchgeschaut? Vielleicht siehst du die gesuchte MMF ja vom Namen her schon.
Boldar - Mo 08.04.13 15:28
Das ist ja das merkwürdige: Process Explorer zeigt die mmf nicht an.
Der Grund dafür, warum ich denke, dass es sich um eine mmf handeln muss, ist, dass in der export-Funktion der dll( also wo die daten verschickt werden) lediglich memcpy aufgerufen wird. Leider habe ich nicht herausgefunden, wo der Destination-poiner herkommt. Oder gibt es noch andere Wege, speicher zwischen 2 Prozessen zu sharen?
Mir scheint, ich komme nicht drum herum, die dll doch ausführlich zu untersuchen.
Martok - Mo 08.04.13 16:30
Die MMF könnte auch ohne Namen erstellt worden sein, das Handle müsste dann dupliziert und mit den passenden Rechten versehen "auf anderen Wegen" in den zweiten Prozess kommen. Im Disassemblat würdest du da mindestens DuplicateHandle suchen.
Weitere Varianten: du schreibst DLL, also im gleichen Prozess. Damit auch im gleichen Adressspace, die könnte also problemlos auch direkt auf irgendwo VirtualAlloc'ten Speicher zugreifen.
Boldar hat folgendes geschrieben : |
Ich habe schon versucht, getmappedfilename zu benutzen, das klappt jedoch (warum auch immer) nicht. |
Wie immer: Rückgabewert, GetLastError?
Boldar - Mo 08.04.13 16:58
Nein, die dll wird quasi von den "Clientprozessen" benutzt, also schon verschiedener Adressraum. Ich möchte halt quasi nur direkt in die Kommunikation eingreifen und nicht die dll benutzen, da die einige Fehler/Nachteile hat.
Nach DuplicateHandle schaue ich gleich mal, das ist womöglich ein guter tipp.
Getmappedfilename gab nur 0 zurück, nach getLasterror schaue ich dann auch gleich mal. (Bin grad an einem anderem Rechner).
Boldar - Di 09.04.13 16:43
Dazu nochmal eine kleine ASM-Verständnisfrage:
Folgende Befehle am Anfang einer ASM-Funktion kenne ich:
Quelltext
1: 2:
| push ebp mov ebp, esp |
Damit Sichert man sich ja quasi den "Baseframe", und kann danach lokale Variablen auf dem Stack ablegen, die man dann mit epb-xx abruft.
Nun liegen doch bei epb-xxx lokale Variablen, und darüber auf dem Stack die Parameter der Funktion.
Woher kommenn nun Potentiell Ausdrücke wie epb-10364h (also mit sehr hohen Werten)?? Was liegt denn da, bzw. wie wird da von ausserhalb der Funktion drauf zugegriffen, denn daher wird eine Adresse geladen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!