Datuve :: Forums :: Arhīvs :: Kā izveidot pašrakstītu programmu neredzamu?

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 89

Reģistrētie lietotāji online: 0

Viesi online: 89

Datuve.lv video
Top.LV

Kā izveidot pašrakstītu programmu neredzamu?

Ievietoja: delta128 @ 2006.11.15 18:05  

Kā izveidot pašrakstītu programmu neredzamu - tā, lai tā būtu redzama tikai procesos? Programma izslēdz datoru uzdotā laikā (š.g. pēc 21.00). Kodu rakstīju daļēji pats, daļēji - kā jau redzams - iekopēju no netā atrastās informācijas, jo par to vēl neko nezinu. Vai tas būtu iespējams "ieliekot" līdzīgu koda daļu pa vidu standarta windows loga template kodam? Ja jā, tad kurā vietā? (dev-c++);

#include <windows.h>
#include <time.h>

int main(){
   int timesincemid;
   time_t seconds;
seconds = time (NULL);
timesincemid=((seconds/3600)%24+2);

while(timesincemid<21){
   Sleep(10000);
   seconds = time (NULL);
   timesincemid=((seconds/3600)%24+2);
   };
 
 if (timesincemid>=21) {    
                      HANDLE hToken;                                   // handle to process token
    TOKEN_PRIVILEGES tkp;                                              // pointer to token structure
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES |
    TOKEN_QUERY, &hToken);                                             // Get the LUID for shutdown privilege.              
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
    tkp.PrivilegeCount = 1;                                            // one privilege to set
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;  
                                                                       // Get shutdown privilege for this process.
  AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0);
                                                                       // Cannot test the return value of AdjustTokenPrivileges.  
                if (GetLastError() != ERROR_SUCCESS){}  
                     
                if (!OpenProcessToken(GetCurrentProcess(),
                TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
                {
                return 0;
                }

                ExitWindowsEx(EWX_LOGOFF,0);
}
return 0;      
}