Sentinel: Помогите разобратся с асмом

Тема в разделе "WASM.RESEARCH", создана пользователем hABi2aL, 8 авг 2005.

  1. hABi2aL

    hABi2aL New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2005
    Сообщения:
    16
    Привет всем. вот я тут исследую программку одну.

    я если признатся честно - не особо силен в асме.

    вопщем вот вызов rnbosproquery и после него какой то счет идет.

    может ктонить объяснить, как ето в обратную сторону раскррутить и засунуть в квери чтоп она не лазила в ключ, а сама щитала?



    .text:01247F4B lea ecx, [esp+428h+var_408]

    .text:01247F4F push 4

    .text:01247F51 lea edx, [esp+42Ch+var_420]

    .text:01247F55 push ecx

    .text:01247F56 lea eax, [esp+430h+var_41C]

    .text:01247F5A push edx

    .text:01247F5B push eax

    .text:01247F5C lea ecx, [esp+438h+var_404]

    .text:01247F60 push 38h

    .text:01247F62 push ecx

    .text:01247F63 call _RNBOsproQuery@24 ; RNBOsproQuery(x,x,x,x,x,x)

    .text:01247F68 mov eax, [esp+428h+var_420]

    .text:01247F6C sub eax, esi

    .text:01247F6E pop esi

    .text:01247F6F neg eax

    .text:01247F71 sbb eax, eax

    .text:01247F73 and al, 0FBh

    .text:01247F75 mov esp, ebp

    .text:01247F77 pop ebp

    .text:01247F78 retn
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    hABi2aL

    Тут же всё про эту функцию описано...





    В EAX копируется поле response32 - это последние 4 байта того, что сгенерировал ключ.





    Из response32 вычитается что-то (начальное значение ESI не приводится в вашем фрагменте кода).




    Код (Text):
    1. if(eax) eax = 0xFFFFFFFB;
     
  3. hABi2aL

    hABi2aL New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2005
    Сообщения:
    16
    Квантум,ну нифига я не понимаю в том что ты написал, но какой то намек чувствую.

    то есть - можно переписать квери взад? что оно делать то должно чтоп все нормалек работало?
     
  4. hABi2aL

    hABi2aL New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2005
    Сообщения:
    16
    квантум, у меня ета квери вызываеися четыре раза по адресам, на которые дамп указал алгоритм, значит в еси как раз и находится то число потом, которое и в ключе? тоесть мне нужно буквально свитч сделать в квери в зависимости от адреса и сложить тупо то что дали с етими числами? а их я в дебагере отслежу? я правильно понял?

    а сложение какое?
     
  5. hABi2aL

    hABi2aL New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2005
    Сообщения:
    16
    .text:01247AE0 push ebp

    .text:01247AE1 mov ebp, esp

    .text:01247AE3 and esp, 0FFFFFFF8h

    .text:01247AE6 sub esp, 424h

    .text:01247AEC push esi

    .text:01247AED push 0 ; time_t *

    .text:01247AEF mov esi, 80h

    .text:01247AF4 call _time

    .text:01247AF9 lea ecx, [eax+eax*2]

    .text:01247AFC lea ecx, [ecx+ecx*8]

    .text:01247AFF shl ecx, 2

    .text:01247B02 sub ecx, eax

    .text:01247B04 lea ecx, [eax+ecx*4]

    .text:01247B07 shl ecx, 4

    .text:01247B0A sub ecx, eax

    .text:01247B0C lea edx, [ecx+ecx*8]

    .text:01247B0F push edx ; unsigned int

    .text:01247B10 call _srand

    .text:01247B15 add esp, 8

    .text:01247B18

    .text:01247B18 loc_1247B18: ; CODE XREF: sub_1247AE0+7Aj

    .text:01247B18 cmp esi, 7Fh

    .text:01247B1B jg short loc_1247B21

    .text:01247B1D test esi, esi

    .text:01247B1F jge short loc_1247B5C

    .text:01247B21

    .text:01247B21 loc_1247B21: ; CODE XREF: sub_1247AE0+3Bj

    .text:01247B21 lea eax, [esp+428h+var_410]

    .text:01247B25 lea ecx, [esp+428h+var_418]

    .text:01247B29 push eax

    .text:01247B2A push ecx

    .text:01247B2B mov [esp+430h+var_410], 9999999Ah

    .text:01247B33 mov [esp+430h+var_40C], 40399999h

    .text:01247B3B mov [esp+430h+var_418], 0

    .text:01247B43 mov [esp+430h+var_414], 0

    .text:01247B4B call sub_1247A60

    .text:01247B50 add esp, 8

    .text:01247B53 call __ftol

    .text:01247B58 mov esi, eax



    вот вроде то что в еси пихает данные
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Не важно что там в ESI. Главное, что после вычитания (SUB EAX,ESI) в EAX будет либо ноль, либо отличное от нуля значение. В зависимости от этого (ноль или не-ноль), ф-ция вернёт 0 или -5 (0xFFFFFFFB). Поэтому, я бы предположил сначала, что разработчики - лентяи, а значит: в response32 должно быть тоже значение что и в ESI. Итак, можно убрать вызов RNBOsproQuery вместе с шестью предшествующими пушами и поставить на их место MOV EAX,ESI и JMP 01247F6C.
     
  7. hABi2aL

    hABi2aL New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2005
    Сообщения:
    16
    не, так былоб конешно хорошо, но

    ети четыре вызова такие очевидные тока в одном месте, но лентяи ещё штук двадцать вызовов квери сделали. поэтому всетки придется переписать квери.

    в моем случае она выглядит так

    .text:01237AB0 ; __stdcall RNBOsproQuery(x,x,x,x,x,x)

    .text:01237AB0 _RNBOsproQuery@24 proc near ; CODE XREF: sub_11E1000+135p

    .text:01237AB0 ; sub_11E1200+138p ...

    .text:01237AB0

    .text:01237AB0 arg_0= dword ptr 0Ch

    .text:01237AB0 arg_4= word ptr 10h

    .text:01237AB0 arg_8= dword ptr 14h

    .text:01237AB0 arg_C= dword ptr 18h

    .text:01237AB0 arg_10= dword ptr 1Ch

    .text:01237AB0 arg_14= dword ptr 20h

    .text:01237AB0

    .text:01237AB0 push esi

    .text:01237AB1 push edi

    .text:01237AB2 mov esi, [esp+arg_0]

    .text:01237AB6 test esi, esi

    .text:01237AB8 jnz short loc_1237AC3

    .text:01237ABA mov ax, 10h

    .text:01237ABE pop edi

    .text:01237ABF pop esi

    .text:01237AC0 retn 18h

    .text:01237AC3 ; ---------------------------------------------------------------------- -----

    .text:01237AC3

    .text:01237AC3 loc_1237AC3: ; CODE XREF: RNBOsproQuery(x,x,x,x,x,x)+8j

    .text:01237AC3 push esi

    .text:01237AC4 call _I386SPRO552SPRONETD@4 ; I386SPRO552SPRONETD(x)

    .text:01237AC9 mov edi, eax

    .text:01237ACB mov ax, [edi]

    .text:01237ACE cmp ax, 7243h

    .text:01237AD2 jnz short loc_1237B15

    .text:01237AD4 mov word ptr [edi], 7242h

    .text:01237AD9 push edi

    .text:01237ADA mov eax, [esp+4+arg_14]

    .text:01237ADE mov ecx, [esp+4+arg_10]

    .text:01237AE2 mov edx, [esp+4+arg_C]

    .text:01237AE6 push eax

    .text:01237AE7 mov eax, [esp+8+arg_8]

    .text:01237AEB push ecx

    .text:01237AEC mov cx, [esp+0Ch+arg_4]

    .text:01237AF1 push edx

    .text:01237AF2 push eax

    .text:01237AF3 push ecx

    .text:01237AF4 push esi

    .text:01237AF5 call _SSP630AP@24 ; SSP630AP(x,x,x,x,x,x)

    .text:01237AFA push eax

    .text:01237AFB call _SSP630CO

    .text:01237B00 mov [edi+6], ax

    .text:01237B04 add esp, 8

    .text:01237B07 mov word ptr [edi], 7243h

    .text:01237B0C mov ax, [edi+6]

    .text:01237B10 pop edi

    .text:01237B11 pop esi

    .text:01237B12 retn 18h

    .text:01237B15 ; ---------------------------------------------------------------------- -----

    .text:01237B15

    .text:01237B15 loc_1237B15: ; CODE XREF: RNBOsproQuery(x,x,x,x,x,x)+22j

    .text:01237B15 cmp ax, 7242h

    .text:01237B19 jnz short loc_1237B4A

    .text:01237B1B mov eax, [esp+arg_14]

    .text:01237B1F push edi

    .text:01237B20 mov ecx, [esp+4+arg_10]

    .text:01237B24 push eax

    .text:01237B25 mov edx, [esp+8+arg_C]

    .text:01237B29 push ecx

    .text:01237B2A mov cx, [esp+0Ch+arg_4]

    .text:01237B2F push edx

    .text:01237B30 mov eax, [esp+10h+arg_8]

    .text:01237B34 push eax

    .text:01237B35 push ecx

    .text:01237B36 push esi

    .text:01237B37 call _SSP630AP@24 ; SSP630AP(x,x,x,x,x,x)

    .text:01237B3C push eax

    .text:01237B3D call _SSP630CO

    .text:01237B42 add esp, 8

    .text:01237B45 pop edi

    .text:01237B46 pop esi

    .text:01237B47 retn 18h

    .text:01237B4A ; ---------------------------------------------------------------------- -----

    .text:01237B4A

    .text:01237B4A loc_1237B4A: ; CODE XREF: RNBOsproQuery(x,x,x,x,x,x)+69j

    .text:01237B4A mov eax, [esp+arg_14]

    .text:01237B4E mov ecx, [esp+arg_10]

    .text:01237B52 mov edx, [esp+arg_C]

    .text:01237B56 push eax

    .text:01237B57 mov eax, [esp+4+arg_8]

    .text:01237B5B push ecx

    .text:01237B5C mov cx, [esp+8+arg_4]

    .text:01237B61 push edx

    .text:01237B62 push eax

    .text:01237B63 push ecx

    .text:01237B64 push esi

    .text:01237B65 call _SSP630BK@24 ; SSP630BK(x,x,x,x,x,x)

    .text:01237B6A pop edi

    .text:01237B6B pop esi

    .text:01237B6C retn 18h

    .text:01237B6C _RNBOsproQuery@24 endp
     
  8. hABi2aL

    hABi2aL New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2005
    Сообщения:
    16
    Квантум, ещё вопрос

    вот я переписал вот так начало спроквери



    seg000:00057AB0 push ecx

    seg000:00057AB1 mov ecx, esi

    seg000:00057AB3 mov [esp+24h], ecx

    seg000:00057AB7 pop ecx

    seg000:00057AB8 add esp, 18h

    seg000:00057ABB retn 18h



    чего я сделал не так?)))))

    блин все во то хочется запихнуть еси туда, где он будет потом считыватся, так нет! нихера не получается
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine


    18h, а не 24h!!! Причём там хранится адрес response32, а не сам response32.

    Надо так:
    Код (Text):
    1. mov eax,[esp + 18h]
    2. mov [eax],ecx
     
  10. hABi2aL

    hABi2aL New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2005
    Сообщения:
    16
    Quantum

    слушай - нужно посоветоватся - у тебя есть аська?

    моя - 308736775