AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Adresse in Speicher, welche Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Adresse in Speicher, welche Datei

Ein Thema von _frank_ · begonnen am 16. Apr 2008 · letzter Beitrag vom 16. Apr 2008
Antwort Antwort
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 15:55
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
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 16:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#3

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 16:38
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
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#4

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 16:44
Naja, mein Startbutton ist zB rund und hat 'n Bild drin (XP mit Vista-Inspirat), da ist kein Text mit "Start".

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?
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 16:53
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
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 17:00
Hast du schonmal nach "S#0t#0a#0r#0t#0" gesucht?
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#7

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 17:12
klar, unicode, mitm hxd...wies auch im Prozessspeicher drinsteht

Gruß Frank
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#8

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 18:04
Zitat:
Mich wundert auch, warum ich den Text im Hxd nicht ändern kann, andere Stellen des Prozesses aber schon...
Die Speicherseite ist möglicherweise schreibgeschützt.
Probiere es mal mit:

http://www.memoryhacking.com/
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 19:55
Zitat von _frank_:
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.
Das funktioniert auch nur wenn keine Laufzeitpacker oder sonstige Sperenzchen zum Einsatz kommen. Bei gepackten Dateien gibt es keinen passenden Fileoffset.

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.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz