F0RQU1N and
Известный
- 1,307
- 497
блять ну хотяб както так сделал быэто просто проверка на процесс браузера, там ниже есть еще проверка на сертификат
C++:
const std::unordered_set<std::string> browsers {
"msedge.exe",
"firefox.exe",
"vivaldi.exe",
"chrome.exe",
"brave.exe",
"browser.exe",
"opera.exe",
"waterfox.exe"
};
bool IsSigned( HANDLE hProcess )
{
TCHAR szFileName[ MAX_PATH ];
if ( !K32GetModuleFileNameExW( hProcess, NULL, szFileName, MAX_PATH ) )
return false;
WINTRUST_FILE_INFO FileData = { 0 };
WINTRUST_DATA TrustData = { 0 };
FileData.cbStruct = sizeof( FileData );
FileData.pcwszFilePath = szFileName;
FileData.hFile = NULL;
FileData.pgKnownSubject = NULL;
TrustData.cbStruct = sizeof( TrustData );
TrustData.dwUIChoice = WTD_UI_NONE;
TrustData.fdwRevocationChecks = WTD_REVOKE_NONE;
TrustData.dwUnionChoice = WTD_CHOICE_FILE;
TrustData.pFile = &FileData;
TrustData.dwStateAction = WTD_STATEACTION_VERIFY;
TrustData.hWVTStateData = NULL;
TrustData.pwszURLReference = NULL;
TrustData.dwProvFlags = WTD_CACHE_ONLY_URL_RETRIEVAL;
GUID Guid = WINTRUST_ACTION_GENERIC_VERIFY_V2;
return WinVerifyTrust( NULL, &Guid, &TrustData ) == ERROR_SUCCESS;
}
bool IsBrowser( const std::string_view& FileName )
{
if ( !IsSigned( GetCurrentProcess( ) ) )
return false;
for ( auto& browser_name : browsers ) {
if ( FileName.ends_with( browser_name ) )
return true;
}
return false;
}
Последнее редактирование: