| |
|
|
- Seite 1 - |
|
| Im letzten Jahr hat mich das Bedürfnis gepackt, mich näher um den Prozessbereich - also um Threads, Prozesse, DLLs und Fenster zu kümmern und etwas mehr darüber zu lernen, als ich bislang wusste. Als Hilfsmittel dazu habe ich mir die Anwendung Tasks and Token (TNT) gebastelt, die mir bislang in dieser Hinsicht recht gute Dienste geleistet hat. Ich möchte euch das Programm hier einmal etwas näher vorstellen und hoffe, dass euch das Testen genausoviel Spaß macht, wie mir das Programmieren und die Arbeit daran:
Tasks and Token wurde unter und für Windows2000/XP entwickelt; ein Betreiben der Anwendung unter anderen Betriebssystemen ist zwar im Prinzip möglich, aber nur wenig sinvoll. Das Proggi wurde mit XProfan9 und Profan2Cpp 1.1 erstellt, mit UPX gepackt und verfügt über ca.10000 Quelltextzeilen. Zum Ändern der Zugriffsrechte benutze ich teilweise eine von mir entsprechend geänderte Version von AHs DACL_SET.INC (einige BUGs und ein Teil der Protokollierung entfernt). Das Programm unterstützt die bis WindowsXP standardmäßig verwendeten Zugriffslisten des Typs ACL_REVISION und Zugriffslisteneinträge des Typs ACCESS_ALLOWED_ACE und ACCESS_DENIED_ACE ... Anwendungen, die andere Zugriffslisten verwenden, konnte ich bislang nicht finden.. Die eigentliche Programmdatei heißt Tasks and Token.EXE; alle Dateien müssen ins selbe Verzeichnis entpackt werden. Um nicht euer Startmenü (oder sonstiges) unnötig vollzumüllen, habe ich auf eine Installationsroutine verzichtet - ich denke, ihr kommt auch so damit zurecht.
Tasks and Token erzeugt eine Art aktualisierbaren Schnappschuss des Betriebssystems, listet dabei Prozesse, Threads, Module und Fenster in ihrem Verhältnis zueinander auf und liefert umfangreiche Informationen über diese Objekte. Um auch Zugriff auf Informationen zu erhalten, die normalerweise für einen Administrator unzugänglich und unsichtbar sind, kann Tasks and Token Zugriffsrechte auf Prozesse, Threads und den Access-Token ändern, oder (ohne selbst eigentlich ein Service zu sein) bei Bedarf über Windows als Systemservice gestartet werden. Dabei ist darauf zu achten, dass TNT als interaktiver Service nur für den User sichtbar ist, der sich als erstes in den Rechner eingeloggt hat.
Hier alles aufzulisten, was das Programm ausliest oder auch ändern kann würde den Rahmen wohl gänzlich sprengen - ich werde mich deshalb auf einige in der Hilfedatei noch undokumentierte Bereiche beschränken:
Module und DLLs: Nebem dem Auslesen der Versionsinformationen untersucht Tasks and Token geladene Module u.a. auch nach enthaltenen Exportfunktionen und deren Adressen. Erhaltene Informationen können mittels Rechtsklick in das jeweilige Listview in die Zwischenablage kopiert werden. TNT bietet auch die Möglichkeit, eine fremde noch nicht geladene DLL zu laden und zu untersuchen. Dabei führt Tasks and Token die Einsprungsfunktion dieser geladenen DLL nicht aus. Das hat den Vorteil, dass auch DLLs von anderen Betriebsystemen (z.B. eine DLL von WindowsXP unter Windows2000) untersucht werden können; aus komprimierten DLLs können deshalb aber evtl. (auf diese Weise) keine Exportfunktionen ausgelesen werden.
Fenster: Neben dem Anzeigen unterschiedlichster Fensterinformationen können mittels Rechtsklick auf ein Fenster im Treeview - nach dem Motto mache sichtbar was unsichtbar ist - Statusinformationen eines Fensters geändert werden. Auch Rechtsklicks in das entsprechende Listview bieten eine Änderungsmöglichkeiten für fremde Fenster.
Prozesse und Threads: Nebenbei lassen sich die unterschiedlichen Threads einer Anwendung durch Rechtsklick ins Treeview anhalten und fortsetzen , können Prioritäten von Threads und Prozessen einzeln geändert oder kann auch der Boost abgeschaltet werden, der u.a. eine Prioritätserhöhnung bei Aktivierung eines Threadsfensters bewirkt.
Access-Token: Ein Grundbaustein neuer Windows Betriebsysteme sind die Zugriffsrechte. Um genau festlegen zu können, welche Anwendung unter Windows genau auf was Zugriff haben darf, wird jedem Prozess vom Betriebssystem eine Art elektronischer Ausweis mit auf den Weg gegeben, der genau Identität und Rechte des ausführenden Users festlegt. Mittels Rechtsklick in das entsprechende Treeview lassen sich hier unter anderem Privilegien in einem laufenden Prozess aktivieren oder auch deaktivieren. Auch Gruppenzugehörigkeiten können, sofern die jeweilige Gruppe dies unterstützt, deaktiviert und aktiviert werden ohne die Gruppe aus dem Token zu entfernen. In diesem elektronischen Ausweis Access-Token gibt es einen Bereich, der Standard-Zugriffsrechte festlegt. Wird durch einen Prozess ein neues Objekt erzeugt und wird diesem Objekt weder durch Vererbung noch sonstwie irgendeine Sicherheitsbeschreibung zugeordnet, wird diese Standard-Zugriffsliste im Acces-Token als Sicherheitsbeschreibung übernommen. Dies wäre zum Bespiel u.a. beim Erzeugen eines neuen Prozesses mittels @Winexec() der Fall. Tasks and Token kann diese Zugriffsliste nicht nur anzeigen sondern diese auch (mittels Treeview-Rechtsklick) bei Bedarf ändern.
Viel Mehr möchte ich über mein Machwerk eigentlich jetzt nicht erzählen. Ich hoffe, es reicht aus um ein wenig Interesse und Lust am Spielen zu wecken....
Beste Grüße
Eduard Zimmermann
|
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
| Neues Update - einiges an BUGS gefixt und ein paar Sachen verbessert... |
|
|
| |
|
|
|
| Die Funktion Timernachricht senden wurde durch die Funktion Message senden ersetzt. Benutzt man diese Option bei einem TNT Thread oder Fenster, wird ein Sicherheitstest durchgeführt, der Auskunft darüber gibt, ob ein Gast oder eingeschränkter User mittels Senden der WM_TIMER Message ein Admin werden kann. Erscheint hier eine Messagebox, ist dies der Fall.
Die Funktion Offsetadressen anzeigen wurde durch die Funktion Erweiterte Exportfunktionssuche ersetzt, die neben den Offsetadressen der Funktionen auch die Ordinalzahlen sowie auch unbenannte Funktionen anzeigt.
Die Exportfunktionssuche wurde erheblich verbessert und läuft auch schneller ab.
Die Adresse der Exportsektion, der Ursprungsname einer DLL (bei der Compilierung), die Anzahl der benannten Exportfunktionen und die letzte belegte Ordinalzahl werden (wenn vorhanden) nun ebenfalls aus dem Header des Moduls ausgelesen.
Über das Senden einer Timernachricht an ein TNT-Fenster kann getestet werden, ob die agenblickliche Windowsversion sicher ist. |
|
|
| |
|
|
|
| Nochmals ein paar kleine Bugs gefixt - die sterben nie aus, die Dinger . |
|
|
| |
|
|
|
| Einiges an Bugs gefixt:
Version 1.7.2:
Beim letzten Update hatte ich mir einen heftigen Bug eingebaut und Prozessspeicher ließ sich nicht mehr ändern. Bug ist beseitigt.
Zwei Bugs bei der Dimensionierung von Bereichsvariablen wurde beseitigt.
Aufgrund einnes Fehlers beim Anzeigen der Prozedur der Fensterklasse wurden nachfolgende Texte unter Umständen nicht mehr richtig angezeigt, wenn keine Prozedur ausgelesen werden konnte. Bug ist behoben.
Es wurde wieder etwas an der Erkennung von Fensterstilen gefeilt.
Die Nummern der ACEs des Default DACL wurden falsch angezeigt. Fehler ist beseitigt.
Die Nummer der ausgelesenen Funktion entspricht nun der Ordnungszahl.
Die letzte vergebene Ordnungszahl wurde manchmal falsch angezeigt. Fehler behoben.
Die Adresse der Exportsektion wurde Zeitweise falsch angezeigt. Fehler ist behoben.
Teilweise wird bei Exportfunktionen in DLLs nur auf andere Exportfunktionen in anderen DLLs verwiesen. Solche Exportfunktionen wurden bislang in der erweiterten Exportfunktionssuche mit falschen Adressen angezeigt. Jetzt werden die Verlinkungen direkt ausgelesen und auch als Verlinkung angezeigt (siehe KERNEL32.DLL).
Schreibfehler beseitigt (DLLs aud DLLs geändert).
Die erste vergebene Ordnungszahl wird nun ebenfalls angezeigt.
Eine versteckte Zusatzfunktion wurde hinzugefügt. |
|
|
| |
|
|
|
| Habe eine kleine Erweiterung eingefügt und will hoffen, mir nicht wieder zu viele Fehler eingebaut zu haben:
DLLs in fremden Prozess einschleusen Ist im Treeview von TNT ein Prozess markiert, kann man nach einem Rechtsklick ins Treeview und einem Klick auf DLL einschleusen über einen Dialog eine beliebige DLL auswählen, die dann in den Virtuellen Speicher des markierten Prozesses geladen wird. Durch Anpassen der Rechte auf den fremden Prozess ist es ohne weiteres möglich, sogar in den Prozess CSRSS eine DLL unterzubringen. Auf Betriebsystemen bei denen WM_TIMER Callbacks vom Anwender gesendet werden können, ist es möglich, die in der DLL enthaltenen Exportfunktionen direkt mittels einer WM_TIMER Message (mit Angabe der auszuführenden Adresse der Funktion in Parameter 4) direkt anzuspringen. Ist dieses nicht möglich, muss die DLL selbst für Kommunikationsmöglichkeiten mit TNT sorgen.
Wie bekommt man heraus, ob das OS das Senden von Callbacks über WM_TIMER zulässt? Zum Testen wie folgt vorgehen: 1.) Tasks and Token Prozess markieren. 2.) Rechtsklick ins Treeview durchführen. 3.) Message senden anklicken. 4.) Den Button Message senden anklicken. Erscheint eine Sicherheits-Messagebox, können WM_TIMER Callbacks gesendet werden, andernfalls nicht. |
|
|
| |
|
|
|
| Das Ausführen von Exportfunktionen in von fremden Prozessen geladenen DLLs ist nun möglich. |
|
|
| |
|
|
|
| Habe gerade mal wieder ein Update von [...] . Was ist neu:
Beim Laden des Programmes waren für kurze Zeit bislang die Menüpunkte anwählbar. Alle Menüpunkte werden nun gleich bei der Erstellung deaktiviert.
Die Geschwindigkeit des Listens von Exportfunktionen wurde zu lasten der Kopierfunktion verbessert.
Beim erweiterten Listen von Exportfunktionen wird nun auch die Adresse mit angegeben, an der die Startadresse der jeweiligen Exportfunktion vermerkt ist.
Eine Funktion zum Bereitstellen von virtuellem Speicher in fremden Prozessen (um diesen Speicher für eigene Zwecke zu nutzen) wurde hinzugefügt. Mit der ebenfalls mit TNT möglichen DLL-Injektion ist damit die Grundlage für API-Hooking geschaffen. |
|
|
| |
|
|
|
| [img:b8c701b24a]https://xprofan.com/pafiledb/images/screenshots/1158596547tnt1.gif[/img:b8c701b24a] |
|
|
| |
|
|
|
| Ich mal wieder:
Noch einen [...] -Bug gefixt: Wurden beim schnellen Listen von Exportfunktionen keine Funktionen gefunden, wurde der Ursprungsname der DLL mehrfach in die Listeview eingetragen. Fehler wurde beseitigt.
Es ist insgesammt sowieso besser, im Menü die Erweiterte Exportfunktionssuche abzuhaken. Hier werden auch die unbenannten Funktionen gefunden, und es gibt keine Probleme beim Auslesen der Exports von mit Profan2Cpp erstellten DLLs.
PS: Die Versionsnummer imQuelltext hatte ich ebenfalls seit Ewigkeiten nicht mehr angepaßt - will mich bessern. |
|
|
| |
|
|
|
| Ich würde Roland ganz gerne das Proggi zur Veröffentlichung auf der nächsten XProfan CD zusenden. Ist das mit den Regeln des Wettbewerbs vereinbar? |
|
|
| |
|
|
|
Dietmar Horn | Hallo zusammen,
unsere vor dem allerersten (X)Profan-Wettbewerb 2005 gemeinsam aufgestellte Wettbewerbsregeln sind keinesfalls unveränderbar - und schon gar nicht sollten diese Regeln potentielle Wettbewerbsteilnehmer daran hindern, mit eigenen Programmen daran teilzunehmen!
Deswegen meinerseits auch ein klares und eineindeutiges JA zu Deinem Vorhaben - und ich hoffe mal, die Jury-Mitglieder werden das nicht anders sehen!
Bei unserem (X)Profan-Wettbewerb ist grundsätzlich erst mal alles das gestattet und erlaubt, was der Verbreitung, der Weiterentwicklung der Programmiersprache (X)Profan und der hierfür entwickelten Tools dient - soweit damit nicht vorrangig kommerzielle Interessen verfolgt werden! Na gut - sowas wie XPSE, XPIA und ROC sollten wir natürlich nicht gerade zulassen, obwohl sie den genannten Kriterien entsprechen würden ...
Nochwas zur allgemeinen Info und Kenntnisnahme (vielleicht besonders für Schüler?):
JEDER potentielle Wettbewerbsteilnehmer kann davon ausgehen, daß sein eingereichter Beitrag unvoreingenommen von unserer Jury getestet und bewertet werden wird!
Auf alle Fälle werde ich selber einer der ALLERERSTEN Members sein, der ALARM schlagen und bis zum Geht-nicht-mehr damit DAUERHAFT nerven würde, falls ein Community-Member wegen seines Wettbewerbsbeitrages hier in irgendeiner Form, Art und Weise oder Qualität seines Beitrages diskriminiert werden sollte, sobald ich das mitkriege! Erst mal selber Bessermachen!
Jede Art von Wettbewerbsbeiträgen ist also willkommen - unabhängig davon, ob *.exe, *.prf, *.inc, *.pcu, *.dll, *.hlp, *.chm, o.ä., usw. ... (na ja, wahrscheinlich werde ich wahrscheinlich garantiert mindestens Tausende an *.irgendwas vergessen haben) ...
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 27.09.2006 ▲ |
|
|
|
|
| [quote:e2aec329de] Erst mal selber Bessermachen! [/quote:e2aec329de] Jau . |
|
|
| |
|
|