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

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

Ранг: 11.8 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 22 января 2013 19:21
· Личное сообщение · #1

Всем привет.

Помогите разобраться к криптоалгоритмом сам в ентом не очень силен. Ента процедура расшифровывает блок данных. Вот то, что выдал хекс-рей(если нужно то могу приложить idb-шку.) Интересует енто стандартный алго или какой нить самопал и возможен ли его реверс?

Заранее спасибо.

char __stdcall sub_11118(int a1)
{
int v1; // eax@1
int v2; // esi@1
int v3; // edi@1
char v4; // dl@1
signed int v5; // ecx@1

v1 = a1;
*(_DWORD *)(v1 + 4) ^= 0x5AA5AA55u;
*(_DWORD *)(v1 + 8) -= 1126862747;
v2 = a1 + 13;
v3 = a1 + 184;
v4 = 0;
v5 = 0;
if ( v1 + 13 < (unsigned int)(v1 + 184) )
{
do
{
*(_BYTE *)(v5 + v2) = ~((*(_BYTE *)(v5 + v2) ^ (v5 + *(_BYTE *)(v5 % 8 + a1 + 4))) - *(_BYTE *)(v5 % 4 + a1 + 4));
++v5;
}
while ( v5 + v2 < (unsigned int)v3 );
v4 = 0;
while ( v2 < (unsigned int)v3 )
v4 += *(_BYTE *)v2++;
}
return *(_BYTE *)(a1 + 12) == v4;
}




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

Создано: 22 января 2013 19:25
· Личное сообщение · #2

самопал. если оно декриптует, то и крипт возможен. 20 мин вникания в алго должны спасти "предводителя дворянства?"

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




Ранг: 11.8 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 22 января 2013 19:33
· Личное сообщение · #3

Я в с++ не силен. Может кто сможет перевести енто на pascal то я сам попробую разобраться...




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 22 января 2013 19:46
· Личное сообщение · #4

давай idb в нормальный вид хоть приведем



Ранг: 11.8 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 22 января 2013 20:01
· Личное сообщение · #5

ajax
А кто енто такой "предводителя дворянства?"?

reversecode
Лови.

4b3f_22.01.2013_EXELAB.rU.tgz - fancyrd(unp).idb.7z




Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 22 января 2013 20:21
· Личное сообщение · #6

AliS S0fT пишет:
А кто енто такой "предводителя дворянства?"?


Киса Воробьянинов.

-----
http://ntinfo.biz


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


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 22 января 2013 21:26 · Поправил: reversecode
· Личное сообщение · #7

ну если верить рейсу то это так


Code:
  1. struct _SDATA 
  2. {
  3.     int field_0;
  4.    union {
  5.            char hash[8];
  6.            int hash2[2];
  7.     }u;
  8.    char crc_sum;
  9.    char array[171];
  10. };
  11.  
  12.  
  13. char __stdcall sub_11118(_SDATA *sd)
  14. {
  15.   unsigned char *pdata;
  16.   unsigned char *pend;
  17.   char sum;
  18.   int idx;
  19.  
  20.   sd->u.hash2[0] ^= 0x5AA5AA55u;
  21.   sd->u.hash2[2] -= 0x432A8F9Bu;
  22.  
  23.   pdata = &sd->array[0];
  24.   pend = &sd->array[171];
  25.  
  26.   idx = 0;
  27.   do {
  28.  
  29.       pdata[idx] = ~((pdata[idx] ^ (idx + sd->u.hash[idx % 8])) - sd->u.hash[idx % 4]);
  30.       ++idx;
  31.  
  32.     } while (&pdata[idx] <= pend);
  33.  
  34.     sum = 0;
  35.     while (pdata <= pend)
  36.       sum += *pdata++;
  37.  
  38.   return sd->crc_sum == sum;
  39. }

хотя что то не кажется можно сильно поупрощать все, цикл по индексу прогнать а не по указателю

не силен я в паскале

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

Ранг: 11.8 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 22 января 2013 21:28 · Поправил: AliS S0fT
· Личное сообщение · #8

to All
А можно енто на pascal-е? Ну не рублю я в C...



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

Создано: 22 января 2013 22:07
· Личное сообщение · #9

прогнать в обратном порядке от pend до 0, не?



Ранг: 11.8 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 24 января 2013 07:19 · Поправил: AliS S0fT
· Личное сообщение · #10

Всем спасибо. Как сказал ajax 10 мин внимательного вникания и вроде все просто. Так, что тему наверное можно закрыть.



Ранг: 42.3 (посетитель), 19thx
Активность: 0.040
Статус: Участник

Создано: 24 января 2013 09:02 · Поправил: kampaster
· Личное сообщение · #11

AliS S0fT Вы сами можете закрыть свою тему, кнопка "Закрыть тему" находится внизу страницы, под кнопкой "Отправить сообщение".


 eXeL@B —› Вопросы новичков —› Нужна помощь в определении и разборе криптоалгоритма.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати