mirror of https://github.com/hfiref0x/UACME.git
84 lines
1.9 KiB
C
84 lines
1.9 KiB
C
/*******************************************************************************
|
|
*
|
|
* (C) COPYRIGHT AUTHORS, 2014 - 2017
|
|
*
|
|
* TITLE: LOGGER.C
|
|
*
|
|
* VERSION: 1.0F
|
|
*
|
|
* DATE: 14 Feb 2017
|
|
*
|
|
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
|
|
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
* PARTICULAR PURPOSE.
|
|
*
|
|
*******************************************************************************/
|
|
#include "global.h"
|
|
|
|
/*
|
|
* LoggerCreate
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Create log file.
|
|
*
|
|
*/
|
|
HANDLE LoggerCreate(
|
|
_In_opt_ LPWSTR lpLogFileName
|
|
)
|
|
{
|
|
WCHAR ch;
|
|
LPWSTR fname = lpLogFileName;
|
|
HANDLE hFile;
|
|
DWORD bytesIO;
|
|
|
|
if (lpLogFileName == NULL) {
|
|
fname = TEXT("log.log");
|
|
}
|
|
hFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
if (hFile != INVALID_HANDLE_VALUE) {
|
|
ch = (WCHAR)0xFEFF;
|
|
WriteFile(hFile, &ch, sizeof(WCHAR), &bytesIO, NULL);
|
|
}
|
|
return hFile;
|
|
}
|
|
|
|
/*
|
|
* LoggerWrite
|
|
*
|
|
* Purpose:
|
|
*
|
|
* Output text to file.
|
|
*
|
|
*/
|
|
VOID LoggerWrite(
|
|
_In_ HANDLE hLogFile,
|
|
_In_ LPWSTR lpText,
|
|
_In_ BOOL UseReturn
|
|
)
|
|
{
|
|
SIZE_T sz = 0;
|
|
DWORD bytesIO = 0;
|
|
LPWSTR Buffer = NULL;
|
|
|
|
if (hLogFile != INVALID_HANDLE_VALUE) {
|
|
if (lpText == NULL)
|
|
return;
|
|
|
|
sz = _strlen(lpText);
|
|
if (sz == 0)
|
|
return;
|
|
|
|
sz = sz * sizeof(WCHAR) + 4 + sizeof(UNICODE_NULL);
|
|
Buffer = (LPWSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sz);
|
|
if (Buffer) {
|
|
_strcpy(Buffer, lpText);
|
|
if (UseReturn) _strcat(Buffer, TEXT("\r\n"));
|
|
sz = _strlen(Buffer);
|
|
WriteFile(hLogFile, Buffer, (DWORD)(sz * sizeof(WCHAR)), &bytesIO, NULL);
|
|
HeapFree(GetProcessHeap(), 0, Buffer);
|
|
}
|
|
}
|
|
}
|