/
githubmirror
/
metasploit-framework
Обзор
Документация
Войти
/
githubmirror
/
metasploit-framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
external/source/exploits/bypassuac/CMMN.cpp
103 строки
2 KB
David Maloney
remove unneccsary logging elements
21 фев 2014, 06:00
21 фев 2014, 06:00
2895807
Код
Авторство
О чём код?
#include "stdafx.h" #include "CMMN.h" #include <Shlobj.h> #include <sstream> #include <windows.h> #include <WinIOCtl.h> /*************************************************************************************************/ /*************************************************************************************************/ /*************************************************************************************************/ CInterprocessStorage *CInterprocessStorage::Create(const TCHAR *Name, std::wstring& String) { CInterprocessStorage *storage = Create( Name ); if ( !storage ) return NULL; storage->SetString( String ); return storage; } CInterprocessStorage *CInterprocessStorage::Create(const TCHAR *Name) { if ( !Name ) return NULL; HANDLE hMap = CreateFileMapping( NULL, NULL, PAGE_READWRITE, 0, MaxSize, Name ); if ( hMap ) { LPVOID view = MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 ); if ( view ) { memset( view, 0, MaxSize ); return new CInterprocessStorage( Name, hMap, view ); } CloseHandle( hMap ); } return NULL; } CInterprocessStorage *CInterprocessStorage::Open(const TCHAR *Name) { if ( !Name ) return NULL; HANDLE hMap = OpenFileMapping( FILE_MAP_ALL_ACCESS, TRUE, Name ); if ( hMap ) { LPVOID view = MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 ); if ( view ) return new CInterprocessStorage( Name, hMap, view ); CloseHandle( hMap ); } return NULL; } CInterprocessStorage::CInterprocessStorage(const TCHAR *Name, HANDLE Mapping, LPVOID Base) : _Name(Name), _hMapping(Mapping), _pBase(Base) { } std::wstring CInterprocessStorage::GetName() { return std::wstring( _Name ); } void CInterprocessStorage::GetString(std::wstring &String) { String.assign( reinterpret_cast<TCHAR *>(_pBase) ); } void CInterprocessStorage::SetString(std::wstring &String) { size_t count = min( String.size(), MaxCount - 1 ); memcpy( _pBase, String.data(), count * sizeof(TCHAR) ); *(reinterpret_cast<TCHAR *>(_pBase) + count) = 0; } bool CInterprocessStorage::GetString( const TCHAR *Name, std::wstring& String ) { CInterprocessStorage *storage = Open( Name ); if ( !storage ) return false; storage->GetString( String ); delete storage; return true; } CInterprocessStorage::~CInterprocessStorage() { UnmapViewOfFile( _pBase ); CloseHandle( _hMapping ); }