Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Работаем над CronosPlus 3.04.72 со скальпилем и молотком :)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Взлом программ] >> Работаем над CronosPlus 3.04.72 со скальпилем и молотком :)
Имя
Сообщение << Старые топики   Новые топики >>
Работаем над CronosPlus 3.04.72 со скальпилем и молотком :) - 2008-03-07 00:32:51.800000   
TrapMen

Сообщений: 1
Оценки: 0
Присоединился: 2008-03-07 00:22:31.460000
В общем, молчание по поводу реверса сабжа, думаю, стоит понимать как полную капитуляцию реверсеров :(
Либо, как в том анекдоте про неуловимого Джо, который нах%#* никому не нужен ;)
В общем, попытаюсь более точно сформулировать задачу.
Есть оболочка под кодовым названием "cronos_3_04_74_all_sn" :)
Присутствуюет там такое файло:
; Generated by QuickSFV v2.35 on 2008-03-06 at 23:18:12
; http://www.QuickSFV.org
;
;       151668  01:00.36 2003-09-23 CroBugs.dll
;           17  04:46.46 2005-03-23 CroInfo
;     13047812  20:10.38 2008-03-01 Cronos.exe
;         1007  23:17.06 2008-03-06 CroSys.dat
;           32  23:17.06 2008-03-06 CroSys.tad
CroBugs.dll E8CF38A4
CroInfo CD67560B
Cronos.exe F3DF3D98
CroSys.dat 0234F80D
CroSys.tad 9AC0E39B
 
Над самим exeшником уже поработал некий "Evil Hacker", который основную муторную работу сделал:
- распаковал exeшник
- заNOPил сверку серийников банков
За что ему большой респект. Теперь большинство пользователей, даже легально купленных версий юзают эту оболчку.
Теперь осталось только немного довести до ума его труды :)
Надо:
1. раскопать формат хранения (структуру) файлов:
  а) Списка подключенных к системе банков (CroSys.dat, CroSys.tad)
  б) Самих банков данных (*.dat, *.tad, *.cpy)
2. Научиться вскрывать защищенные паролем банки
Для чего? Думаю, те, кто так или иначе сталкивался с этой системой меня поймут…
Например, когду у вас есть куча банков, а вам надо сменить букву диска, то предстоит очень муторная работа…
Как вариант, можно, конечно, написать навесок к этой оболочке, который будет вызывает участок кода, отвечающий за обработку диалога добавления банка, но как это грамотно реализовать я пока еще не придумал.
Вот что мне уже удалось накопать:
Заюзав Иду 5.2.0.908 и плаг Hey-Reys 1.0.071108 получил более-менее вменяемые листинги некоторых интересных на мой взгляд функций:
[c]
//—– (00557E40) ——————————————————–
signed int __userpurge sub_557E40<eax>(int a1<ecx>, int a2<ebp>, int a3, int a4, int a5, char a6)
{
  int v6; // ebx@1
  unsigned int v7; // esi@1
  char *v8; // eax@3
  char *v9; // esi@3
  unsigned __int8 v10; // cf@4
  char v11; // cl@6
  int v12; // eax@8
  unsigned __int8 v13; // cf@11
  char v14; // zf@11
  int v15; // eax@11
  signed int v16; // ecx@11
  char *v17; // edi@11
  char *v18; // esi@11
  int v19; // edi@18
  int v20; // esi@18
  char v21; // bl@20
  signed int result; // eax@24
  unsigned __int8 v23; // bl@25
  int v24; // eax@29
  int v25; // esi@30
  int v26; // eax@31
  int v27; // eax@1
  int v28; // eax@2
  unsigned __int8 v29; // dl@6
  int v30; // ecx@18
  int v31; // eax@18
  unsigned __int8 v32; // bl@18
  int v33; // edx@18
  int v34; // eax@18
  int v35; // edx@18
  int v36; // eax@20
  int v37; // edx@20
  int *v38; // ecx@23
  int v39; // eax@25
  int v40; // edx@25
  LPVOID v41; // eax@30
  int v42; // eax@31
  int v43; // edx@31
  char v44; // cl@31
  char v45; // ST08_1@31
  char v46; // [sp+108h] [bp-13Ch]@1
  int v47; // [sp+0h] [bp-244h]@1
  int *v48; // [sp+234h] [bp-10h]@1
  int v49; // [sp+22Ch] [bp-18h]@1
  int v50; // [sp+112h] [bp-132h]@1
  char v51; // [sp+116h] [bp-12Eh]@1
  int v52; // [sp+230h] [bp-14h]@1
  _BYTE v53[237]; // [sp+11Bh] [bp-129h]@2
  int v54; // [sp+240h] [bp-4h]@3
  char v55; // [sp+Ch] [bp-238h]@3
  char v56; // [sp+19h] [bp-22Bh]@11
  int v57; // [sp+1Dh] [bp-227h]@18
  __int16 v58; // [sp+1Bh] [bp-229h]@18
  char v59; // [sp+21Ch] [bp-28h]@18
  int v60; // [sp+218h] [bp-2Ch]@18
  int v61; // [sp+214h] [bp-30h]@18
  int v62; // [sp+220h] [bp-24h]@21
  unsigned int v63; // [sp+224h] [bp-20h]@22
  __int16 v64; // [sp+117h] [bp-12Dh]@23
  __int16 v65; // [sp+119h] [bp-12Bh]@23
  int v66; // [sp+208h] [bp-3Ch]@33
  v6 = a1;
  strcpy(&v46, "CroFile");
  v48 = &v47;
  v49 = v6;
  v50 = dword_DADD14;
  v51 = byte_DADD18;
  v27 = sub_AF2365((int)&v52);
  sub_AF318E(v27);
  v7 = 0;
  do
  {
    v28 = sub_AF319B();
    v53[v7++] = ((unsigned int)((v28 << 8) + ((unsigned __int64)(-2147418109i64 * (v28 << 8)) >> 32)) >> 31)
              + (unsigned __int8)((signed int)((v28 << 8) + ((unsigned __int64)(-2147418109i64 * (v28 << 8)) >> 32)) >> 14);
  }
  while ( v7 < 0xE9 );
  v54 = 0;
  v52 = v6 + 10804;
  sub_53B100((int *)(v6 + 10804), (int)&v55, 252);
  v9 = &v46;
  v8 = &v55;
  while ( 1 )
  {
    v10 = *v8 < (unsigned __int8)*v9;
    if ( *v8 != *v9 )
      break;
    if ( !*v8 )
      goto LABEL_8;
    v29 = *(v8 + 1);
    v11 = *(v8 + 1);
    v10 = v29 < *(v9 + 1);
    if ( v29 != *(v9 + 1) )
      break;
    v8 += 2;
    v9 += 2;
    if ( !v11 )
    {
LABEL_8:
      v12 = 0;
      goto LABEL_10;
    }
  }
  v12 = -v10 - (v10 - 1);
LABEL_10:
  if ( v12 )
    goto LABEL_37;
  v16 = 2;
  v17 = (char *)&v50 + 3;
  v18 = &v56;
  v15 = 0;
  v13 = 0;
  v14 = 1;
  do
  {
    if ( !v16 )
      break;
    v13 = *v18 < (unsigned __int8)*v17;
    v14 = *v18++ == *v17++;
    –v16;
  }
  while ( v14 );
  if ( !v14 )
    v15 = -v13 - (v13 - 1);
  if ( v15 > 0 )
  {
LABEL_37:
    v39 = sub_98EBB0((int)&v59, &v56, 2);
    LOBYTE(v54) = 4;
    v23 = sub_991D50(v39);
    v60 = v40;
    LOBYTE(v54) = 0;
    if ( (v59 & 0x5F) == 16 )
    {
      if ( v62 )
        sub_99BEF0((void **)&v62, v63, 0);
    }
    if ( v23 > 2u )
    {
      v24 = sub_904D50();
      if ( v24 )
      {
        v41 = sub_B1C78C(v24, 28);
        v25 = (int)v41;
        *(_DWORD *)&a6 = v41;
        LOBYTE(v54) = 5;
        if ( v41 )
        {
          v42 = sub_5F8C60(v52);
          v43 = *(_DWORD *)v42;
          v45 = v44;
          v52 = (int)&v45;
          (*(int (__thiscall **)(int, char *))(v43 + 4))(v42, &v45);
          v26 = sub_442780(v25, a2, 107, v45);
        }
        else
        {
          v26 = 0;
        }
        LOBYTE(v54) = 0;
        v66 = v26;
        sub_AF2183((int)&v66, (int)dword_CD5590);
      }
    }
    result = 0;
  }
  else
  {
    v20 = a3;
    v19 = a5;
    v30 = (unsigned __int16)v57;
    *(_WORD *)a3 = v58;
    *(_DWORD *)v19 = v30;
    *(_WORD *)(v6 + 20) = *(_WORD *)v20;
    *(_DWORD *)(v6 + 10808) = *(_DWORD *)v19;
    v31 = sub_98EBB0((int)&v59, &v56, 2);
    LOBYTE(v54) = 1;
    v32 = sub_991D50(v31);
    v60 = v33;
    LOBYTE(v54) = 0;
    sub_4242B0((int)&v59);
    *(_BYTE *)(v49 + 22) = v32;
    v34 = sub_98EBB0((int)&v59, (char *)&v50 + 3, 2);
    LOBYTE(v54) = 2;
    v61 = sub_991D50(v34);
    v60 = v35;
    LOBYTE(v54) = 0;
    sub_4242B0((int)&v59);
    if ( v32 < (_BYTE)v61 )
    {
      if ( a6 & 2 )
      {
        v36 = sub_98EBB0((int)&v59, (char *)&v50 + 3, 2);
        LOBYTE(v54) = 3;
        v21 = sub_991D50(v36);
        v60 = v37;
        LOBYTE(v54) = 0;
        if ( (v59 & 0x5F) == 16 )
        {
          if ( v62 )
            sub_99BEF0((void **)&v62, v63, 0);
        }
        v38 = (int *)v52;
        *(_BYTE *)(v49 + 22) = v21;
        v64 = *(_WORD *)v20;
        v65 = *(_DWORD *)v19;
        sub_53B120(v38, (int)&v46, 252);
      }
    }
    result = 1;
  }
  return result;
}
[/c]
Присмотревшись к этой процедурке в OllyDbg и софт-айсе, мои догадки начали понемного подтверждаться - все ихние файлики данных унифицированы и открываются вроде как только через эту процедуру. Просто слишком они в ней что-то намудрили и я погряз в её анализе… :(
В общем, предлагаю объединиться и вскрыть это дело.
У кого еще есть какие дельные соображения по этому поводу?
Если есть желание пообщаться в привате:
ася 55-111-5
trapmen гмаил.ком
готов приобрести реальные наработки по этой теме…
P.S.: Зарапидил исследуемые файлы и C-листинг, который выплюнул Hex-Rays: cronos_3_04_74_all_sn_reversed.rar
Post #: 1
Страниц:  [1]
Все форумы >> [Взлом программ] >> Работаем над CronosPlus 3.04.72 со скальпилем и молотком :)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.