| |
|
|
- Seite 1 - |
|
| Meldung: Microsoft hat ab Windows2000 die Meldepflicht für Prozesse eingeführt! Jeder User-Prozess hat gefälligst auf Anfrage seinen genauen Aufenthaltsort unverzüglichst anzugeben! Bei Bedarf können sämtliche Rechte entzogen und der Aufenthaltsort polizeilich festgesetzt werden!
Im Anhang befindet sich zu diesem Thema ein kleines Polizeiprogramm.
Meine Frage: Wie geht das?
Als Belohnung fürs Raten gibt es schönen leckeren Quelltext... |
| 609 kB | | Kurzbeschreibung: | Big Brother - Meldepflicht für Prozesse Version 3 | | Hochgeladen: | 10.10.2006 | | Ladeanzahl: | | | | Herunterladen |
|
|
| |
|
|
| |
|
- Seite 3 - |
|
|
Sebastian König | [quote:80e778690a]Nein, falsch verstanden - mein Programm ist kein Treiber. Das geht auch mit Profan nicht. Bloß wer Treiber schreiben kann, hats einfacher mit der Lösung. Genauer gesagt ist das ein Hinweis auf die DLL, in der sich die API befindet, die ich da verwende...ein sehr guter Hinweis, mit dem sich das Rätsel wohl ohne Probleme lösen läßt . [/quote:80e778690a]Ok, dann tippe ich mal auf eine der Nt... oder Zw... Funktionen in der NTDLL - aber da gibt es wirklich sehr viele...
Oder steht das Verzeichnis womöglich an einer festen Adresse und kann einfach mit ReadProcessMemory() ausgelesen werden?
MfG
Sebastian |
|
|
| |
|
|
|
| [quote:32d5ba0af9=Sebastian König][quote:32d5ba0af9]Nein, falsch verstanden - mein Programm ist kein Treiber. Das geht auch mit Profan nicht. Bloß wer Treiber schreiben kann, hats einfacher mit der Lösung. Genauer gesagt ist das ein Hinweis auf die DLL, in der sich die API befindet, die ich da verwende...ein sehr guter Hinweis, mit dem sich das Rätsel wohl ohne Probleme lösen läßt . [/quote:32d5ba0af9]Ok, dann tippe ich mal auf eine der Nt... oder Zw... Funktionen in der NTDLL - aber da gibt es wirklich sehr viele...
Oder steht das Verzeichnis womöglich an einer festen Adresse und kann einfach mit ReadProcessMemory() ausgelesen werden?
MfG
Sebastian[/quote:32d5ba0af9] Zu 1: 100 Punkte.
Zu 2: 50% richtig!
Es wird! |
|
|
| |
|
|
|
Sebastian König | Ok, ich habe gerade mal folgendes gemacht:
- Big Brother.exe gestartet - Visual Studio-Debugger mit dem Big Brother-Prozess verbunden - Prozess per Debugger angehalten - Nachgeschaut, wo das Modul NTDLL im Speicher steht - Breakpoint auf genau diese Adresse gesetzt - Prozess fortgesetzt - Im Programm Button angeklickt, dann OK, usw...
Ergebnis siehe Bild im Anhang
Ich bin nicht ganz sicher, warum das gerade diesen Effekt hat . Schätze mal, dass das Hinzufügen des Breakpoints irgendwie Speicher verschiebt oder überschreibt und dann alles nicht mehr stimmt.
Wie auch immer - mal gucken, was man mit der Funktion so anfangen kann...
MfG
Sebastian |
|
|
| |
|
|
|
| Ich sag ja, es wird!
Mal schauen, was du da findest... |
|
|
| |
|
|
|
Sebastian König | Für eine Art Brute-Force-Methode habe ich jetzt folgenden Code erstellt: KompilierenMarkierenSeparieren!$H windows.ph
Cls
declare id&
print "ID:",
input id&
declare hProcess&
let hProcess& = ~OpenProcess(~PROCESS_ALL_ACCESS,0,id&)
print hProcess&
declare pMem#,size&
dim pMem#,2048
clear pMem#
whileloop 0,50
if External("NTDLL.DLL","ZwQueryInformationProcess",hProcess&,&loop,pMem#,SizeOf(pMem#),Addr(size&)) = 0
print "OK:",&loop,"-",size&,"Bytes gültig"
whileloop 0,150,2 Vielleicht Unicode-String?
print chr$(byte(pMem#,&loop));
wend
print
endif
wend
dispose pMem#
case hProcess& <> 0 : ~CloseHandle(hProcess&)
WaitKey
end
Bei zwei Werten von &loop schlägt die Funktion bei mir nicht fehl: 10 (= ProcessLdtInformation) und 27 (= ProcessImageFileName).
Das Ergebnis bei 27 ist zwar nett, aber hier nicht interessant, denke ich mal.
Bleibt also noch die 10: Aber was heißt ProcessLdtInformation? Und was steht in diesen 8 Byte, die er da lesen kann?
P.S.: Die Namen für die Werte habe ich aus ntddk.h |
|
|
| |
|
|
|
| Schon nicht schlecht - du liegst mit beiden InformationClasses aber auf dem falschen Dampfer.
[quote:8e53af89cf] ProcessLdtInformation Based on the name, this enum should cause NtQueryInformationProcess to return information about LDT entries for the specified process. Since most Win32 processes dont use the LDT, this enum is of limited use. In my testing, I was unable to get the API to return any LDT-related information for any process (even NTVDM). [/quote:8e53af89cf] |
|
|
| |
|
|
|
| Da das ein Rätsel ist, an dem sich wohl mancher Informatikprofessor die Zähne ausbeißen würde, mache ich es noch einmal etwas einfacher:
Hinweis 5: Dir fehlt ein Stichwort - ein Stichwort, das ich in einem Posting hier in den letzten Tagen gebraucht habe.
Hinweis 6: Die Lösung liegt innerhalb der ersten 9 InformationClasses. |
|
|
| |
|
|
|
Sebastian König | [quote:0251cbd18c]Schon nicht schlecht - du liegst mit beiden InformationClasses aber auf dem falschen Dampfer.[/quote:0251cbd18c] Hmm, seltsam... Bei allen anderen InformationClasses schlägt der Aufruf aber fehl, selbst wenn ich id& = ~GetCurrentProcessId() setze. Ich habe alle Werte bis 100 probiert... |
|
|
| |
|
|
|
| [quote:493c1cb96b=Sebastian König]Hmm, seltsam... Bei allen anderen InformationClasses schlägt der Aufruf aber fehl, selbst wenn ich id& = ~GetCurrentProcessId() setze. Ich habe alle Werte bis 100 probiert...[/quote:493c1cb96b] Das liegt daran, das dein Ansatz etwas falsch ist. ZwQueryInformationProcess ist eine äußerst fiese Funktion - die in Parameter 4 angegebene Größe der Struktur muß genau stimmen, sonst gejts in die Hose. |
|
|
| |
|
|
|
Sebastian König | [quote:6ce9c31e7f]Das liegt daran, das dein Ansatz etwas falsch ist. ZwQueryInformationProcess ist eine äußerst fiese Funktion - die in Parameter 4 angegebene Größe der Struktur muß genau stimmen, sonst gejts in die Hose.[/quote:6ce9c31e7f] Aaah - ja, danke! Ich hatte jetzt gedacht, man muss nur genügend Platz bereitstellen und bekommt den benötigten durch den 5. Parameter zurückgeliefert (was offenbar bei 10 und 27 auch der Fall ist).
Mit Platz für gerade mal einen einzelnen LongInt sieht das Bild jedenfalls schon ganz anders aus: 11 funktionierende Werte. Mal gucken, ob da etwas dabei ist... |
|
|
| |
|
|
|
| Nein, leider nichts dabei, kann ich so schon sagen. |
|
|
| |
|
|
|
| So, ich wollte nur noch mal sagen: Das Mitraten lohnt sich! Für jeden der hier miträt (egal ob er total danebentippt), wird es nicht nur den Quelltext geben, sonder viele, viele weiter Infos zur API ZwQueryInformationProcess, die man unter NT-Systemen gut gebrauchen kann. |
|
|
| |
|
|