| 
| Autor | Beitrag |  
| retnyg 
          Beiträge: 2754
 
 SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
 Delphi 5, Delphi 7
 
 | 
Verfasst: Do 28.04.05 23: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 16:34, insgesamt 1-mal bearbeitet
 |  |  |  
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 29.04.05 00: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 00: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 00: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 00: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 01: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 08: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 17: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 18: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 18: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 18: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 18: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 19: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 19: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 02: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 11: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 12: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 13:43, insgesamt 2-mal bearbeitet
 |  |  |  
| zemy 
          Beiträge: 207
 
 Win XP Prof.
 D7
 
 | 
Verfasst: Sa 23.07.05 13: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 13: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 14: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
 |  |  |  |