Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » Prozess überwachen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.10.2008, 18:39 Uhr
~Rob
Gast


Folgendes Vorhaben: Es soll jeder ausgeführte Maschinenbefehl einer Applikation durch ein Programm überwacht werden können. Mit dem Hintergrund das auf bestimmte Befehle reagiert werden kann. Aber das soll nicht das Thema dieses Threads sein.

Die grundsätzliche Frage ist, ob die ausgeführte Applikation ummantelt werden muss. Also Überwachungsprogramm und Applikation im gleichen Prozess oder ob es durchaus möglich ist, das ÜBerwachungsprogramm in einem zweiten Prozess auszuführen. Wie könnte man sowas angehen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.10.2008, 23:52 Uhr
Hans
Library Walker
(Operator)


Hi,

bei solchen Fragen stellt sich uns immer erst mal die Frage, was Du damit vor hast. Erst wenn wir einigermassen Sicher sein können, das Du keinen Unsinn planst, geben wir auf solche Fragen auch Antworten.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.10.2008, 15:00 Uhr
~Rob
Gast


mich interessiert ehrlich gesagt nur ob das technisch möglich ist oder glaubst du, dass ich anhand deiner Antwort eine schädliche Software entwickle und du die Verantwortung dafür trägst ???

zum Thema: Ich habe mich etwas in die Kernel Programmierung eingelesen und kann nicht so recht deuten ob so ein Vorhaben nur aus dem Kernel Level heraus zu realisieren ist oder auf Applikationsebene.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.10.2008, 17:51 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von ~Rob:
glaubst du, dass ich anhand deiner Antwort eine schädliche Software entwickle und du die Verantwortung dafür trägst ???

tatsächlich ist die Gesetzeslage in D so, das ich auch mit zur Verantwortung gezogen werde, wenn ich Dir was verrate und Du damit Unsinn treibst.



Zitat von ~Rob:
zum Thema: Ich habe mich etwas in die Kernel Programmierung eingelesen und kann nicht so recht deuten ob so ein Vorhaben nur aus dem Kernel Level heraus zu realisieren ist oder auf Applikationsebene.

Nun, dann sieh Dir mal die Systemarchitektur von Intel- und kompatiblen Prozessoren genauer an, inbesondere das mit den Ringen und Privilegien von Software. Dann kommst Du von alleine drauf. Nebenbei: Im Assemblerlehrbuch von Herrn Podschun hab ich mal gelesen, das es bei Intel-Prozessoren Befehle gibt, die nicht veröffentlicht werden (dürfen). Um die Erklärungen für diese Befehle von Intel zu bekommen, muss man ein sogenanntes "Non-disclosure-agreement" unterschreiben, also eine Verschwiegenheitserklärung.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.10.2008, 20:11 Uhr
Kest
saint



Zitat von ~Rob:
mich interessiert ehrlich gesagt nur ob das technisch möglich ist

So 'ne Art "Debugger" zu schreiben, ist im Grunde nicht unbedingt schwer und bestimmt möglich. Kommt aber mehr auf die Hardware an.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.10.2008, 21:00 Uhr
0xdeadbeef
Gott
(Operator)


Einwurf zur Gesetzeslage in DE: Der betreffende § 202c StGB liest sich wie folgt:

Zitat:

(1) Wer eine Straftat nach § 202a oder § 202b vorbereitet, indem er
1. Passwörter oder sonstige Sicherungscodes, die den Zugang zu Daten (§ 202a Abs. 2) ermöglichen, oder
2. Computerprogramme, deren Zweck die Begehung einer solchen Tat ist,

herstellt, sich oder einem anderen verschafft, verkauft, einem anderen überlässt, verbreitet oder sonst zugänglich macht, wird mit Freiheitsstrafe bis zu einem Jahr oder mit Geldstrafe bestraft.


Das hier fiele unter "sonst zugänglich macht," der Schlüsselteil ist hier aber "Wer eine Straftat nach § 202a oder § 202b vorbereitet, (...)" - im Klartext bedeutet das, es muss mindestens ein bedingter Vorsatz vorhanden sein, und darunter fällt "Ich habe gewusst, dass er damit eine Straftat begehen würde, aber es war mir gleichgültig." Ob auch "Ich habe gewusst, dass er damit eine Straftat begehen könnte" darunter fällt, muss die Rechtssprechung erst noch zeigen, von daher hat Hans schon guten Grund, sich vorher deiner Absicht zu versichern.

Was die eigentliche Frage angeht, Debugger bedienen sich in aller Regel (wenn nicht immer) entsprechender Kernel-Schnittstellen. Unter Linux ist das ptrace, unter Windows gibt es bestimmt etwas vergleichbares, dessen Namen ich nicht kenne. Direkt aus dem Userspace in ein anderes Programm einzugreifen, geht seit der Erfindung des virtuellen Adressraums höchstens, wenn das Programm das zulässt, also selbst eine entsprechende Schnittstelle zur Verfügung stellt; und dann nur mit entsprechenden Limitationen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.10.2008, 09:30 Uhr
~Rob
Gast


ok dann ist die Frage nach der Legalität durchaus berechtigt.

Im Grunde interessiere ich mich für die Funktionsweise von Technologien wie AppStream, also Software über das Internet runterladen und mit den Ressourcen des Client ausführen. AppStream lädt nur soviel herunter wie für den Erststart(führt eine virtuelle Installation durch) nötig und lädt dann unaufgefordert den Rest nach, so dass beim Anklicken weiterer Funktionen innerhalb der Software, die benötigten Programmteile eventuell bereits vorliegen.
Ich frage mich wie das realisiert wird, dass die Softwareausführung pausiert wird, wenn bestimmte Programmteile noch nicht im filesystem vorhanden sind. Ich dachte da an eine Debugger Funktionalität im Sinne von ptrace, so dass im auszuführenden Programmcode ein interrupt verursacht wird, bis die notwendigen Programmteile heruntergeladen wurden.

Was denkt ihr, wie das realisiert ist?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.10.2008, 11:23 Uhr
0xdeadbeef
Gott
(Operator)


Hm. Ich bin jetzt mit AppStream nicht vertraut, habe aber ernsthafte Zweifel daran, dass die solche Techniken dafür benutzen. Ich kann mir verschiedene, einfachere Ansätze vorstellen - für nativen Code wäre bei entsprechend modularem Design der Anwendung denkbar, dass Plugins in Form von Bibliotheken als "runterladen, ranlinken, in der Reihenfolge" nachgeladen werden; bei interpretierten Sprachen dürfte so etwas ziemlich einfach im Interpreter bzw. in der virtuellen Maschine einbaubar sein, und so weiter.

Ich denke nicht, dass sich jemand die Mühe macht, eine derart generelle Lösung für ein Problem zu entwickeln, das auf einfachere Weise besser gelöst ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.10.2008, 12:38 Uhr
~Rob
Gast


kannst du mir verdeutlichen wie das mit dem "Ranlinken" gemeint ist?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.10.2008, 14:04 Uhr
zac




Zitat:

Direkt aus dem Userspace in ein anderes Programm einzugreifen, geht seit der Erfindung des virtuellen Adressraums höchstens, wenn das Programm das zulässt, also selbst eine entsprechende Schnittstelle zur Verfügung stellt; und dann nur mit entsprechenden Limitationen.



Unter Linux. Ja, ist auch gut so. Unter Windows, nein, leider nicht!

Eigentlich funktionieren reine Ring3-Debugger in Windows ziemlich gut. Es lässt sich, wenn die Anwendung das nicht im Ring0 durch Hooks in Systemfunktionen verhindert, nicht verhindern, dass ein Prozess beliebig im Speicher anderer Prozesse, auf die er Zugriff hat (als Admin/Superuser mit SeDebugPrivilege alle, als Gast oder ohne SeDebugPrivilege (das hat der Gast nicht) nur die Prozesse des Gastusers), lesen, schreiben, allokieren, deallokieren, die Read/Write/Execute-Protection neu setzen, Remote neue Module nachladen, Threads im anderen virtuellen Speicherbereich erzeugen... kann. Privilegien sind übrigens auch in Linux vorhanden und decken etwa die selben Dinge ab, nur heißen sie da capatibilities.
Es ist also z.B. wunderbar möglich, als Administrator-User oder User mit gleichen Rechten einen RemoteThread in einem Systemdienst zu erzeugen.

Ein Beispiel für einen wirklich guten, kostenfreien, durch Plugins stark erweiterbaren Ring-3-Debugger/Disassembler in Windows ließe sich ollydbg nennen. Viele seiner Plugins gehen in den Ring 0, aber der Debugger selbst m.W. nicht.
Die wichtigsten Funktionen der WinAPI für das rumschreiben/lesen/usw. in anderen Prozessen sind (dahinter immer die Funktionen im Kern auf denen sie basieren, so weit die mir jetzt ohne nachzugucken bekannt sind):

OpenProcess/ZwOpenProcess
OpenProcessToken/?
VirtualAllocEx/ZwAllocateVirtualMemory
WriteProcessMemory/ZwWriteVirtualMemory & ZwFlushInstructionCache
ReadProcessMemory/ZwReadVirtualMemory
CreateRemoteThread/ZwCreateThread
SetWindowsHookEx/?
VirtualProtectEx/ZwVirtualProtect? kA...
TerminateThread/ZwTerminateThread
TerminateProcess/ZwTerminateProcess
CreateProcess/ZwCreateProcess

Dann gibts da auch noch die Debugging-API, die ist mir aber nicht so gut bekannt.
Kenn die aus meiner Windows-Zeit noch, als ich mal ein wenig mit Ring0-Hooks experimentiert habe (hatte dann u.a. so kleinere Sachen die eben diese Übergriffe auf andere Prozesse unterbunden haben, z.B. durch den Taskmanager, aber das gibt Stress, da Windows u.a. wohl für die Skins selbst so arbeitet, denn wenn csrss.exe beispielsweise nicht auf die Addressbereiche von Prozessen zugreifen kann, dann fühlt man sich optisch an Win95 erinnert).

Die sind jedenfalls alle voll aus dem Ring3 ansprechbar. Im Ring0 tun sie das gleiche, nur werden da keine Sicherheitsabfragen mehr gemacht.

Es gibt eine Reihe von Tools die mit sowas arbeiten:
Entferntes Schließen von Handles (kann z.B. der ProcessExplorer) wird wohl auch oft über einen RemoteThread auf CloseHandle im jeweiligen Addressbereich implementiert.
--
mov eax,0f9h
push 2
push 2
mov edx,esp
int 2eh

Dieser Post wurde am 24.10.2008 um 14:08 Uhr von zac editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Assembler ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: