Autor |
Beitrag |
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 29.04.05 00:25
processview 1.0 by retnyg @ krazz.net/retnyg
___________________________________________________________________
download : hier
ein prozessmanager für die kommandozeile.
features:
- prozesse auflisten
- prozesse killen
- geladene dll's anzeigen
- verdächtige prozesse anzeigen
based on uallprocess unit of uall
lists processes, kills processes the taskmgr.exe's way, not like
most other processmanager tools ie. those of sysinternals.
generates lists of all loaded processes including submodules
(injected dll's). use lists of clean systems to compare if u're infected.
Zitat: | Usage: psview options
if started without parameters, psview lists all running processes.
available options:
/lm:4104 - lists modules of process with ID 4104
/k:4104 - kills process with ID 4104
/f:explorer - shows pid of process explorer.exe
/d - detailed: lists all process with modules
to generate a list-file of all your processes, type:
psview /d > list.txt |
use only on own risk.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Zuletzt bearbeitet von retnyg am Mi 12.10.05 17:34, insgesamt 1-mal bearbeitet
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 29.04.05 01:00
retnyg hat folgendes geschrieben: | kills processes the taskmgr.exe's way, not like
most other processmanager tools ie. |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| function KillProcess(pid: integer): boolean; register; asm push 0 test eax, eax jz @out push EAX push 0 push 1 CALL OpenProcess MOV ESI, EAX TEST ESI, ESI JE @final PUSH 1 PUSH ESI Call TerminateProcess TEST EAX, EAX JNZ @success jmp @final @success: pop edi push 1 @final: PUSH ESI CALL closehandle @out: pop eax end; |
Äh, TerminateProcess ist aber kein Geheimnis. ich wüßte gar nicht, wie es anders geht. Wie machen es denn die von SysInternals?
Und man sollte beachten, dass TermionateProcess asynchron arbeitet und sofort zurückkehrt. Deswegen sieht meine Methode so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure KillIt(dwProcID: DWORD); var hProcess : Cardinal; dw : DWORD; begin hProcess := OpenProcess(SYNCHRONIZE or PROCESS_TERMINATE, False, dwProcID); TerminateProcess(hProcess, 0); dw := WaitForSingleObject(hProcess, 5000); case dw of WAIT_OBJECT_0: Messagebox(Application.Handle, 'Prozess wurde beendet.', 'Prozess beenden', MB_ICONINFORMATION); WAIT_TIMEOUT: begin Messagebox(Application.Handle, 'Prozess konnte nicht innerhalb von 5 Sekunden beendet werden.', 'Prozess beenden', MB_ICONSTOP); exit; end; WAIT_FAILED: begin RaiseLastOSError; exit; end; end; Form1.Button1Click(Form1); end; |
(Müsste ich mal überarbeiten und etwas schöner machen. )
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 29.04.05 01:11
hmm ich werde mal gucken ob dein einwand berechtigt ist; fakt ist mein code läuft.
ausserdem ist das 1 zu 1 der code, den ich mit ollydbg aus der taskmgr.exe raushabe.
und zwar deswegen, weil alle codeschnippsel die ich bislang gefunden habe, genau wie die sysinternal tools, explorer.exe zwar abschiessen können, diese sich jedoch im anschluss gleich wieder startet, wodurch man keine gelegenheit hat, viren-dll's zu löschen die sich in diesen prozess injiziert hatten.
dies ist der code, wie er auch von genannten tools benutzt wird.
entscheidend sind nur die parameter, welche übergeben werden.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function KillProcess(pid: integer): boolean; stdcall; var procHnd: THandle; begin result := false; if pID <> 0 then begin procHnd := OpenProcess (PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION, False, pID); if procHnd <> 0 then begin result:= TerminateProcess(procHnd, 0); CloseHandle(ProcHnd); end; end; end; |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 29.04.05 01:40
retnyg hat folgendes geschrieben: | , weil alle codeschnippsel die ich bislang gefunden habe, genau wie die sysinternal tools, explorer.exe zwar abschiessen können, diese sich jedoch im anschluss gleich wieder startet, |
Das ist aber doch eine Einstellung in der Registry, dass er wieder neu startet. Wo ist denn der Trick bei dir? Ich kann leider kein Assembler lesen.
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 29.04.05 01:47
deswegen ist ja auch der auskommentierte delphi-source dabei, der das gleiche macht:
oben hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| | |
wie gesagt, entscheidend sind die parameter. dahin hat mich aber nicht die msdn geführt, sondern der debugger.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 29.04.05 02:21
Ach so, das meintest du mit dem Hinweis auf die Parameter.
Welcher Konstanten entspricht die 1 bei OpenProcess oder ist das eine undokumentierte Konstante?
Der zweite Parameter bei TerminateProcess ist aber doch nur der Exitcode für den Process. Und wenn man da 1 angibt, dann startet der Explorer nicht neu?
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 29.04.05 09:24
in konstanten gesprochen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function killprocess(pid:dword):boolean; var prochnd: thandle; begin result := false; if pid > 0 then begin procHnd := OpenProcess(PROCESS_TERMINATE, False, pID); if procHnd <> 0 then begin result:= TerminateProcess(procHnd, 1); CloseHandle(ProcHnd); end; end; end; |
Luckie hat folgendes geschrieben: | Der zweite Parameter bei TerminateProcess ist aber doch nur der Exitcode für den Process. Und wenn man da 1 angibt, dann startet der Explorer nicht neu? |
so ist es.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mi 29.06.05 18:53
neue version online: kann nun auch einen prozess per prozessname killen, und listen verdächtiger prozesse anzeigen
downloadlink oben
Zitat: |
pr0cessV13w 1.1 ::by retnyg::
Usage: psview options
if started without parameters, psview lists all running processes.
available options:
/lm:4104 - lists modules of process with ID 4104
/k:4104 - kills process with ID 4104
/k:explorer - kills process explorer.exe
/f:explorer - shows pid of process explorer.exe
/d - detailed: lists all process with modules
/s - suspicious: lists suspicios processes & modules
/vs - very suspicious: lists suspicios processes & modules
to generate a list-file of all your processes, type:
psview /d > list.txt
|
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 29.06.05 19:06
Was sind denn für dich 'verdächtige' Prozesse? Und sind das auch für mich verdächtige Prozesse?
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mi 29.06.05 19:15
Luckie hat folgendes geschrieben: | Was sind denn für dich 'verdächtige' Prozesse? Und sind das auch für mich verdächtige Prozesse? |
verdächtig ist, was nicht von einer als vertrauenswürdig eingestuften firma kommt, bzw keine dateiversionsinformationen bei der dll/exe dabei sind
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 29.06.05 19:35
In meinen Projekten sind meist auch keine Dateiinformationen enthalten, entwerder, weil ich es vergesse oder zu faul bin. Ich halte das nicht für ein sehr aussagekräftiges Kriterium.
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mi 29.06.05 19:44
ich schon, weil ich die prozessnamen meiner eigenen programme und deren dlls, sowie der tools die ich mir irgendwo runtergeladen habe, kenne. das was übrig bleibt sind dann vielleicht noch 20 "schlampig implementierte" exe/dlls (da sieht man dann aber anhand des pfade, z.b. C:\programme\java\jre2.1.4 ob man denen vertrauen kann) - und eventuell vorhandene trojanerprozesse und hooks
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 29.06.05 20:01
Dann würdest du auch einem Programm vertrauen, was in Windows\System32 liegt, weil das ist ja ein natives Windows Verzeichnis?
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mi 29.06.05 20:10
natürlich nicht. wenns ne datei ist die im win-ordner liegt und die im /VS modus angezeigt wird, ist höchste vorsicht geboten (es empfiehlt sich eine suche mit google nach dem dateinamen). entweder ein trojaner oder ein dummes programm, das seine dll da hinkopiert hat (z.b. netlimiter)
die einzige "unsignierte" MS-datei im windows ordner, die standardmässig geladen ist, ist übrigens redmonnt.dll
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Alni
Beiträge: 205
Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
|
Verfasst: Sa 23.07.05 03:57
retnyg hat folgendes geschrieben: |
ausserdem ist das 1 zu 1 der code, den ich mit ollydbg aus der taskmgr.exe raushabe.
|
Bitte versteh mich nicht falsch ich will hier keine Legalitätsdiskussion vom Zaun brechen. Aber dass du damit gegen die EULA von Windows verstoßen hast, sollte dir klar sein. Vor allem das ganze noch in Opensource an zu bieten... Das soll nur ein freundlicher Hinweis darauf sein. Ob du derartige Risiken eingehen willst bleibt dir überlassen. Aber zumindest empfehle ich eine Überarbeitung deines Posts, dann ändere ich den Post hier auch gern wieder. Dann hat keiner was gesehen und keiner was gemerkt
_________________ MfG Alex
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 23.07.05 12:28
Ich glaube kaum, dass der Taskmanager von Windows in Delphi geschrieben ist, also hat schon mal eine Übertragung nach Delphi stattgefunden, desweiteren dürfte er im Disassembler auch nur die API Aufrufe gesehen haben, diese selber aufzurufen kann nicht illegal sein, da sie Windows selber zur Verfügung stellt.
|
|
Alni
Beiträge: 205
Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
|
Verfasst: Sa 23.07.05 13:42
Aber bereits disassemblieren darf er nicht. Wenn die EULA nicht so lang wär würde ich ja die Passage raussuchen, mal sehen. Aber ich lass mich gerne eines besseren Belehren falls ich mich in dem Punkt geirrt habe.
Edit:
EULA hat folgendes geschrieben: | 4. LIMITATIONS ON REVERSE ENGINEERING, DECOMPILATION, AND DISASSEMBLY. You may not reverse engineer, decompile, or disassemble the Software, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation. |
_________________ MfG Alex
Zuletzt bearbeitet von Alni am Sa 23.07.05 14:43, insgesamt 2-mal bearbeitet
|
|
zemy
Beiträge: 207
Win XP Prof.
D7
|
Verfasst: Sa 23.07.05 14:31
Ist es absicht, das ich unter psview /vs auch psview.exe finde?
MfG Zemy
_________________ LifeIsToShortToThinkAboutTheShortness
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 23.07.05 14:53
Nach deutschen Recht ist Disassemblieren erlaubt. Man darf sogar das Kompilat ändern für den privaten gebrauch.
|
|
Alni
Beiträge: 205
Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
|
Verfasst: Sa 23.07.05 15:06
@Luckie könntest du mir bitte eine Quelle dazu angeben, die deine Aussage bestätigt? In der deutschen Version der EULA stehts nämlich genauso drin nur eben wieder mit der Einschränkung falls andere Gesetze gelten. Danke dir schon mal.
_________________ MfG Alex
|
|
|