Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Lập trình VC++ | Bảo Vệ ENDTASK tại sao không chạy tốt

  1. #1
    Ngày gia nhập
    12 2008
    Bài viết
    198

    Angry Lập trình VC++ | Bảo Vệ ENDTASK tại sao không chạy tốt

    PHP Code:
    #include <windows.h>
     #include <stdio.h>
     #include <aclapi.h>
     
     
    BOOL CreateProtectedProcess(
     
    LPCTSTR lpApplicationName,                 // name of executable module
     
    LPTSTR lpCommandLine,                      // command line string   
     
    DWORD dwCreationFlags                      // creation flags
     
    );
     
     
    int APIENTRY WinMain(HINSTANCE hInstance,
                         
    HINSTANCE hPrevInstance,
                         
    LPSTR     lpCmdLine,
                         
    int       nCmdShow)
     {
         
    CreateProtectedProcess("c:\\windows\\system32\\calc.exe",NULL);
         return 
    0;
     }
     
     
    BOOL CreateProtectedProcess(
                                 
    LPCTSTR lpApplicationName,                 // name of executable module
                                 
    LPTSTR lpCommandLine,                      // command line string   
                                 
    DWORD dwCreationFlags                      // creation flags
                                 
    )
     {
         
    DWORD dwRes;
         
    PSID pEveryoneSID NULLpAdminSID NULL;
         
    PACL pACL NULL;
         
    PSECURITY_DESCRIPTOR pSD NULL;
         
    EXPLICIT_ACCESS ea[2];
         
    SID_IDENTIFIER_AUTHORITY SIDAuthWorld SECURITY_WORLD_SID_AUTHORITY;
         
    SID_IDENTIFIER_AUTHORITY SIDAuthNT SECURITY_NT_AUTHORITY;
         
    SECURITY_ATTRIBUTES sa;

         
    // Create a well-known SID for the Everyone group.

         
    if(! AllocateAndInitializeSid( &SIDAuthWorld1,
             
    SECURITY_WORLD_RID,
             
    0000000,
             &
    pEveryoneSID) ) 
         {    
             
    MessageBoxA(0,"ksd","ks",0);
             return 
    FALSE;
         }

         
    // Initialize an EXPLICIT_ACCESS structure for an ACE.
         // The ACE will allow Everyone read access to the object.

         
    ZeroMemory(&easizeof(EXPLICIT_ACCESS));
         
    ea[0].grfAccessPermissions GENERIC_READ;
         
    ea[0].grfAccessMode DENY_ACCESS;
         
    ea[0].grfInheritanceNO_INHERITANCE;
         
    ea[0].Trustee.TrusteeForm TRUSTEE_IS_SID;
         
    ea[0].Trustee.TrusteeType TRUSTEE_IS_WELL_KNOWN_GROUP;
         
    ea[0].Trustee.ptstrName  = (LPTSTRpEveryoneSID;
         
    // Create a SID for the BUILTIN\Administrators group.
         
    if(! AllocateAndInitializeSid( &SIDAuthNT2,
             
    SECURITY_BUILTIN_DOMAIN_RID,
             
    DOMAIN_ALIAS_RID_ADMINS,
             
    000000,
             &
    pAdminSID) ) 
         {    
             goto 
    Cleanup
         }
         
    // Initialize an EXPLICIT_ACCESS structure for an ACE.
         // The ACE will allow the Administrators group full access to the key.
         
    ea[1].grfAccessPermissions GENERIC_READ;
         
    ea[1].grfAccessMode DENY_ACCESS;
         
    ea[1].grfInheritanceNO_INHERITANCE;
         
    ea[1].Trustee.TrusteeForm TRUSTEE_IS_SID;
         
    ea[1].Trustee.TrusteeType TRUSTEE_IS_GROUP;
         
    ea[1].Trustee.ptstrName  = (LPTSTRpAdminSID;
         
    // Create a new ACL that contains the new ACEs.
         
    dwRes SetEntriesInAcl(2eaNULL, &pACL);
         if (
    ERROR_SUCCESS != dwRes
         {    
             goto 
    Cleanup;
         }
         
    // Initialize a security descriptor.  
         
    pSD = (PSECURITY_DESCRIPTORLocalAlloc(LPTR
             
    SECURITY_DESCRIPTOR_MIN_LENGTH); 
         if (
    pSD == NULL
         {     
             goto 
    Cleanup
         } 
         if (!
    InitializeSecurityDescriptor(pSDSECURITY_DESCRIPTOR_REVISION)) 
         {      
             goto 
    Cleanup
         } 
         
    // Add the ACL to the security descriptor. 
         
    if (!SetSecurityDescriptorDacl(pSDTRUE,     // fDaclPresent flag   
             
    pACLFALSE))   // not a default DACL 
         
    {      
             goto 
    Cleanup
         } 
         
    // Initialize a security attributes structure.
         
    sa.nLength sizeof (SECURITY_ATTRIBUTES);
         
    sa.lpSecurityDescriptor pSD;
         
    sa.bInheritHandle FALSE;

         
    // Use the security attributes to set the security descriptor 
         // when you create a key.

         
    PROCESS_INFORMATION pi
         
    STARTUPINFO si;
         
    memset(&pi,0,sizeof(pi));
         
    memset(&si,0,sizeof(si));
         
    si.cb sizeof(si);
         
    si.wShowWindow SW_SHOW;
         
    CreateProcessA(lpApplicationName,lpCommandLine, &sa,  &sa,dwCreationFlags,0,0,0,&si,&pi);
         
    // clean up data
    Cleanup:
         if (
    pEveryoneSID)     FreeSid(pEveryoneSID);
         if (
    pAdminSID)         FreeSid(pAdminSID);
         if (
    pACL)         LocalFree(pACL);
         if (
    pSD)         LocalFree(pSD);
         return 
    TRUE;
     } 
    mình có thử chạy cái này nhưng có vẻ nó không bảo vệ được process
    http://www.hvaonline.net/hvaonline/posts/list/82.hva

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình thấy taskmanager ko kill được process này, vậy là đúng rồi mà bạn ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    12 2008
    Bài viết
    198

    Taskmanager Kill tốt cái thằng Calc.exe mà bạn,mình vừa ENDTASK là nó toi luôn nè

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi Cpro Xem bài viết
    Taskmanager Kill tốt cái thằng Calc.exe mà bạn,mình vừa ENDTASK là nó toi luôn nè
    Bạn cần phân biệt EndTask và EndProcess. Cái này sẽ bảo vệ process ko bị kill. Bạn endtask thì cũng tương đương nhấn nút close đóng cửa sổ của chương trình calc lại rồi. Chương trình calc sau khi nhận message nó sẽ tự close. Bạn phải thử endprocess mới biết.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    12 2008
    Bài viết
    198

    thì dù mình có ENDTASK hay ENDPROCESS thì nó cũng died mà bạn ,hic hic

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Lập trình VC++ | Bảo Vệ ENDTASK tại sao không chạy tốt

    Mình đã thử chạy trên máy mình và thấy EndProcess sẽ bị báo access denied
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    11 2010
    Bài viết
    1

    Code của bạn chạy đúng nhưng bạn vẫn end calc.exe được có thể là do account của bạn chạy trên quyền admin.Quyền admin vẫn end được.Bạn thử skill cals.exe bằng quyền user thử.Khi đó nó sẽ ko cho skill.

Các đề tài tương tự

  1. MS SQL Lỗi SQL Server 2005 express chạy chậm khi chạy report?
    Gửi bởi dongtrien trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 26-03-2013, 09:12 PM
  2. Q-Smart S15 thiết kế chắc chắn chạy android giá rẻ
    Gửi bởi 16thang4 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-08-2012, 04:07 PM
  3. Windows 7 EndTask trong Task Manager
    Gửi bởi gianghoplus trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 16
    Bài viết cuối: 15-08-2010, 07:21 PM
  4. Lập trình VC++ | Bảo Vệ ENDTASK tại sao không chạy tốt
    Gửi bởi Cpro trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 10-04-2009, 11:31 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn