Add files via upload

This commit is contained in:
vxunderground 2021-05-28 14:16:10 -05:00 committed by GitHub
parent 2dac01560d
commit db3660cd4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 164 additions and 0 deletions

View File

@ -0,0 +1,82 @@
#include <windows.h>
#include <psapi.h>
INT StringCompareA(LPCSTR String1, LPCSTR String2)
{
for (; *String1 == *String2; String1++, String2++)
{
if (*String1 == '\0')
return 0;
}
return ((*(LPCSTR)String1 < *(LPCSTR)String2) ? -1 : +1);
}
PCHAR CaplockStringA(PCHAR Ptr)
{
PCHAR sv = Ptr;
while (*sv != '\0')
{
if (*sv >= 'a' && *sv <= 'z')
*sv = *sv - ('a' - 'A');
sv++;
}
return Ptr;
}
BOOL IsProcessRunningA(PCHAR ProcessNameWithExtension, BOOL IsCaseSensitive)
{
HANDLE hProcess = NULL;
DWORD ProcessIdArray[1024] = { 0 };
DWORD ProcessIdArraySize = 0;
DWORD NumberOfBytesReturned = 0;
if (!EnumProcesses(ProcessIdArray, sizeof(ProcessIdArray), &NumberOfBytesReturned))
return FALSE;
ProcessIdArraySize = NumberOfBytesReturned / sizeof(DWORD);
for (DWORD dwIndex = 0; dwIndex < ProcessIdArraySize; dwIndex++)
{
HMODULE Module = NULL;
CHAR ProcessStringName[MAX_PATH] = { 0 };
if (ProcessIdArray[dwIndex] == 0)
continue;
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessIdArray[dwIndex]);
if (hProcess == NULL)
continue;
if(!EnumProcessModules(hProcess, &Module, sizeof(Module), &NumberOfBytesReturned))
continue;
if(GetModuleBaseNameA(hProcess, Module, ProcessStringName, sizeof(ProcessStringName)/sizeof(WCHAR)) == 0)
continue;
if (hProcess)
CloseHandle(hProcess);
if (!IsCaseSensitive)
{
PCHAR String1 = CaplockStringA(ProcessNameWithExtension);
PCHAR String2 = CaplockStringA(ProcessStringName);
if (StringCompareA(String1, String2) == 0)
return TRUE;
}
else {
if (StringCompareA(ProcessStringName, ProcessNameWithExtension) == 0)
return TRUE;
}
}
return FALSE;
}
INT main(VOID)
{
IsProcessRunningA((PCHAR)"chrome.exe", FALSE);
}

View File

@ -0,0 +1,82 @@
#include <windows.h>
#include <psapi.h>
INT StringCompareW(LPCWSTR String1, LPCWSTR String2)
{
for (; *String1 == *String2; String1++, String2++)
{
if (*String1 == '\0')
return 0;
}
return ((*(LPCWSTR)String1 < *(LPCWSTR)String2) ? -1 : +1);
}
PWCHAR CaplockStringW(PWCHAR Ptr)
{
PWCHAR sv = Ptr;
while (*sv != '\0')
{
if (*sv >= 'a' && *sv <= 'z')
*sv = *sv - ('a' - 'A');
sv++;
}
return Ptr;
}
BOOL IsProcessRunningW(PWCHAR ProcessNameWithExtension, BOOL IsCaseSensitive)
{
HANDLE hProcess = NULL;
DWORD ProcessIdArray[1024] = { 0 };
DWORD ProcessIdArraySize = 0;
DWORD NumberOfBytesReturned = 0;
if (!EnumProcesses(ProcessIdArray, sizeof(ProcessIdArray), &NumberOfBytesReturned))
return FALSE;
ProcessIdArraySize = NumberOfBytesReturned / sizeof(DWORD);
for (DWORD dwIndex = 0; dwIndex < ProcessIdArraySize; dwIndex++)
{
HMODULE Module = NULL;
WCHAR ProcessStringName[MAX_PATH] = { 0 };
if (ProcessIdArray[dwIndex] == 0)
continue;
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessIdArray[dwIndex]);
if (hProcess == NULL)
continue;
if(!EnumProcessModules(hProcess, &Module, sizeof(Module), &NumberOfBytesReturned))
continue;
if(GetModuleBaseNameW(hProcess, Module, ProcessStringName, sizeof(ProcessStringName)/sizeof(WCHAR)) == 0)
continue;
if (hProcess)
CloseHandle(hProcess);
if (!IsCaseSensitive)
{
PWCHAR String1 = CaplockStringW(ProcessNameWithExtension);
PWCHAR String2 = CaplockStringW(ProcessStringName);
if (StringCompareW(String1, String2) == 0)
return TRUE;
}
else {
if (StringCompareW(ProcessStringName, ProcessNameWithExtension) == 0)
return TRUE;
}
}
return FALSE;
}
INT main(VOID)
{
IsProcessRunningW((PWCHAR)L"chrome.exe", FALSE);
}