AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Subclassing einer fremden Application, warum funzt das net ?
Thema durchsuchen
Ansicht
Themen-Optionen

Subclassing einer fremden Application, warum funzt das net ?

Ein Thema von stoxx · begonnen am 9. Nov 2003 · letzter Beitrag vom 5. Sep 2008
Antwort Antwort
Seite 3 von 7     123 45     Letzte »    
Assarbad
(Gast)

n/a Beiträge
 
#21

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 15:57
Aahhhhhhhhhhhhhhhhh

Nochmal ... auch wenn das alles hübsch und schön ist, nämlich hübsch doof und schön dämlich ... warum wollt ihr immer mit dem Kopf durch die Wand? Die ganzen tollen API-Hooks laufen nur, wenn man auch entsprechende Privs auf dem System hat. Das Debug-Priv ist meist Minimum. Oder man läßt sich einmalig irgendwelchen Code vom Admin im System implantieren ... aber mal ehrlich: Fensterhooks bieten genau das was stoxx will. Sie ermöglichen es einer DLL im Kontext eines beliebigen Prozesses mit Fenster zu laufen und den Rest (Subclassing) bekommt man noch gratis drauf.

Aber vielleicht denke ich auch nur falsch, wenn ein 50-Zeiler das erledigen kann und ich doch einen so schönen 500-Zeiler nehmen könnte ... nehmen wir doch einfach den 500-Zeiler. Vielleicht schaffen wir dann auch die gleiche relative Fehlerquote. Absolut wären das dann immerhin 10mal soviele Fehler.

Als Nachtrag: Hagens Idee finde ich noch am charmantesten. Allerdings ist mir nicht bekannt, daß dies auch nur annähernd mit Delphi realisierbar ist. In C sind das nur ein paar kleine Kommandos an den Linker und die Section der PE ist shared ...
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#22

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 16:14
@toms: Also die Sachen von Aphex fand ich schon immer ganz nett, aber dieses "Rootkit" ( http://www.virustrading.com/positron...t_root_kit.rar ) ist einfach nur lächerlich. Da hat wohl jemand nicht den Sinn hinter "Rootkit" verstanden. Das ist, glaube ich, das erste Rootkit welches mir unterkommt, das im Usermode arbeitet *ROFL*

Ich kann gar nicht soviel fressen wie ich kotzen möchte ...:

Zitat von LOM:
//This code was contributed by Aphex
//to be completely honest im not 100% sure how it works, but for the next
//source code release - ill look into it!
Zitat von LOM:
If you dont want to see 'bandwidth exceeded' messages when you try to download files or access this site, then help support me and donate 20$ in the donations section.
Zitat von LOM:
Next Application that will be released when donations reach 50 sales : Webcam Addict.
This application won't be released until I reach 50 donations.
Zitat von LOM:
Following Application after : LOM Security Analysis Rootkit.
... im Usermode ... *muhahahaha*

Zitat von LOM:
You can start supporting the community as the authors have supported you by contributing 35$ (this is not even the price of a computer game, and you will be truly getting something worthwhile that no-one else would provide, in uniqueness and technologically?) here :
Also "unique" sind seine Sachen wirklich ... aber IMO nicht so, wie er sich das denkt *g*
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#23

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 01:53
Zitat von Assarbad:
@jbg: Mit dem Zeugs von madshi wäre ich vorsichtig ... :-/ ... zumindest vor einiger Zeit funktionierte das nicht so, daß ich es in einem Programm in einer Produktivumgebung nutzen würde!
Wer sagt, dass ich dessen Code benutze? Mir ging es bei dem Link mehr um das Hintergrundwissen, dass auf dieser Seite bereitgestellt wird. Mit diesem Wissen konnte ich dann schon mein eigenes Testprojekt schreiben, ohne je den Code von madshi angeschaut zu haben (den gibt es sowieso nicht zum Download).
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#24

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 02:16
*g* Irrtum ... der Code ist schließlich in den Units enthalten

Aber ich verstehe schon was du meinst so gesehen möchte ich noch auf Bei Google suchenMicrosoft Research Detours verweisen
BTW: Ich hatte ja garnicht behauptet, daß du es benutzt. Wollte nur auf die Unzulänglichkeiten aufmerksam machen.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#25

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 02:40
Hi zusammen !

Zitat:
Es müsste auch über shared Speicher funktionieren. Man alloziert also einen Speicherbereich oberhalb $80000000, also mit CreateFileMapping(). Dann kopiert man seinen Fensterprocedure code da rein. Und arbeitet mit SetWindowLong(). Ob nun NT abbrüft ob SetWindowLong() die entsprechenden Privilegien benötigt weis ich aber nicht.

geht denn das nun oder nicht ?
wenn ja, wie ?

hmmm .. irgendwie seh ich noch nicht so recht den zusammenhang ..
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#26

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 10:28
Also stoxx ... wie oben schon erwähnt. Warum willst du mit dem Kopf durch die Wand?

Du hast bereits einen Hook. Jetzt darf dieser Hook nur nicht mehr Filtern, sondern muß eben nur durchlassen. Als nächstes schreibst du die Subclassing-Routine und fügst die in den Prozess ein, in dem sie sein soll. Voila, es ist angerichtet.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#27

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 14:43
Hallo zusammen,

also mir gefällt die Idee mit dem injecten einer DLL recht gut.
Vielen Dank nochmal an alle !

@Assa .. das mit dem Hook gefällt mir irgendwie nicht, wäre ja dann doppelt gemoppelt.
Einmal gehen alle Messages durch den Hook und zum zweiten mal in der eigenen neuen Wndproc.

Jetzt aber nochmal konkrekt die Frage.
Ich möchte zwei fremde Applicationen subclassen.
Ich habe jetzt eine DLL (in meinem Programmverzeichnis)
In diese wird die neue wndprog mit setWindowLong umgeleitet
Dann Injecte ich sie den zwei Prozessen.
Ist die vorgehensweise richtig ?

Aber wie kann ich die beiden "Daten" der zweimal geladenen Dll unterschieden jetzt ?
Habe noch keine konkrete vorstellung von dem ganzen.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#28

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 15:57
Zitat:
Aber wie bringst du das dem Delphi-Linker bei?
@Assarbad: die neue Fensterprocedure in dem MMF nutzt keinerlei Delphi RTL, ist so codiert das sie an jede Stelle des Speichers verschoben werden kann, hat also keine relativen Adressen auf Importe in unseren Prozess oder Sprünge an Adressen in unserem Prozess, und alle nötigen Importe auf die Kernel32.dll werden entweder in einer eigenen "Import" tabelle gemacht oder eben dynamisch.

Also, man würde in das MMF eine Datenstruktur ablegen wie

Delphi-Quellcode:
type
  PHookData = ^THookData;
  THookData = packed record
    AssemblerHook: array[] of Byte;

    LoadLibrary: function(FileName: PChar): hModule; stdcall;
    GetProcAddress: function(Lib: hModule; Name: PChar): Pointer; stdcall;
    Name: array[0..MAX_PATH -1] of Char;
    OtherData: Integer;
.. usw. usw.
// Code: array[0..0] of Byte;
  end;
Nun wird das MMF erzeugt und obige Datenstruktur an erster Position initialisiert. Dahinter steht der Code der nur auf diese PHookData zugreift.
Der Code könnte so aussehen:

Delphi-Quellcode:
function MyWndProc(..., HookData: PHookData): Integer; stdcall;
var
  Module: hModule;
begin
  Lib := HookData.LoadLibrary(HookData.Name);
  ...
  HookData.FreeLibrary(Lib);
end;
In den ersten Bytes von HookData steht dynamischer Code

Delphi-Quellcode:
asm
      POP ECX // hole Return Address
      CALL @@1 // ermittle HookData Address
@@1: POP EAX // EAX = @@@1
      SUB EAX,3 // EAX = @POP ECX = HookData
      PUSH EAX // erster Param unserer WindowProc
      PUSH ECX // return address
      ADD EAX,SizeOf THookData // Sprung zu WindowProc(HookData, ....)
      JMP EAX
end;
D.h. im MMF steht als erstes eine HookData Struktur, danach unser PASCAL Code.
Wir initialisieren das MMF, setzten AssemblerHook auf obigen Assembler, initialisieren die Importe und kopieren unseren PASCAL Code an Code.

Danach ist die Adresse des MMFs die Adresse unserer neuen WindowProc().

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#29

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 16:00
Übrigens, diese Technik kann in jeden beliebigen Prozess Code injezieren. D.h. das MMF kann auch dem Ziel-Prozess zugeordnet werden, oder besser noch einfach nur global für alle Prozesse gültig sein.

Nimmt man nun die Remote Thread funktionen und setzt deren Thread funktion auf eine so wie oben erzeugt "Funktion" dann könnte diese Funktion das Fenster subclassen IM Zielprozess. Somit wäre es nicht nötig eine Debug/Hook DLL zu injezieren.

Gruß Hagen
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#30

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 10. Nov 2003, 16:43
@Hagen: Ali G. wuerde sagen RESTECP
IMO eine sehr elegante Methode. Ich dachte urspruenglich, du woelltest eine Shared Section in der PE erzeugen, was bekanntlich auch moeglich ist. Nur eben nicht in Delphi.
Stell das doch bitte mal in die Codelib
@stoxx: Nimm Hagens Methode. Eleganter als ein Hook ist sie allemal (zumindest auf der NT-Plattform). Allerdings ist Fenster-Hooking als Methode zum Injezieren von DLLs in fremde Prozesse durchaus anerkannt. Also keinerlei Grund dies abzulehnen.

Gruss,

Oliver
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 7     123 45     Letzte »    


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 16:14 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