Español
Stammtisch & Café

Rätsel: Big Brother is watching you...

 
- Página 1 -


Meldung: Microsoft ha de Windows2000 el Meldepflicht para Prozesse eingeführt! Jeder User-Prozess ha gefälligst en Anfrage seinen genauen Aufenthaltsort unverzüglichst anzugeben! En Bedarf puede sämtliche Rechte entzogen y Aufenthaltsort polizeilich festgesetzt voluntad!

Im Anhang befindet se a diesem Thema una kleines Polizeiprogramm.

Mi Cuestión: Como va el?

Als Belohnung fürs Raten hay schönen leckeren Ver código fuente...

609 kB
Kurzbeschreibung: Big Brother - Meldepflicht para Prozesse Versión 3
Hochgeladen:10.10.2006
Ladeanzahl88
Descargar
 
09.10.2006  
 



 
- Página 4 -


Como ya he dicho, MS verrät como no alles. Der PEB ha encima 50 Members.
 
11.10.2006  
 




Sebastian
König
[quote:29b2851165]Como ya he dicho, MS verrät como no alles. Der PEB ha encima 50 Members. [/quote:29b2851165]¿Te ha así ahora el ganzen Elemente en el el Reserved3-Array oder todavía weitere después de SessionId?

Pensé eigentlich, uno podría todos ahora lösen, sin Google a bemühen...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.10.2006  
 



Hast Recht, en meiner Versión son el Arrays aufgeschlüsselt. Das qué du suchst, dürfte also innerhalb des Arrays Reserved2 mentira. Ohne una bessere Documentación kommst du como no más - y el kommt no de Microsoft.

Búsqueda veces Internet después de PEB ReadImageFileExecOptions.
 
11.10.2006  
 



 
- Página 5 -



Sebastian
König
Also schön, en undocumented.ntinternals.net Yo ahora una Struktur nombre RTL_USER_PROCESS_PARAMETERS gefunden, el bastante vielversprechend aussieht...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.10.2006  
 



Bingo!
 
11.10.2006  
 




Sebastian
König
Code es igual fertig - gerade gab lo primero Mittagessen...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.10.2006  
 



Klasse! Bin gespannt.
 
11.10.2006  
 




Sebastian
König
Ok, hier mi fertige Solución:
KompilierenMarcaSeparación
!$H windows.ph
Cls
TODO: SeDebugPrivilege aktivieren, um vielleicht noch besseren Zugriff zu haben
declare id&
print "ID (current =", ~GetCurrentProcessId();"):",
input id&
declare hProcess&
let hProcess& = ~OpenProcess(~PROCESS_ALL_ACCESS,0,id&)

ifnot hProcess&

    print "Prozess konnte nicht geöffnet werden :-("
    print "Taste zum Beenden!"
    WaitKey
    end

endif

print "Handle:",hProcess&
print "-------------------"
declare pMem#,size&
dim pMem#,24
External("NTDLL.DLL","ZwQueryInformationProcess",hProcess&,0,pMem#,24,Addr(size&))
declare peb&
peb& = long(pMem#,4)
print "peb&:",peb&
declare upp&
~ReadProcessMemory(hProcess&,peb&+16,Addr(upp&),4,0)
print "upp&:",upp&
print "-------------------"
declare pDir#
dim pDir#,8 UNICODE_STRING
~ReadProcessMemory(hProcess&,upp&+36,pDir#,SizeOf(pDir#),0)
declare dir&,len&
len& = word(pDir#,0)
dir& = long(pDir#,4)
print "Länge:",len&
print "Adresse:",dir&
dispose pDir#
print "-------------------"
Jetzt String wirklich lesen:
dim pDir#,len&
~ReadProcessMemory(hProcess&,dir&,pDir#,SizeOf(pDir#),0)
color 12,15
TODO: Unicode/Wide-String vernünftig nach ANSI konvertieren:

whileloop 0,len&-1,2

    print chr$(byte(pDir#,&loop));

wend

dispose pDir#
dispose pMem#
~CloseHandle(hProcess&)
color 0,15
print
print
print "Taste zum Beenden!"
WaitKey
ref='./../../funktionsreferenzen/XProfan/end/'>end
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.10.2006  
 




Sebastian
König
Hier ni Ergänzung, el uno en lugar de el ersten TODO-Línea einfügen kann:
KompilierenMarcaSeparación
!declare hToken&
~OpenProcessToken(~GetCurrentProcess(),~TOKEN_ADJUST_PRIVILEGES,Addr(hToken&))

if hToken& <> 0

    declare priv#
    dim priv#,16

    if External("ADVAPI32.DLL","LookupPrivilegeValueA","","SeDebugPrivilege",priv#+4) <> 0

        long priv#,0 = 1
        long priv#,12 = ~SE_PRIVILEGE_ENABLED
        External("ADVAPI32.DLL","AdjustTokenPrivileges",hToken&,0,priv#,SizeOf(priv#),0,0)

    endif

    dispose priv#
    ~CloseHandle(hToken&)

endif


Aud mi sistema kann Yo así entonces como Administrator así bastante cada Prozess abierto y Daten auslesen.
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.10.2006  
 



Como puede ser sólo sagen: Gelöst!

SeDebugPrivilege necesidad du como no a aktivieren, aber ausreichen (Zugriffs-)Rechte en el Prozess muß uno haben. Ausreichend Rechte ha eigentlich siempre el Sistema Account - una Start des Programmes en diesem Account genügt also en alles auslesen a puede.

Hier mein Ver código fuente dazu:
KompilierenMarcaSeparación
Def @ZwQueryInformationProcess(5) !"NTDLL","ZwQueryInformationProcess"
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess"
DEF @LsaNtStatusToWinError(1) !"advapi32","LsaNtStatusToWinError"
DEF @FormatMessage(7) !"KERNEL32","FormatMessageA"
Def @Toolhelp32ReadProcessMemory(5) !"KERNEL32","Toolhelp32ReadProcessMemory"
DEF @GetCurrentProcessId(0) !"kernel32","GetCurrentProcessId"
DEF @MultiByteToWideChar(6) !"kernel32","MultiByteToWideChar"
DEF @GetACP(0) !"kernel32","GetACP"
DEF @GetLastError(0) !"kernel32","GetLastError"
DEF @WideCharToMultiByte(8) !"kernel32","WideCharToMultiByte"
DEF @OpenProcess(3) !"KERNEL32","OpenProcess"
DEF @CloseHandle(1) !"kernel32","CloseHandle"
DEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
Def @CreateToolhelp32Snapshot(2) !"kernel32","CreateToolhelp32Snapshot"
Def @Process32First(2) !"kernel32","Process32First"
Def @Process32Next(2) !"kernel32","Process32Next"
DEF @SetLastError(1) !"kernel32","SetLastError"

IF @VAL($WINVER)<5

    @Messagebox("In dieser Windowsversion gibt es noch keine Meldepflicht!","Info",64)
    END

endif

Declare P_INFO#,Read&,Fehler&,PEB&,P_Handle&,Button&,PID$,PR_ID&
Declare AHGETERROR_Buffer#,AHRückgabe&,AHGETERROR_Buffer$,ENV&,READ&,UNICODE#,U_String#,M_String#
Declare Prozesstreeview&,TV_INSERT#,TV_TEXT#,TV_ITEM#,PROCESSENTRY#
Declare hSnapshot&,Result_HL&,Prozess_name$,SEL_ITEM&
Struct LSA_UNICODE_STRING=Length%,MaximumLength%,Buffer&
Struct PROCESSENTRY32=dwSize&,cntUsage&,th32ProcessID&,th32DefaultHeapID&,th32ModuleID&,cntThreads&,th32ParentProcessID&,pcPriClassBase&,dwPrFlags&,szExeFile$(262)
DIM TV_INSERT#,48
DIM TV_TEXT#,513
DIM TV_ITEM#,40
Windowstyle 31+512
Windowtitle "Der gläserne Prozess - Big Brother is watching you!"
Window 0,0-640,440
Usermessages $10
Print "Dieses Programm liest die Current Directory eines fremden Prozesses aus."
Color 12,15
Print "Bitte jetzt auf einen Prozess im Treeview klicken!"
LET Prozesstreeview&=@control("SystreeView32","Prozessliste",$40000000+$10000000+$800000+$200000+$0002+$0010+$0020+$10000+$800,20+10,20+240,360,100,%HWND,2697,%Hinstance)
Usecursor 2
Enablewindow Prozesstreeview&,0
Dim PROCESSENTRY#,PROCESSENTRY32
Clear PROCESSENTRY#
Let PROCESSENTRY#.dwSize&=298
LET hSnapshot&=@CreateToolhelp32Snapshot($2,0)

IfNot hSnapshot&=-1

    LET Result_HL&=@Process32First(hSnapshot&,PROCESSENTRY#)

    While Result_HL&=1

        LET Prozess_name$=PROCESSENTRY#.szExeFile$
        LET Prozess_ID$=@STR$(PROCESSENTRY#.th32ProcessID&)
        TVINSERT 0,0,0,Prozess_name$,$0,PROCESSENTRY#.th32ProcessID&
        @sendmessage(Prozesstreeview&,$1100,0,TV_INSERT#)
        LET Result_HL&=@Process32Next(hSnapshot&,PROCESSENTRY#)

    EndWhile

    @CloseHandle(hSnapshot&)

endif

Dispose PROCESSENTRY#
Usecursor 0
Enablewindow Prozesstreeview&,1

While %UMESSAGE<>$10

    Waitinput

    IF SEL_ITEM&<>@Sendmessage(Prozesstreeview&,$110A,$9,0)

        LET SEL_ITEM&=@Sendmessage(Prozesstreeview&,$110A,$9,0)

        IF Sel_Item&<>0

            CLEAR TV_ITEM#
            CLEAR TV_TEXT#
            LONG TV_ITEM#,0=$11 | $2 | $4
            LONG TV_ITEM#,20=500
            LONG TV_ITEM#,16=TV_TEXT#
            LONG TV_ITEM#,4=SEL_ITEM&
            @sendmessage(Prozesstreeview&,$110C,0,TV_ITEM#)
            LET PR_ID&=@LONG(TV_ITEM#,36)
            LET PID$=@STRING$(TV_TEXT#,0)
            Read_C_D PR_ID&

        Endif

    endif

wend

Dispose TV_INSERT#
Dispose TV_TEXT#
Dispose TV_ITEM#
END

PROC TVINSERT

    Clear TV_INSERT#
    String TV_TEXT#,0=@$(4)      Der Text im Label
    long TV_INSERT#,0=@&(1)          TVins-Parent
    long TV_INSERT#,4=$FFFF0002          TVi_Last
    long TV_INSERT#,8=$0001+$0002+$0020+$0004+$0008+$0010
    long TV_INSERT#,16=@&(5)          State
    long TV_INSERT#,20=$0001+$0002+$0004+$0008+$0010+$0020+$0040+$0080+$0F00+$F000 StateMAsk
    long TV_INSERT#,24=TV_TEXT#   Adress of Label
    long TV_INSERT#,28=$FFFF
    long TV_INSERT#,32=@&(2)         Image          z.B Ordner
    long TV_INSERT#,36=@&(3)         Selected Image z.B geöffneter Ordner
    long TV_INSERT#,44=@&(6)          Lparam

ENDPROC

Proc Read_C_D

    Parameters PID&
    DIM P_INFO#,24
    @SetLastError(0)
    LET P_Handle&=@OpenProcess($400 | $10,0,PID&)
    LET AHRückgabe&=@GetLastError()

    IF P_Handle&<>0

        @SetLastError(0)
        Fehler&=@ZwQueryInformationProcess(@GetCurrentProcess(),0,P_Info#,24,@ADDR(Read&))

        IF Fehler&<>0

            LET AHRückgabe&=@LsaNtStatusToWinError(Fehler&)
            Fehlercode_bestimmen
            Addstring "fehlercode beim Auslesen: "+AHGETERROR_Buffer$

        endif

        IF Fehler&=0

            LET PEB&=@Long(P_Info#,4)
            LET AHRückgabe&=@LsaNtStatusToWinError(Fehler&)
            FEHLER&=@Toolhelp32ReadProcessMemory(PID&,PEB&+$10,@ADDR(ENV&),4,@ADDR(READ&))
            DIM UNICODE#,LSA_UNICODE_STRING
            FEHLER&=@Toolhelp32ReadProcessMemory(PID&,ENV&+36,UNICODE#,8,@ADDR(READ&))
            DIM U_STRING#,UNICODE#.MaximumLength%+3
            Clear U_STRING#
            FEHLER&=@Toolhelp32ReadProcessMemory(PID&,UNICODE#.Buffer&,U_STRING#,UNICODE#.MaximumLength%,@ADDR(READ&))
            DIM M_STRING#,UNICODE#.MaximumLength%+3
            Clear M_STRING#
            Let Fehler&=@WideCharToMultiByte(@GetACP(),0,U_STRING#,-1,M_STRING#,UNICODE#.MaximumLength%,0,0)

            IF @String$(M_String#,0)<>""

                Addstring "Prozess "+PID$+" hält sich gerade hier auf: "+@String$(M_String#,0)

            else

                ADDSTRING "Der Prozess "+PID$+" ist verstorben oder es handelt sich um einen Systemprozess!"

            endif

            Dispose M_String#
            Dispose U_STRING#
            Dispose Unicode#

        endif

        @CloseHandle(P_Handle&)
        @Editbox("PEB ermiiteln",1)
        ADDSTRING ""

    Else

        Fehlercode_bestimmen
        Addstring "Fehlercode beim Öffnen nin "+PID$+": "+AHGETERROR_Buffer$
        ADDSTRING ""

    endif

    Dispose P_INFO#

endproc

Proc Fehlercode_bestimmen

    DIM AHGETERROR_Buffer#,32000
    @FormatMessage($1000,0,AHRückgabe&,0,AHGETERROR_Buffer#,32000,0) Wandelt Fehlercode in Landesspezifische Message um.
    Let AHGETERROR_Buffer$=@trim$(@STRING$(AHGETERROR_Buffer#,0)s=s2>)
    Disponer AHGETERROR_Buffer#

ENDPROC


Como du hier äußerst gute Arbeit geleistet hast, schicke Yo dir todavía algo mehr a, como Yo dir versprochen habe.

Wer sonst todavía a el Infos a ZwQueryInformationProcess y el hier verwendeten Estructuras ha (y aquí teilgenommen ha), escribir me Por favor, una Kurze Mail aquí en Postfach Comunidad - Yo schicke entonces el Sachen a.

Saludo

Andreas
 
11.10.2006  
 




Sebastian
König
[quote:7faee3478a]Como puede ser sólo sagen: Gelöst![/quote:7faee3478a]
[quote:7faee3478a]SeDebugPrivilege necesidad du como no a aktivieren, aber ausreichen (Zugriffs-)Rechte en el Prozess muß uno haben. Ausreichend Rechte ha eigentlich siempre el Sistema Account - una Start des Programmes en diesem Account genügt also en alles auslesen a puede.[/quote:7faee3478a]
Ok, con Ausführen como... en el Explorer Yo el allerdings no hinbekommen. Mit SeDebugPrivilege funktioniert lo aber auch wirklich wunderbar - lediglich beim Prozess Sistema (PID 4) podría Yo el Directorio no auslesen - obwohl OpenProcess incluso una Handle geliefert ha...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.10.2006  
 



Mit Sistema es el una Sache para se. Microsoft läßt se como no gerne en el Karten schauen - el Handle de Sistema es para manche APIs no a gebrauchen.

[quote:c63c174a6b]
Ok, con Ausführen como... en el Explorer Yo el allerdings no hinbekommen. Mit SeDebugPrivilege funktioniert lo aber auch wirklich wunderbar - lediglich beim Prozess Sistema (PID 4) podría Yo el Directorio no auslesen - obwohl OpenProcess incluso una Handle geliefert ha...
[/quote:c63c174a6b]
Como scheint se bajo XP qué geändert a haben.
 
11.10.2006  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

4.667 Views

Untitledvor 0 min.
Ernst12.05.2014
iF07.07.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie