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

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

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

Создано: 08 июня 2016 01:01
· Личное сообщение · #1

пытаюсь разобраться с sentinel cloud
хочу попробовать модифицировать usage файлы. но что-то у меня затык с алгоритмом
здесь происходит чтение файлов
1003A436 |. E8 E5FDFFFF CALL scrrunti.1003A220 ; read data

здесь непосредственно декрипт
1003A491 |. 57 PUSH EDI
1003A492 |. 8D46 08 LEA EAX,DWORD PTR DS:[ESI+8]
1003A495 |. 55 PUSH EBP
1003A496 |. 50 PUSH EAX
1003A497 |. E8 A467FEFF CALL scrrunti.10020C40 ; decrypt

первый аргумент здесь точно не знаю, но возможно ключ. хотя длинна - dword
второй - data
третрий - размер data

перед этим по ходу кода было упоминание AES, но втрутри функции речь идет об EVP. и результат дешифровки почти в 2 раза больше по размеру
библиотека используется openssl 1.0.0a. у меня есть сигнатуры только 0.97 поэтому походу у меня данные функции не распознаются в ИДЕ
Может кто профи в криптографии глянет, какой точно алго и где поймать ключ можно
спасибо

--> Link <--



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

Создано: 08 июня 2016 17:52
· Личное сообщение · #2

богато там --> внутри <--

-----
...или ты работаешь хорошо, или ты работаешь много...




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

Создано: 08 июня 2016 22:34 · Поправил: zds
· Личное сообщение · #3

сравнил функцию дешифровки с тем исходниками openssl
получается как то так
Code:
  1. void *__cdecl sub_10020C40(int a1, void *a2, int a3)
  2. {
  3.   size_t *v3; // ebx@1
  4.   void *v4; // esi@1
  5.   int v6; // [sp+Ch] [bp-4h]@1
  6.  
  7.   v3 = (size_t *)a3;
  8.   a3 = *(_DWORD *)a3;
  9.   v6 = 0;
  10.   v4 = malloc(a3);
  11.   if ( dword_10696364 )
  12.     sub_1014B1E0(0, "SCR_3.5.298.45", &byte_104186A7, &byte_104186A7, 472, "%s, %s ", (char)off_1058532C[0]);
  13.   sub_10073040((void *)a1, 0, 0, 0, 0);
  14. //int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
  15.                       ENGINE *impl, const unsigned char *key,
  16.                       const unsigned char *iv, int enc)
  17.  
  18.   sub_100728E0(a1, v4, (int)&a3, a2, *v3);
  19. //int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
  20.                      const unsigned char *in, int inl)
  21.  
  22.   sub_100729E0(a1, (int)v4 + a3, &v6);
  23. //int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
  24.   *v3 = a3 + v6;
  25.   if ( dword_10696364 )
  26.     sub_1014B1E0(0, "SCR_3.5.298.45", &byte_104186A7, &byte_104186A7, 481, "%s, %s ", (char)off_1058532C[0]);
  27.   return v4;
  28. }

получается, что это aes128 с нулевым ключом.....
к сожалению С++ не знаю. буду искать возможность как возпользоваться openssl на delphi


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


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