Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, WinApi] Blokada Procesu Przed Zakończeniem

Ostatnio zmodyfikowano 2013-07-05 23:58
Autor Wiadomość
Artekp999
Temat założony przez niniejszego użytkownika
[C++, WinApi] Blokada Procesu Przed Zakończeniem
» 2013-07-05 22:40:37
Witam od razu informuje że nie piszę żadnego wirusa, robaka, keyloggera itp.
Piszę program który ma działać od nowego roku szkolnego w mojej szkole. Ma on na celu nadzorowanie co uczniowie robią na swoich komputerach. Uczniowie pracują na kontach z ograniczeniami. Większość programu już napisałem, teraz zajmuje się zabezpieczeniami. Mianowicie mam pytanie jak zablokować możliwość wyłączenia procesu w menadżerze zadań???

Alternatywnym wyjściem jest ukrycie procesu w menadżerze. Chodzi głównie o tym aby nie można było wyłączyć programu.
P-87115
pekfos
» 2013-07-05 22:47:53
Trochę mało przekonująca historyjka. Poza tym, na czym miałby polegać ten nadzór, skoro to ani keylogger, ani nic podobnego..?
P-87117
Artekp999
Temat założony przez niniejszego użytkownika
» 2013-07-05 22:52:25
Np. analizuje procesy i wyłącza niepotrzebne np. jakieś gry ,łączy się z internetem (i na komendę) włącza wszystkim np. Word 2007 itp.
Program nie może być wykrywany jako wirus itp, bo wtedy nie będzie działał, a bez tego zabezpieczenia każdy będzie go mógł wyłączyć.
P-87120
Elaine
» 2013-07-05 23:44:23
Nie wystarczy uruchomić tego programu jako administrator?
P-87126
Keniger
» 2013-07-05 23:58:39
Powiem ci tak :
Menadżer zadań windows używa funkcji NtQuerySystemInformation do pobrania listy aktywnych procesów.

Używa się jej w następujący sposób:

C/C++
ULONG size;
NtQuerySystemInformation( 5, 0, 0, & size ); // 5 -> pobieramy za pierwszym wywołaniem rozmiar bloku struktur SYSTEM_PROCESS_INFORMATION
BYTE * lpBuffer = new BYTE[ size ];
NtQuerySystemInformation( 5, lpBuffer, size, 0 );
SYSTEM_PROCESS_INFORMATION * s;
s =( PSYSTEM_PROCESS_INFORMATION ) lpBuffer;

while( 1 )
{
    // jakiś kod
   
    if( s->NextEntryOffset == 0 ) // ostatnia struktura tablicy będzie miała NextEntryOffset = 0 wtedy przerywamy
         break;
   
    s =( PSYSTEM_PROCESS_INFORMATION )((( PUCHAR ) s ) + s->NextEntryOffset );
}

NextEntryOffset to rozmiar aktualnej struktury SYSTEM_PROCESS_INFORMATION, jest on różny dla poszczególnych procesów, ponieważ procesy mają różną liczbę wątków, załadowanych modułów..etc bardzo dużo informacji można z tej struktury wyciągnąć

str.h :
http://wklej.to/BswCx

I nasz hook na menadzer :
http://wklej.to/5C57n

Przeanalizuj sobie to :P
P-87127
« 1 »
  Strona 1 z 1