Programming Discussion p8
Số trang: 4
Loại file: pdf
Dung lượng: 120.41 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Mã bảo vệ chương trình không bị End Task trong Windows Đoạn code sau đây sử dụng các tính năng sercurity object trên Win2K/XP. Một process cần được bảo vệ sẽ được tạo ra với quyền truy cập được hạn chế bằng cách đặt thuộc tính SECURITY_ATTRIBUTES trong khi gọi hàn CreateProcess để tạo process được bảo vệ! Code: // SecurityObj.cpp
Nội dung trích xuất từ tài liệu:
Programming Discussion p8Mã bảo vệ chương trình không bị End Task trong WindowsĐoạn code sau đây sử dụng các tính năng sercurity object trênWin2K/XP. Một process cần được bảo vệ sẽ được tạo ra với quyềntruy cập được hạn chế bằng cách đặt thuộc tính SECURITY_ATTRIBUTEStrong khi gọi hàn CreateProcess để tạo process được bảo vệ!Code:// SecurityObj.cpp : Defines the entry point for the application.//#include stdafx.h#include #include #include BOOL CreateProtectedProcess(LPCTSTR lpApplicationName, // name of executable moduleLPTSTR lpCommandLine, // command line stringDWORD dwCreationFlags // creation flags);int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){CreateProtectedProcess(c:\winnt\system32\calc.exe, NULL, 0 );return 0;}BOOL CreateProtectedProcess(LPCTSTR lpApplicationName, // name of executable moduleLPTSTR lpCommandLine, // command line stringDWORD dwCreationFlags // creation flags){DWORD dwRes;PSID pEveryoneSID = NULL, pAdminSID = 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( &SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSID) ){ return FALSE;}// Initialize an EXPLICIT_ACCESS structure for an ACE.// The ACE will allow Everyone read access to the object.ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS));ea[0].grfAccessPermissions = GENERIC_READ;ea[0].grfAccessMode = DENY_ACCESS;ea[0].grfInheritance= NO_INHERITANCE;ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;ea[0].Trustee.ptstrName = (LPTSTR) pEveryoneSID;// Create a SID for the BUILTIN\Administrators group.if(! AllocateAndInitializeSid( &SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &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].grfInheritance= NO_INHERITANCE;ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID;ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP;ea[1].Trustee.ptstrName = (LPTSTR) pAdminSID;// Create a new ACL that contains the new ACEs.dwRes = SetEntriesInAcl(2, ea, NULL, &pACL);if (ERROR_SUCCESS != dwRes){ goto Cleanup;}// Initialize a security descriptor.pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH);if (pSD == NULL){ goto Cleanup;}if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION)){ goto Cleanup;}// Add the ACL to the security descriptor.if (!SetSecurityDescriptorDacl(pSD, TRUE, // fDaclPresent flag pACL, FALSE)) // 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(π,0,sizeof(pi));memset(&si,0,sizeof(si));si.cb = sizeof(si);si.wShowWindow = SW_SHOW;CreateProcess(lpApplicationName,lpCommandLine, &sa,&sa,dwCreationFlags,0,0,0,&si,π);// clean up dataCleanup: if (pEveryoneSID) FreeSid(pEveryoneSID); if (pAdminSID) FreeSid(pAdminSID); if (pACL) LocalFree(pACL); if (pSD) LocalFree(pSD);return TRUE;}ngoalong(HVA)
Nội dung trích xuất từ tài liệu:
Programming Discussion p8Mã bảo vệ chương trình không bị End Task trong WindowsĐoạn code sau đây sử dụng các tính năng sercurity object trênWin2K/XP. Một process cần được bảo vệ sẽ được tạo ra với quyềntruy cập được hạn chế bằng cách đặt thuộc tính SECURITY_ATTRIBUTEStrong khi gọi hàn CreateProcess để tạo process được bảo vệ!Code:// SecurityObj.cpp : Defines the entry point for the application.//#include stdafx.h#include #include #include BOOL CreateProtectedProcess(LPCTSTR lpApplicationName, // name of executable moduleLPTSTR lpCommandLine, // command line stringDWORD dwCreationFlags // creation flags);int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){CreateProtectedProcess(c:\winnt\system32\calc.exe, NULL, 0 );return 0;}BOOL CreateProtectedProcess(LPCTSTR lpApplicationName, // name of executable moduleLPTSTR lpCommandLine, // command line stringDWORD dwCreationFlags // creation flags){DWORD dwRes;PSID pEveryoneSID = NULL, pAdminSID = 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( &SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSID) ){ return FALSE;}// Initialize an EXPLICIT_ACCESS structure for an ACE.// The ACE will allow Everyone read access to the object.ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS));ea[0].grfAccessPermissions = GENERIC_READ;ea[0].grfAccessMode = DENY_ACCESS;ea[0].grfInheritance= NO_INHERITANCE;ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;ea[0].Trustee.ptstrName = (LPTSTR) pEveryoneSID;// Create a SID for the BUILTIN\Administrators group.if(! AllocateAndInitializeSid( &SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &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].grfInheritance= NO_INHERITANCE;ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID;ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP;ea[1].Trustee.ptstrName = (LPTSTR) pAdminSID;// Create a new ACL that contains the new ACEs.dwRes = SetEntriesInAcl(2, ea, NULL, &pACL);if (ERROR_SUCCESS != dwRes){ goto Cleanup;}// Initialize a security descriptor.pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH);if (pSD == NULL){ goto Cleanup;}if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION)){ goto Cleanup;}// Add the ACL to the security descriptor.if (!SetSecurityDescriptorDacl(pSD, TRUE, // fDaclPresent flag pACL, FALSE)) // 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(π,0,sizeof(pi));memset(&si,0,sizeof(si));si.cb = sizeof(si);si.wShowWindow = SW_SHOW;CreateProcess(lpApplicationName,lpCommandLine, &sa,&sa,dwCreationFlags,0,0,0,&si,π);// clean up dataCleanup: if (pEveryoneSID) FreeSid(pEveryoneSID); if (pAdminSID) FreeSid(pAdminSID); if (pACL) LocalFree(pACL); if (pSD) LocalFree(pSD);return TRUE;}ngoalong(HVA)
Tìm kiếm theo từ khóa liên quan:
máy tính mạng máy tính internet phần mềm ứng dụng lập trình dữ liệu SQL PHP AutoITGợi ý tài liệu liên quan:
-
Giáo án Tin học lớp 9 (Trọn bộ cả năm)
149 trang 246 0 0 -
Ngân hàng câu hỏi trắc nghiệm môn mạng máy tính
99 trang 235 1 0 -
47 trang 235 3 0
-
Đề cương chi tiết học phần Thiết kế và cài đặt mạng
3 trang 229 0 0 -
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 2
102 trang 227 0 0 -
Bài giảng: Lịch sử phát triển hệ thống mạng
118 trang 227 0 0 -
80 trang 197 0 0
-
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 1
122 trang 196 0 0 -
122 trang 191 0 0
-
Giáo trình môn học/mô đun: Mạng máy tính (Ngành/nghề: Quản trị mạng máy tính) - Phần 1
68 trang 183 0 0