__Genius__
دوشنبه 23 شهریور 1388, 21:59 عصر
سلام دوستان ، خسته نباشيد .
متاسفانه من هنگام خوندن کتاب ++Windows Via C/C متوجه اين قسمت کد نشدم ، اگه کسی از دوستان لطف کنه توضيحی در مورد کدها بده ممنون ميشم .
#include "stdafx.h"
#include <windows.h>
#include "toolhelp.h"
#include "CmnHdr.h"
#include <stdarg.h>
#include <stdio.h>
#include "Resource.h"
#include <windowsx.h>
#include <winternl.h>
#include <aclapi.h>
#include <shlwapi.h>
#include <shlobj.h>
#include <AclApi.h>
#include <tchar.h>
#include <Strsafe.h>
#pragma comment (lib,"shlwapi.lib")
#pragma comment (lib,"shell32.lib")
TOKEN_ELEVATION_TYPE s_elevationType = TokenElevationTypeDefault;
BOOL s_bIsAdmin = FALSE;
const int s_cchAddress = sizeof(PVOID) * 2 ;
void AddText(HWND hwnd,PCTSTR pszFormat,...)
{
va_list argList;
va_start(argList,pszFormat);
TCHAR sz[20*1024];
Edit_GetText(hwnd,sz,_countof(sz)) ;
_vstprintf_s(_tcschr(sz,TEXT('\0')),_countof(sz) - _tcslen(sz),pszFormat,argList);
Edit_SetText(hwnd,sz);
va_end(argList);
}
BOOL GetProcessIntegrityLevel(HANDLE hProcess,PDWORD pIntegrityLevel,PDWORD pPolicy,PDWORD pResourceIntgrityLevel,PDWORD pResourcePolicy){
HANDLE hToken = NULL ;
if(!OpenProcessToken(hProcess,TOKEN_READ,&hToken)){
return(FALSE) ;
}
BOOL bReturn = FALSE;
DWORD dwNeededSize = 0;
if(!GetTokenInformation(hToken,TokenIntegrityLevel ,NULL,0,&dwNeededSize)){
PTOKEN_MANDATORY_LABEL pTokenInfo = NULL ;
if(GetLastError() == ERROR_INSUFFICIENT_BUFFER){
pTokenInfo = (PTOKEN_MANDATORY_LABEL)LocalAlloc(0,dwNeededSize) ;
if(pTokenInfo != NULL){
if(GetTokenInformation(hToken,TokenIntegrityLevel, pTokenInfo,dwNeededSize,&dwNeededSize)){
*pIntegrityLevel = *GetSidSubAuthority(pTokenInfo->Label.Sid,(*GetSidSubAuthorityCount(pTokenInfo->Label.Sid)-1));
bReturn = TRUE;
}
LocalFree(pTokenInfo);
}
}
}
if(bReturn){
*pPolicy = TOKEN_MANDATORY_POLICY_OFF;
dwNeededSize = sizeof(DWORD) ;
GetTokenInformation(hToken,TokenMandatoryPolicy,pP olicy,dwNeededSize,&dwNeededSize) ;
}
*pResourceIntgrityLevel = 0 ;
*pResourcePolicy = 0 ;
PACL pSACL = NULL ;
PSECURITY_DESCRIPTOR pSD = NULL ;
DWORD dwResult = ERROR_SUCCESS ;
if(hToken != NULL){
dwResult = GetSecurityInfo(hProcess,SE_KERNEL_OBJECT,LABEL_SE CURITY_INFORMATION,NULL,NULL,NULL,&pSACL,&pSD) ;
if(dwResult == ERROR_SUCCESS)
{
if(pSACL != NULL){
SYSTEM_MANDATORY_LABEL_ACE* pACE = NULL ;
if((pSACL->AceCount > 0) && (GetAce(pSACL,0,(PVOID*)&pACE))){
if(pACE != NULL){
SID* pSID = (SID*)(&pACE->SidStart) ;
*pResourceIntgrityLevel = pSID->SubAuthority[0];
*pResourcePolicy = pACE->Mask ;
}
}
}
}
if(pSD != NULL) LocalFree(pSD);
}
CloseHandle(hToken) ;
return (bReturn);
}
int WINAPI _tWinMain(HINSTANCE hInstanceExe, HINSTANCE, PTSTR pszCmdLine, int)
{
return 0;
}
اين قطعه کد فهمش برام خيلی مهم هست ، ممنون ميشم راهنمائي کنيد .
متاسفانه من هنگام خوندن کتاب ++Windows Via C/C متوجه اين قسمت کد نشدم ، اگه کسی از دوستان لطف کنه توضيحی در مورد کدها بده ممنون ميشم .
#include "stdafx.h"
#include <windows.h>
#include "toolhelp.h"
#include "CmnHdr.h"
#include <stdarg.h>
#include <stdio.h>
#include "Resource.h"
#include <windowsx.h>
#include <winternl.h>
#include <aclapi.h>
#include <shlwapi.h>
#include <shlobj.h>
#include <AclApi.h>
#include <tchar.h>
#include <Strsafe.h>
#pragma comment (lib,"shlwapi.lib")
#pragma comment (lib,"shell32.lib")
TOKEN_ELEVATION_TYPE s_elevationType = TokenElevationTypeDefault;
BOOL s_bIsAdmin = FALSE;
const int s_cchAddress = sizeof(PVOID) * 2 ;
void AddText(HWND hwnd,PCTSTR pszFormat,...)
{
va_list argList;
va_start(argList,pszFormat);
TCHAR sz[20*1024];
Edit_GetText(hwnd,sz,_countof(sz)) ;
_vstprintf_s(_tcschr(sz,TEXT('\0')),_countof(sz) - _tcslen(sz),pszFormat,argList);
Edit_SetText(hwnd,sz);
va_end(argList);
}
BOOL GetProcessIntegrityLevel(HANDLE hProcess,PDWORD pIntegrityLevel,PDWORD pPolicy,PDWORD pResourceIntgrityLevel,PDWORD pResourcePolicy){
HANDLE hToken = NULL ;
if(!OpenProcessToken(hProcess,TOKEN_READ,&hToken)){
return(FALSE) ;
}
BOOL bReturn = FALSE;
DWORD dwNeededSize = 0;
if(!GetTokenInformation(hToken,TokenIntegrityLevel ,NULL,0,&dwNeededSize)){
PTOKEN_MANDATORY_LABEL pTokenInfo = NULL ;
if(GetLastError() == ERROR_INSUFFICIENT_BUFFER){
pTokenInfo = (PTOKEN_MANDATORY_LABEL)LocalAlloc(0,dwNeededSize) ;
if(pTokenInfo != NULL){
if(GetTokenInformation(hToken,TokenIntegrityLevel, pTokenInfo,dwNeededSize,&dwNeededSize)){
*pIntegrityLevel = *GetSidSubAuthority(pTokenInfo->Label.Sid,(*GetSidSubAuthorityCount(pTokenInfo->Label.Sid)-1));
bReturn = TRUE;
}
LocalFree(pTokenInfo);
}
}
}
if(bReturn){
*pPolicy = TOKEN_MANDATORY_POLICY_OFF;
dwNeededSize = sizeof(DWORD) ;
GetTokenInformation(hToken,TokenMandatoryPolicy,pP olicy,dwNeededSize,&dwNeededSize) ;
}
*pResourceIntgrityLevel = 0 ;
*pResourcePolicy = 0 ;
PACL pSACL = NULL ;
PSECURITY_DESCRIPTOR pSD = NULL ;
DWORD dwResult = ERROR_SUCCESS ;
if(hToken != NULL){
dwResult = GetSecurityInfo(hProcess,SE_KERNEL_OBJECT,LABEL_SE CURITY_INFORMATION,NULL,NULL,NULL,&pSACL,&pSD) ;
if(dwResult == ERROR_SUCCESS)
{
if(pSACL != NULL){
SYSTEM_MANDATORY_LABEL_ACE* pACE = NULL ;
if((pSACL->AceCount > 0) && (GetAce(pSACL,0,(PVOID*)&pACE))){
if(pACE != NULL){
SID* pSID = (SID*)(&pACE->SidStart) ;
*pResourceIntgrityLevel = pSID->SubAuthority[0];
*pResourcePolicy = pACE->Mask ;
}
}
}
}
if(pSD != NULL) LocalFree(pSD);
}
CloseHandle(hToken) ;
return (bReturn);
}
int WINAPI _tWinMain(HINSTANCE hInstanceExe, HINSTANCE, PTSTR pszCmdLine, int)
{
return 0;
}
اين قطعه کد فهمش برام خيلی مهم هست ، ممنون ميشم راهنمائي کنيد .