AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Undokumentierter Sendmessage-Befehl

Undokumentierter Sendmessage-Befehl

Ein Thema von PinkFloydFan · begonnen am 4. Sep 2011 · letzter Beitrag vom 6. Sep 2011
Antwort Antwort
Benutzerbild von PinkFloydFan
PinkFloydFan

Registriert seit: 4. Dez 2007
Ort: Straubing
54 Beiträge
 
Delphi 2010 Architect
 
#1

AW: Undokumentierter Sendmessage-Befehl

  Alt 5. Sep 2011, 08:16
Nu wirds aber richtig interessant!!

Werde ich gleich mal antesten!!

Sollte es doch noch eine Lösung geben?? *freu*
  Mit Zitat antworten Zitat
Benutzerbild von PinkFloydFan
PinkFloydFan

Registriert seit: 4. Dez 2007
Ort: Straubing
54 Beiträge
 
Delphi 2010 Architect
 
#2

AW: Undokumentierter Sendmessage-Befehl

  Alt 5. Sep 2011, 08:28
@Morphie:

Danke für deinen Vorschlag!!
Liest sich soweit gut, aaaber:

hier bekomme ich eine Zugriffsverletzung:

pm := pointer(integer(pm^) + 16);


"Lesen von Adresse 00000009"

Dieser Code scheint nur bei der eigenen Anwendung zu funktionieren.
Sobald man das Handle einer fremden Anwendung angibt, erhält man die Zugriffs-Verletzung

Edit: Ers ma Kaffee zubereiten...

Geändert von PinkFloydFan ( 5. Sep 2011 um 08:31 Uhr)
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#3

AW: Undokumentierter Sendmessage-Befehl

  Alt 5. Sep 2011, 08:30
vergiss es doch wieder mit meiner Lösung Klappt doch nicht so wunderbar, wie ich gedacht habe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#4

AW: Undokumentierter Sendmessage-Befehl

  Alt 5. Sep 2011, 22:46
Eigentlich wäre es besser, wenn ihr das Programm neu erstellt.



Wie/warum konnte da jemand eigentlich einfach so alle Quellen zerstören?
(keine Backups )

Es ist eigentlich nicht möglich vorgesehn, Komponenten von extern auszulesen.
und ja, eigentlich gibt es da so Wege, aber die sind kein Zuckerschlecken, da man die RTTI manuell auslesen und die Komponenten/Property/Speicherzuriffe ebenfalls alle manuell zurückverfolgen muß (also alles, was einem die ganzen VCL-Klassen sonst abnehmen).
Auch ist HInstance noch hardgecodet, was natürlich bei allen "verschobenen" Programmen zwangläufig darin enden muß, daß dort nichts gefunden wird.

Was mich aber grade sehr überrascht hat ist, daß Skype (für Windows) wohl doch immernoch in Delphi geschrieben ist.
Code:
$0340F180 TLoginForm:LoginForm
   $0693A490 TLoginControl:{NoName}
      $06943890 TAccessibleComboBox:{NoName}
      $0694B460 TAccessibleEdit:{NoName}


$06B6A630 TZapMainForm:ZapMainForm
   $034DF180 THomeForm:{NoName}
      $06B7A490 TCanvasNavigationPanel:{NoName}
      $06B7B250 THomeBackground:{NoName}
         $06B8B460 TWebAppBrowser:{NoName}
            $06B7B5C0 TWebAppErrorPanel:{NoName}
               $06B8B740 TButton:{NoName}
            $034DF600 TWebBrowserEx:{NoName}
   $06B58200 TPanelButtons:PanelButtons
   $06B79360 TZapCommunicator:Com
   $06B796D0 TMyselfControl:{NoName}
   $06B5F5C0 TConversationsControl:{NoName}
      $06B8ABC0 TAccessibleEdit:{NoName}
      $06B8AEA0 TScrollBar:{NoName}
   $06B79A40 TEmptyCanvas:{NoName}
   $06B79DB0 TSkypeSplitter:{NoName}
   $06B5F980 TDCEmbedBanner:{NoName}
   $06B5FD40 TChromeMenu:ChromeToolbar
      $06B83890 TToolButton:{NoName}
      $06B83A70 TToolButton:{NoName}
      $06B83C50 TToolButton:{NoName}
      $06B83E30 TToolButton:{NoName}
      $06B84010 TToolButton:{NoName}
      $06B841F0 TToolButton:{NoName}
      $06B843D0 TToolButton:{NoName}
      $06B845B0 TToolButton:{NoName}
      $06B84790 TToolButton:{NoName}
   {Fehler}
Das Programm ist in D2010 geschrieben und nutzt die 2010er-RTTI, also mit anderen Delphi-Version könnte es Probleme geben, vorallem mit TControl.Name, da dieses natürlich als Unicode ausgelesen wird.
Außerdem kann es auch zu unstimmigkeiten kommen, da ja die Fremd-Objetke mit der eigenen RTTI interpretiert werden, anstatt mit der Fremden (läßt sich bestimmt auch noch irgendwie lösen).
TControl.ClassName hat Emba allerdings halbwegs abwärtskompatibel gelassen, bzw. sie haben es sich leicht gemacht und die RTTI eigentlich in ANSI (UTF-8) belassen.

Für D2010\XE\XE2 könnte man sowas also vermutlich relativ "leicht" ausbauen, aber darunter wird es echt frickelig.
Angehängte Grafiken
Dateityp: png Unbenannt2.png (114,0 KB, 22x aufgerufen)
Angehängte Dateien
Dateityp: 7z Project5.7z (376,0 KB, 6x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Sep 2011 um 23:01 Uhr)
  Mit Zitat antworten Zitat
gekkorist

Registriert seit: 14. Jan 2007
30 Beiträge
 
#5

AW: Undokumentierter Sendmessage-Befehl

  Alt 5. Sep 2011, 23:36
Kann mir nicht so richtig vorstellen das man es nicht mit Readprocessmemory auslesen kann.
Hattest ja schon geschrieben das du ein mem dump gemacht hattest und sich die Adressen verschieben, aber das ist so gut wie normal. Irgendwann kommt man aber an die Adresse wo die Werte Statisch stehen.. ist aber ebend bissel Arbeit.
Ein starkes Tool um Adressen von "multi level pointers" zu finden könnt ich die Cheatengine empfehlen, wo man sich aber auch erst reinfitzen muss.

gutes Gelingen in deinem Projekt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#6

AW: Undokumentierter Sendmessage-Befehl

  Alt 5. Sep 2011, 23:49
ReadProcessMemory ... Was denkst du, wie ich den Speicher rüberkopiere?
Aber das Problem hierbei ist, erstmal rauszubekommen wo sich was befindet.

Es gibt eben keine direkte statische Zuordnung zwischen Handle (HWND) und TControl ... ist alles schön dynamisch und schön verschachtelt.
Und beim TLabel gibt es noch nichtmal ein Handle, weswegen man sich dort durch noch mehr verschachtelungen wurschteln muß.
Bei den anderen Controls kann man ja leicht an den Text kommen, da sich das HWND suchen und dann über die WinAPI (z.B. WM_GETTEXT) dieser auslesen läßt, aber z.B. dem TLabel kannst du keine Message schicken.

Wenn ich dir eine hochauflösende Luftaufnahme von Europa gebe, dann wirst du es dennoch schwer haben mich darauf zu finden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Sep 2011 um 23:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von PinkFloydFan
PinkFloydFan

Registriert seit: 4. Dez 2007
Ort: Straubing
54 Beiträge
 
Delphi 2010 Architect
 
#7

AW: Undokumentierter Sendmessage-Befehl

  Alt 6. Sep 2011, 08:07
Guten Morgen liebe Delphi-Gemeinde!


@ Himitsu:

Tja, das ist das Ergebnis wenn der Scheffe solche Sachen nur einem einzigen Mann
überlässt, weil er Zitat "Vollstes Vertrauen" hat. Ubd der hat das Programm mehr oder
weniger in seiner Freizeit gecodet, womit es eigentlich kein Firmeneigentum ist..
Tja, und dann kommt da noch ne Frau ins Spiel.. Die des Programmierers.
Den Rest kann man sich ja dann wohl denken..

Dein Programm Form5 ist ja die Wucht, aber so richtig weiterhelfen tuts mir eigentlich nicht

Wozu dienen die Komponenten auf Panel1??


Ich hab gestern auf Maloche das Proggie mit nem Resource-Viewer
(nicht mit ResHacker, wie von Morphie vorgeschlagen, weil der abstürzte,
wenn ich die betreffende Form öffnen wollte sondern mit XN Resource Editor)
gecheckt, und jetzt kommts noch schlimmer:

Das was ich für Labels hielt, sind in Wirklichkeit TDBText Objekte... die haben ja keine Caption oder nen Text..

bim momentan etwas ratlos und kurz vorm aufgeben.....

glaube ich brauche bald mal nen Reset

Obigen Quelltext von Sirius hab ich etwas abgewandelt, und man kann damit tatsächlich sämtliche Labels (wenn der Name bekannt ist) auslesen..

Aber jetzt gehts plötzlich um TDBText...

Edit:
Hab grade festgestellt daß TDBText doch ne Caption haben... lässt sich schreiben und lesen.
Taucht nur nicht in der OH auf..

Geändert von PinkFloydFan ( 6. Sep 2011 um 08:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Undokumentierter Sendmessage-Befehl

  Alt 6. Sep 2011, 08:54
Ubd der hat das Programm mehr oder
weniger in seiner Freizeit gecodet, womit es eigentlich kein Firmeneigentum ist..
Kommt auf die Vereinbarung an, die getroffen wurde.

Zitat:
Tja, und dann kommt da noch ne Frau ins Spiel.. Die des Programmierers.
Den Rest kann man sich ja dann wohl denken..
Ich weiß jetzt nicht, was die frau mit dem Problem zu tun hat und denken, kann ich mir da jetzt auch nichts unbedingt.

Davon mal abgesehen, was versucht du eigentlich zu erreichen? Eventuell gibt es ja eine bessere Möglichkeit.

Viele Grüße, BruceSpringsteenFan.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Undokumentierter Sendmessage-Befehl

  Alt 6. Sep 2011, 09:03
Aber jetzt gehts plötzlich um TDBText...

Edit:
Hab grade festgestellt daß TDBText doch ne Caption haben... lässt sich schreiben und lesen.
Taucht nur nicht in der OH auf..
TDBText ist doch nur ne Ableitung von TCustomLabel. Also müsste alles was für ein Label funktioniert auch für DBTExt klappen.


Viele Grüße, NKOTBFan
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:12 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-2025 by Thomas Breitkreuz