Advertisement
CorrM

Untitled

Dec 28th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. #pragma once
  2. #include <Windows.h>
  3. #include <string>
  4.  
  5. #ifdef UNICODE
  6. #define SetPrivilege SetPrivilegeW
  7. #else
  8. #define SetPrivilege SetPrivilegeA
  9. #endif
  10.  
  11. std::wstring str2wstr(std::string in) { std::wstring out; out.assign(in.begin(), in.end()); return out; }
  12. std::string wstr2str(std::wstring in) { std::string out; out.assign(in.begin(), in.end()); return out; }
  13.  
  14. bool SetPrivilegeW(const LPCWSTR lpszPrivilege, const BOOL bEnablePrivilege) {
  15. TOKEN_PRIVILEGES priv = { 0,0,0,0 };
  16. HANDLE hToken = nullptr;
  17. LUID luid = { 0,0 };
  18. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {
  19. if (hToken)
  20. CloseHandle(hToken);
  21. return false;
  22. }
  23. if (!LookupPrivilegeValueW(nullptr, lpszPrivilege, &luid)) {
  24. if (hToken)
  25. CloseHandle(hToken);
  26. return false;
  27. }
  28. priv.PrivilegeCount = 1;
  29. priv.Privileges[0].Luid = luid;
  30. priv.Privileges[0].Attributes = bEnablePrivilege ? SE_PRIVILEGE_ENABLED : SE_PRIVILEGE_REMOVED;
  31. if (!AdjustTokenPrivileges(hToken, false, &priv, 0, nullptr, nullptr)) {
  32. if (hToken)
  33. CloseHandle(hToken);
  34. return false;
  35. }
  36. if (hToken)
  37. CloseHandle(hToken);
  38. return true;
  39. }
  40.  
  41. bool SetPrivilegeA(const LPCSTR lpszPrivilege, const BOOL bEnablePrivilege) {
  42. TOKEN_PRIVILEGES priv = { 0,0,0,0 };
  43. HANDLE hToken = nullptr;
  44. LUID luid = { 0,0 };
  45. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) {
  46. if (hToken)
  47. CloseHandle(hToken);
  48. return false;
  49. }
  50. if (!LookupPrivilegeValueA(nullptr, lpszPrivilege, &luid)) {
  51. if (hToken)
  52. CloseHandle(hToken);
  53. return false;
  54. }
  55. priv.PrivilegeCount = 1;
  56. priv.Privileges[0].Luid = luid;
  57. priv.Privileges[0].Attributes = bEnablePrivilege ? SE_PRIVILEGE_ENABLED : SE_PRIVILEGE_REMOVED;
  58. if (!AdjustTokenPrivileges(hToken, false, &priv, 0, nullptr, nullptr)) {
  59. if (hToken)
  60. CloseHandle(hToken);
  61. return false;
  62. }
  63. if (hToken)
  64. CloseHandle(hToken);
  65. return true;
  66. }
  67.  
  68. bool WriteDataToFile(const UCHAR pBuffer[], const DWORD dwSize, const std::string& strFileName, const DWORD dwCreationDisposition = CREATE_NEW)
  69. {
  70. const auto hFile = CreateFileA(strFileName.c_str(), GENERIC_READ | GENERIC_WRITE, 0, nullptr, dwCreationDisposition, FILE_ATTRIBUTE_NORMAL, nullptr);
  71. if (hFile == INVALID_HANDLE_VALUE) return false;
  72. DWORD dwNumberOfBytesWritten = NULL;
  73. const auto bWriteFile = WriteFile(hFile, pBuffer, dwSize, &dwNumberOfBytesWritten, nullptr);
  74. CloseHandle(hFile);
  75. return !(!bWriteFile || dwNumberOfBytesWritten != dwSize);
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement