Сейчас на форуме: asfa, Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› CryptSignHash проблема
Посл.ответ Сообщение

Ранг: 57.0 (постоянный), 10thx
Активность: 0.050.08
Статус: Участник

Создано: 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
что не так делаю? остальные функции выполняются без ошибок




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 17 декабря 2013 15:24 · Поправил: ajax
· Личное сообщение · #2

ошибки смотри на каждом из этапов API. плюс, неплохо бы байтики в функах заменить константами лично мне - обломно лазить в сдк и искать, что есть что. и инфа не вся. при подписи - есть нюансы в пакете

-----
От многой мудрости много скорби, и умножающий знание умножает печаль


| Сообщение посчитали полезным: zds

Ранг: 57.0 (постоянный), 10thx
Активность: 0.050.08
Статус: Участник

Создано: 17 декабря 2013 16:25
· Личное сообщение · #3

здесь написал урощенный вариант, а так в исходиках после каждой функции проверка на ошибки. ошибка возникает только на CryptSignHash




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 декабря 2013 16:26
· Личное сообщение · #4

Сдаётся мне, что авторы приватный ключ "забыли" тебе положить, чтоб ты им подписывал.

| Сообщение посчитали полезным: zds, Crawler, Dynamic

Ранг: 57.0 (постоянный), 10thx
Активность: 0.050.08
Статус: Участник

Создано: 17 декабря 2013 16:43
· Личное сообщение · #5

Archer пишет:
Сдаётся мне, что авторы приватный ключ "забыли" тебе положить, чтоб ты им подписывал.

т.е. без вариантов?....



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 17 декабря 2013 17:06 · Поправил: Veliant
· Личное сообщение · #6

Варианты:
1) пропатчить ехе так чтоб не проверял подпись, либо подменить своим открытым/закрытым ключом, которым уже будет переподписан ini
2) сделать патч в памяти - лоадер

| Сообщение посчитали полезным: zds

Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 17 декабря 2013 17:48
· Личное сообщение · #7

3) сбрутить приваткей.

-----
SaNX




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 17 декабря 2013 18:04
· Личное сообщение · #8

SaNX
Ну тогда уже до кучи:
4) подобрать коллизию (атака на CryptHashData), тогда цифровую подпись можно оставить как есть




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 18 декабря 2013 16:44
· Личное сообщение · #9

int
Ладно:
5) Найти метод, позволяющий восстановить исходные данные из результата одностороннего преобразования (вероятность-то почти такая же))))

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 57.0 (постоянный), 10thx
Активность: 0.050.08
Статус: Участник

Создано: 17 января 2014 19:59
· Личное сообщение · #10

нашел в файлах программы сертификат *PROGNAME*_DigitalSignatureCert_2010.cer
есть ли шанс что в этом сертификате есть пара ключей для создания подписи? если да, подскажите пожалуйста как изменить мой код чтобы импортировать ключ напрямую из файла сертификата или может из хранилища для создания подписи....пытался гуглить - не очень все понятно...
спасибо




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 17 января 2014 20:10
· Личное сообщение · #11

zds пишет:
есть ли шанс что в этом сертификате есть пара ключей для создания подписи?

Нет.
Если ключи там есть, то только открытые. Думаю закрытый ключ (private key) вы там не найдете

-----
ds


| Сообщение посчитали полезным: zds
 eXeL@B —› Вопросы новичков —› CryptSignHash проблема
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати