![]() |
eXeL@B —› Вопросы новичков —› CryptSignHash проблема |
Посл.ответ | Сообщение |
|
Создано: 17 декабря 2013 14:34 · Поправил: zds · Личное сообщение · #1 специалисты по CryptoApi подскажите пожалуйста. есть прога, несколько dll и ini файлов проверяются на целостность посредством CryptVerifySignature, подпись находится в файле который лежит рядом собственно задача - изменить один ini файл и сделать поднего подпись параметры для следующих функций беру из olly ..... CryptAcquireContextA(@hProv, nil, nil, $3, $0) setlength(arr,$1BC); // arr:TArrayOfByte for i := 0 to ($1BC-$1) do begin arr[i]:=strtoint('$'+copy(t,i*2+1,2)); end; CryptImportKey(hprov,Pbyte(arr),$1BC,0,0,@key) CryptCreateHash(hProv, $00008004, 0, 0, @hash) assignfile(f,'C:\tt.ini'); reset(f); setlength(arr2,800); i:=0; while not eof(f) do begin read(f,arr2[i]); inc(i); end; closefile(f); setlength(arr2,i); CryptHashData(hash,PByte(arr2), i, 0) x1:=0; CryptSignHash(hash,AT_SIGNATURE,0,0,nil,@x1) <---------тут ошибка NTE_NO_KEY setlength(arr1,x1); CryptSignHash(hash,AT_SIGNATURE,0,0,pbyte(arr1),@x1); меняю только CryptVerifySignature на CryptSignHash. при выполнении последней получаю NTE_NO_KEY что не так делаю? остальные функции выполняются без ошибок ![]() |
|
Создано: 17 декабря 2013 15:24 · Поправил: ajax · Личное сообщение · #2 ошибки смотри на каждом из этапов API. плюс, неплохо бы байтики в функах заменить константами ![]() ----- От многой мудрости много скорби, и умножающий знание умножает печаль ![]() |
|
Создано: 17 декабря 2013 16:25 · Личное сообщение · #3 |
|
Создано: 17 декабря 2013 16:26 · Личное сообщение · #4 |
|
Создано: 17 декабря 2013 16:43 · Личное сообщение · #5 |
|
Создано: 17 декабря 2013 17:06 · Поправил: Veliant · Личное сообщение · #6 Варианты: 1) пропатчить ехе так чтоб не проверял подпись, либо подменить своим открытым/закрытым ключом, которым уже будет переподписан ini 2) сделать патч в памяти - лоадер ![]() |
|
Создано: 17 декабря 2013 17:48 · Личное сообщение · #7 |
|
Создано: 17 декабря 2013 18:04 · Личное сообщение · #8 |
|
Создано: 18 декабря 2013 16:44 · Личное сообщение · #9 |
|
Создано: 17 января 2014 19:59 · Личное сообщение · #10 нашел в файлах программы сертификат *PROGNAME*_DigitalSignatureCert_2010.cer есть ли шанс что в этом сертификате есть пара ключей для создания подписи? если да, подскажите пожалуйста как изменить мой код чтобы импортировать ключ напрямую из файла сертификата или может из хранилища для создания подписи....пытался гуглить - не очень все понятно... спасибо ![]() |
|
Создано: 17 января 2014 20:10 · Личное сообщение · #11 zds пишет: есть ли шанс что в этом сертификате есть пара ключей для создания подписи? Нет. Если ключи там есть, то только открытые. Думаю закрытый ключ (private key) вы там не найдете ![]() ----- ds ![]() |
![]() |
eXeL@B —› Вопросы новичков —› CryptSignHash проблема |