ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Цифровая подпись программ
  #1  
Старый 06.03.2010, 11:55
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


Отправить сообщение для ErrorNeo с помощью ICQ
По умолчанию Цифровая подпись программ

как подписать программу?
на самом деле, в общем-то, не сложно.

вам нужны только несколько утилит от Microsoft:
Cert2Spc.Exe
makecert.exe
PVKIMPRT.EXE
signtool.exe

распространяющихся бесплатно, длл-ка
capicom.dll
прилагающаяся к signtool.exe, ну и..
батник следующего содержания:

Код:
makecert -n "CN=Корпорация Майкрософт" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv sert.pvk sert.cer -ss Root -sr localMachine
cert2spc.exe sert.cer sert.spc
PVKIMPRT.EXE -pfx sert.spc sert.pvk
signtool.exe sign /v /f sert.pfx /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Generic Host Process for Win32 Services" /v program.exe
pause
Процедура создания подписи при этом такая:
1. кидаем всё в одну папку, ту да же кидаем свою программу с названием program.exe (именно таким! оно у нас дальше прописано в батнике).
2. запускаем батник
3. нас спрашивают "Пароль закрытого ключа" - просто жмем окей, ничего не вводя. "Не использовать пароль? - Да"
4. Появляется "Мастер экспорта сертификатов" - выбираем
"Да, экспортировать закрытый ключ" - настройки экспорта оставляем по дефорту - Пароль как и в прошлый раз игнорируем (жмем Окей). Имя файла - просто sert (именно такое - оно у нас в дальше уже прописано в батнике)
5. готово.

то, что вы увидите в консоли будет выглядеть примерно так:
Код:
с:\цифровая подпись>makecert -n "CN=╩юЁяюЁрЎш* ╠рщъЁюёюЇЄ" -a sha1 -eku
1.3.6.1.5.5.7.3.3 -r -sv sert.pvk sert.cer -ss Root -sr localMachine
Succeeded

c:\цифровая подпись>cert2spc.exe sert.cer sert.spc
Succeeded

c:\цифровая подпись>PVKIMPRT.EXE -pfx sert.spc sert.pvk

c:\цифровая подпись>signtool.exe sign /v /f sert.pfx /t http://timestamp
.verisign.com/scripts/timestamp.dll /d "Generic Host Process for Win32 Services"
 /v program.exe
The following certificate was selected:
    Issued to: ж    Issued by: ж    Expires:   20400101 1 2:59:59
    SHA1 hash: 1455C51A77DBB81B241F79AC6A1FFBC093612AC7

Done Adding Additional Store

Attempting to sign: program.exe
Successfully signed and timestamped: program.exe

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0

c:\цифровая подпись>pause
Для продолжения нажмите любую клавишу . . .
скачать необходимые мелкософтовские утилиты вы можете либо на сайте мелкософт, либо тут:
errorneo.com/files/sign.zip или www.sendspace.com/file/dlfaxt
(батник тоже в архиве)

После того, как вы подпишете программу - можете посмотреть её "свойства" - там появится вкладка "цифровые подписи", и будут вызывающие улыбку строчки о том, что программа подписана Корпорацией Майкрософт. (а её ключ, как и положено, будет подписан компанией "Verisign")

Для чего вам это?
исключительно для красоты, т.к. Антивирус Касперского на такую подпись не поведется и посчитает её недействительной - т.е. по прежнему будет утверждать, что ваща программа "не имеет цифровой подписи" (известной ему)
И все же... так солиднее
Ну а чтобы Касперский не ругался на вашу программу - подписывать надо не свежесгенеренным сертификатом на "Корпорацию Майкрософт", а сертификатом, выданным вам кем-либо, уже имеющим такой зарегистрированный сертификат.

ps.
благодарю slesh за то, что когда-то помогал мне с этим разобраться.

Последний раз редактировалось ErrorNeo; 17.03.2010 в 12:01..
 
Ответить с цитированием

  #2  
Старый 06.03.2010, 12:32
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Кстати цифровые подписи довольно удобны в некоторых моментах.
А именно:
1) дополнительная инфа о проге или её авторстве которое должны проверять другие проги
2) Часто юзаю ЭЦП для защиты какойнить мощной проги. т.е. прога состоит из монитора и основной части. Основная часть подписана, а монитор при запуске основной части проверяет её подпись и если она не совпадает то отказывает работать с ней.
С одной стороны это даёт защиту от поражения проги вредоносными программа или другими изменениями. Ну и отчасти удобно идентифицировать клиентов кому была продана она.
 
Ответить с цитированием

  #3  
Старый 16.03.2010, 21:07
Dark Koder
Новичок
Регистрация: 23.12.2009
Сообщений: 13
Провел на форуме:
73789

Репутация: 0
По умолчанию

а есть ли какие нибудь еще методы подписки?
 
Ответить с цитированием

  #4  
Старый 16.03.2010, 22:14
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

перезалей плиз набор. а вообще что-то плохо верится, что удастся так подписать. Я когда некоторое время назад смотрел, понял так, что нужно где-то платно заявляться, просить сертификат у всяких VeriSign'ов... короче проще wintrust.dll пропатчить
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #5  
Старый 16.03.2010, 23:50
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме:
5265510

Репутация: 455


По умолчанию

Цитата:
короче проще wintrust.dll пропатчить
Можно по подробней?
 
Ответить с цитированием

  #6  
Старый 17.03.2010, 00:13
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

ну проверка подлинности - это функа WinVerifyTrust из wintrust.dll
>>If the trust provider verifies that the subject is trusted for the specified action, the return value is zero.
патчим её на xor eax, eax; ret 14... или не 14... и пусть всё принимается
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #7  
Старый 17.03.2010, 00:52
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

я юзал подписание и нормально всё идет. Фишка в том, что создать ключ для цифровой подписи может любой чел. И он может спокойно подписывать им что хочет, другое дело состоит в том, что проверить подлинность ключа можно тока через инет, через спец конторы. А так как мы туда ключ не добавляли, то и проверку эту он завалит.

Так что можно ключ юзать чисто для контроля целостности.
 
Ответить с цитированием

  #8  
Старый 17.03.2010, 00:56
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Я юзаю вот такой вот код для проверки:
Код:
BOOL VerifySignature(wchar_t* pwszSourceFile)
{
	BOOL ret;
	LONG lStatus;
	DWORD dwLastError;
	
	WINTRUST_FILE_INFO FileData;
	memset(&FileData, 0, sizeof(FileData));
	FileData.cbStruct = sizeof(WINTRUST_FILE_INFO);
	FileData.pcwszFilePath = pwszSourceFile;
	FileData.hFile = NULL;
	FileData.pgKnownSubject = NULL;
	
	GUID WVTPolicyGUID = WINTRUST_ACTION_GENERIC_VERIFY_V2;
	WINTRUST_DATA WinTrustData;
	
	memset(&WinTrustData, 0, sizeof(WinTrustData));
	WinTrustData.cbStruct = sizeof(WinTrustData);
	WinTrustData.pPolicyCallbackData = NULL;
	WinTrustData.pSIPClientData = NULL;
	WinTrustData.dwUIChoice = WTD_UI_NONE;
	WinTrustData.fdwRevocationChecks = WTD_REVOKE_NONE; 
	WinTrustData.dwUnionChoice = WTD_CHOICE_FILE;
	WinTrustData.dwStateAction = 0;
	WinTrustData.hWVTStateData = NULL;
	WinTrustData.pwszURLReference = NULL;
	WinTrustData.dwProvFlags = WTD_SAFER_FLAG;
	WinTrustData.pFile = &FileData;
	
	lStatus = WinVerifyTrust(NULL,&WVTPolicyGUID,&WinTrustData);
	
	ret = true;
	
	if (lStatus == TRUST_E_NOSIGNATURE)
	{
		dwLastError = GetLastError();
		if (TRUST_E_NOSIGNATURE == dwLastError ||
			TRUST_E_SUBJECT_FORM_UNKNOWN == dwLastError ||
			TRUST_E_PROVIDER_UNKNOWN == dwLastError) 
		{
			ret = false;
		}
	}
	
	return ret;
}
 
Ответить с цитированием

  #9  
Старый 17.03.2010, 01:52
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

малацы оба 8)
 
Ответить с цитированием

  #10  
Старый 17.03.2010, 12:10
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


Отправить сообщение для ErrorNeo с помощью ICQ
По умолчанию

Цитата:
Сообщение от desTiny  
перезалей плиз набор.
добавил зеркало на sendspace.
Для того, чтобы тебя подписали _нормальным_ сертификатом - да, нужно изголяться, что-то кому-то платить, регистрироваться.. (не связывался) Но и проверку такой серт сможет пройти.
Ну а тот способ, что приведен тут - просто позволяет сгенерировать серт "в домашних условиях". "Проверки" никакой этот серт не пройдет... но все же это - серт
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[ Обзор уязвимостей DataLife Engine ] Solide Snake Сценарии/CMF/СMS 175 17.06.2010 20:05
[ Обзор уязвимостей OpenX (phpAdsNew, Openads) ] (Dm) Сценарии/CMF/СMS 12 11.05.2010 21:01
Антивирусные вендоры ищут выход из технологического тупика spider-intruder Мировые новости 0 17.12.2009 11:31
База Руссификаторы от KPOT_f!nd KPOT_f!nd Реверсинг 1 21.09.2006 21:06
«Лаборатории Касперского»: Количество вредоносных программ под Linux резко возросло dinar_007 Мировые новости 9 20.08.2006 20:50



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ