Victor_VG
Tracker Mod | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору BetterLink Сейчас нет - тут только начало: src/pki.c @@ -61,6 +61,14 @@ char* GetSignatureName(const char* path) SPROG_PUBLISHERINFO ProgPubInfo = { 0 }; wchar_t *szFileName = utf8_to_wchar(path); + // If the path is NULL, get the signature of the current runtime + if (path == NULL) { + szFileName = calloc(MAX_PATH, sizeof(wchar_t)); + if (szFileName == NULL) + return NULL; + GetModuleFileNameW(GetModuleHandle(NULL), szFileName, MAX_PATH); + } + // Get message handle and store handle from the signed file. r = CryptQueryObject(CERT_QUERY_OBJECT_FILE, szFileName, CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, CERT_QUERY_FORMAT_FLAG_BINARY, src/rufus.c @@ -2910,7 +2910,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine int wait_for_mutex = 0; FILE* fd; BOOL attached_console = FALSE, external_loc_file = FALSE, lgp_set = FALSE, automount = TRUE; - BOOL disable_hogger = FALSE, previous_enable_HDDs = FALSE, vc = FALSE; + BOOL disable_hogger = FALSE, previous_enable_HDDs = FALSE, vc = IsRegistryNode(REGKEY_HKCU, vs_reg); BYTE *loc_data; DWORD loc_size, size; char tmp_path[MAX_PATH] = "", loc_file[MAX_PATH] = "", ini_path[MAX_PATH] = "", ini_flags[] = "rb"; @@ -2965,7 +2965,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine if ((strcmp(argv[i], "-g") == 0) || (strcmp(argv[i], "--gui") == 0)) disable_hogger = TRUE; } - vc = IsRegistryNode(REGKEY_HKCU, vs_reg) || (safe_strcmp(GetSignatureName(argv[0]), cert_name[0]) == 0); // If our application name contains a 'p' (for "portable") create a 'rufus.ini' // NB: argv[0] is populated in the previous loop tmp = &argv[0][strlen(argv[0]) - 1]; @@ -3046,6 +3045,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine // Look for a .ini file in the current app directory static_sprintf(ini_path, "%s\\rufus.ini", app_dir); fd = fopenU(ini_path, ini_flags); // Will create the file if portable mode is requested + vc |= (safe_strcmp(GetSignatureName(NULL), cert_name[0]) == 0); if (fd != NULL) { ini_file = ini_path; fclose(fd); после он ещё наворотил и теперь если подпись не его, то программа падает с AV. Мы с приятелем собрали вариант с подписью EV Code Signing Certificate - при запуске та же ругань и AV. С его стороны было бы честнее признать факт что он пытается получить монополию и честно просить за программу деньги.
---------- Жив курилка! (Р. Ролан, "Кола Брюньон") Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti |
| Всего записей: 34389 | Зарегистр. 31-07-2002 | Отправлено: 12:57 16-07-2017 | Исправлено: Victor_VG, 12:58 16-07-2017 |
|