![]() |
Adresse in Speicher, welche Datei
Moin,
ich hab mal mit dem Hxd rumgespielt und im Explorer-Prozess nach dem Startbutton-Text gesucht ;) innerhalb vom explorer-Prozess ist der Text (bei mir) an Adresse $53ADC0. Kurz zuvor taucht der String Shell_TrayWnd auf. diesen hab ich versucht in der explorer.exe zu finden, erfolglos (Start taucht ja dutzende male auf). $1000 der Explorer.exe ist an $1001C00 im Prozess-Speicher. Mich wundert auch, warum ich den Text im Hxd nicht ändern kann, andere Stellen des Prozesses aber schon... laut ProzessExporer ist an dieser Speicher-Adresse keine Dll/Handle geladen. Hinweise auf einen Packer/Crypter hab ich nicht gefunden. Klar, der Startbutton-Text ist nur eine Spielerei, aber das Wissen hilft evtl. bei Fehlern (AVs), wo man teilweise nur die Speicheradresse hat. Wäre cool, wenn jemand mehr über die Prozess-peicher-Aufteilung weis :) Gruß Frank |
Re: Adresse in Speicher, welche Datei
Schonmal daran gedacht, dass der Start-Button vielleicht ein Bild ist? ;)
Wenn du nur Speicheradressen von AVs hast, wirst du selbst mit Wissen über Prozessspeicher damit nicht viel anfangen können, da diese bei jedem Programmdurchlauf imho unterschiedlich sein können, je nachdem wo das Programm halt grad im Speicher landet. Sinnvoll ist das nur, wenn du "Lesen/Schreiben von Adresse 00000000" hast, denn das deutet darauf hin, dass ein Objekt nicht initialisiert wurde. Wenn du genauere Fehlerreportings willst, nutze entweder MadExcept, JEDI Exception Dialog, etc. |
Re: Adresse in Speicher, welche Datei
der Startbutton ist ein normaler button mit normalem Text, denn man kann den Text per Findwindow...SetWindowText setzen ;)
naja, wenn sich windows nicht gerade mit nem Bluescreen verabschiedet, kann man den prozes noch z.b. mit dem ProzessExplorer anschauen und im Falle einer DLL herausfinden, welche Dll das ist. halt nur solange der Prozess noch aktiv ist (die Meldung nicht bestätigen...). So hab ich mal herausgefunden, welches Plugin mir Miranda crasht ;) Das mit dem nil-Pointer ist klar :) Gruß Frank |
Re: Adresse in Speicher, welche Datei
Naja, mein Startbutton ist zB rund und hat 'n Bild drin (XP mit Vista-Inspirat), da ist kein Text mit "Start". :mrgreen:
Aber für Endanwender bringt das nix, wenn da ne AV nur mit 'ner Adresse kommt. Das kannst du bei dir nicht mehr reproduzieren. Worum gehts eigentlich nochmal genau? :D |
Re: Adresse in Speicher, welche Datei
mich interessiert einfach, wie ich z.b. die Datei/Adresse für solche Texte herausbekomme. Der Startbutton ist nur ein Beispiel. Ich kann ja mit der findwindow-Methode den Text in etwas einzigartiges ändern und diesen Text im Speicher suchen.
Die Sache mit der Zugriffsverletzung war nur ein Beispiel, was ich in den meisten Fällen schon nachvollziehen kann (mittels PE und DllExp), wobei mich aber die programmiertechnische umsetzung auch interessieren würde, um z.b. ein Programm schreiben zu können, welches man den Prozess und die Adresse übergeben kann und es berechnet, in welchem modul+Fileoffset der Fehler/Text steht. Die Prozedur über PE und dllexp ist halt ziemlich aufwendig. Gruß Frank |
Re: Adresse in Speicher, welche Datei
Hast du schonmal nach "S#0t#0a#0r#0t#0" gesucht?
|
Re: Adresse in Speicher, welche Datei
klar, unicode, mitm hxd...wies auch im Prozessspeicher drinsteht
Gruß Frank |
Re: Adresse in Speicher, welche Datei
Zitat:
Probiere es mal mit: ![]() |
Re: Adresse in Speicher, welche Datei
Zitat:
Ansonsten funktioniert das relativ simpel... Zuerstmal brauchst Du ein Handle auf den Zielprocess. Dann kannst Du Dir mittels EnumProcessModules aus der psapi.dll eine Liste der Module im Prozess holen. Mittels GetModuleFileNameEx bekommst Du dann für jedes der Module aus der Liste den kompletten Pfad, und der Handlewert ist praktischerweise identisch mit der Adresse des Moduls im Adressraum des Zielprozesses. Offset ist dann auch relativ einfach zu berechnen, dazu müsste man aber genaugenommen noch dessen PE-Header parsen um zu sehen wie die Sections verteilt sind. Ausserdem kann dynamisch allozierter Speicher ja eigentlich überall sonst wo noch rumliegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz