+ Reply to Thread
Results 1 to 7 of 7

Thread: Что этот код делает?

  1. #1

    Default Что этот код делает?

    Решал тут недавно крякмис, я то его решил, но вот решил разобрать еще сам алгоритм попробывать. Наткнуля в участе где скорее всего происходит обработка введеной строки на вот такую ф-ию:
    PHP Code:
    004296A0   8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
    004296A4   F7C1 03000000  TEST ECX,3
    004296AA   
    74 24          JE SHORT Password.004296D0
    004296AC   
    8A01           MOV AL,BYTE PTR DS:[ECX]
    004296AE   83C1 01        ADD ECX,1
    004296B1   
    84C0           TEST AL,AL
    004296B3   
    74 4E          JE SHORT Password.00429703
    004296B5   
    F7C1 03000000  TEST ECX,3
    004296BB   
    .^75 EF          JNZ SHORT Password.004296AC
    004296BD   
    05 00000000    ADD EAX,0
    004296C2   
    8DA424 0000000>LEA ESP,DWORD PTR SS:[ESP]
    004296C9   8DA424 0000000>LEA ESP,DWORD PTR SS:[ESP]
    004296D0   8B01           MOV EAX,DWORD PTR DS:[ECX]
    004296D2   BA FFFEFE7E    MOV EDX,7EFEFEFF
    004296D7   
    03D0           ADD EDX,EAX
    004296D9   
    83F0 FF        XOR EAX,FFFFFFFF
    004296DC   
    33C2           XOR EAX,EDX
    004296DE   
    83C1 04        ADD ECX,4
    004296E1   
    A9 00010181    TEST EAX,81010100
    004296E6   
    .^74 E8          JE SHORT Password.004296D0
    004296E8   
    8B41 FC        MOV EAX,DWORD PTR DS:[ECX-4]
    004296EB   84C0           TEST AL,AL
    004296ED   
    74 32          JE SHORT Password.00429721
    004296EF   
    84E4           TEST AH,AH
    004296F1   
    74 24          JE SHORT Password.00429717
    004296F3   
    A9 0000FF00    TEST EAX,0FF0000
    004296F8   
    74 13          JE SHORT Password.0042970D
    004296FA   
    A9 000000FF    TEST EAX,FF000000
    004296FF   
    74 02          JE SHORT Password.00429703
    00429701   
    .^EB CD          JMP SHORT Password.004296D0
    00429703   
    8D41 FF        LEA EAX,DWORD PTR DS:[ECX-1]
    00429706   8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
    0042970A   2BC1           SUB EAX,ECX
    0042970C   
    C3             RETN
    0042970D   
    8D41 FE        LEA EAX,DWORD PTR DS:[ECX-2]
    00429710   8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
    00429714   2BC1           SUB EAX,ECX
    00429716   
    C3             RETN
    00429717   
    8D41 FD        LEA EAX,DWORD PTR DS:[ECX-3]
    0042971A   8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
    0042971E   2BC1           SUB EAX,ECX
    00429720   
    C3             RETN
    00429721   
    8D41 FC        LEA EAX,DWORD PTR DS:[ECX-4]
    00429724   8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
    00429728   2BC1           SUB EAX,ECX
    0042972A   
    C3             RETN 
    Собственно, не могу понять, что она вообще делает. На вход принимает введеную строку...
    Если смотреть по отладчику и что получается в ЕАХ, то очень по хоже что она возвращает длину строки, но если это так тогда я не пойму как оно это делает...=)

    Вызов ф-ии находится по адрессу 0х0042871E. Вот сам участок в к-ом данная ф-ия вызывается, где собственно я и предпологаю, что происходит обработка строки, к-ую я ввел:
    PHP Code:
    00428711  |> 8B45 D4        /MOV EAX,DWORD PTR SS:[EBP-2C]
    00428714  |. 83C0 01        |ADD EAX,1
    00428717  
    |. 8945 D4        |MOV DWORD PTR SS:[EBP-2C],EAX
    0042871A  
    |> 8D45 EC         LEA EAX,DWORD PTR SS:[EBP-14]
    0042871D  |. 50             |PUSH EAX
    0042871E  
    |. E8 13DFFFFF    |CALL Password.00426636
    00428723  
    |. 83C4 04        |ADD ESP,4
    00428726  
    |. 3945 D4        |CMP DWORD PTR SS:[EBP-2C],EAX
    00428729  
    |. 73 4D          |JNB SHORT Password.00428778
    0042872B  
    |. 8B45 D4        |MOV EAX,DWORD PTR SS:[EBP-2C]
    0042872E  |. 0FBE4C05 EC    |MOVSX ECX,BYTE PTR SS:[EBP+EAX-14]
    00428733  |. 83F9 20        |CMP ECX,20
    00428736  
    |. 74 3E          |JE SHORT Password.00428776
    00428738  
    |. 8B45 D4        |MOV EAX,DWORD PTR SS:[EBP-2C]
    0042873B  |. 0FBE4C05 EC    |MOVSX ECX,BYTE PTR SS:[EBP+EAX-14]
    00428740  |. 034D E0        |ADD ECX,DWORD PTR SS:[EBP-20]
    00428743  |. 8B55 D4        |MOV EDX,DWORD PTR SS:[EBP-2C]
    00428746  |. 884C15 EC      |MOV BYTE PTR SS:[EBP+EDX-14],CL
    0042874A  
    |. 8B45 D4        |MOV EAX,DWORD PTR SS:[EBP-2C]
    0042874D  |. 0FBE4C05 EC    |MOVSX ECX,BYTE PTR SS:[EBP+EAX-14]
    00428752  |. 83F9 61        |CMP ECX,61
    00428755  
    |. 7C 0D          |JL SHORT Password.00428764
    00428757  
    |. 8B45 D4        |MOV EAX,DWORD PTR SS:[EBP-2C]
    0042875A  |. 0FBE4C05 EC    |MOVSX ECX,BYTE PTR SS:[EBP+EAX-14]
    0042875F  |. 83F9 7A        |CMP ECX,7A
    00428762  
    |. 7E 12          |JLE SHORT Password.00428776
    00428764  
    |> 8B45 D4        |MOV EAX,DWORD PTR SS:[EBP-2C]
    00428767  |. 0FBE4C05 EC    |MOVSX ECX,BYTE PTR SS:[EBP+EAX-14]
    0042876C  |. 83E9 1A        |SUB ECX,1A
    0042876F  
    |. 8B55 D4        |MOV EDX,DWORD PTR SS:[EBP-2C]
    00428772  |. 884C15 EC      |MOV BYTE PTR SS:[EBP+EDX-14],CL
    00428776  
    |>^EB 99          \JMP SHORT Password.00428711 

    P.S.: статью по тому как решил это задания я сделаю на выходных и выкину, а пока хочется разобраться какой алгоритм создания строки, а то делать табличку замены символов конечно круто, но...=)
    Attached Files

  2. Пользователь сказал cпасибо:
    root (17-01-2013)
  3. #2
    korsader's Avatar

    Default Re: Что этот код делает?

    Алго простое. Берем введенное имя. К каждому символу прибавляем 3. Полученный результат сравниваем с строкой "nluloo". Для того, что бы найти правильное имя, из каждого символа строки "nluloo", вычитаем 3.
    Теперь password. К каждому символу пароля прибавляем 5. Полученный результат сравниваем с строкой "rzwfyta". Для того, что бы найти правильное пасс, из каждого символа строки "rzwfyta", вычитаем 5.
    Итог:
    name:kirill
    password:murato\

  4. Пользователь сказал cпасибо:
    root (17-01-2013)
  5. #3

    Default Re: Что этот код делает?

    а посл. букву в пароле специально не правильную поставили?
    И вы дошли к этому исходя из асма? потому что я например взял просто посмотре на сколько отличается то что мы должны получило нлуло это и то что оно там нашифировало...
    я просто не могу понять что по сути делает первая часть кода, что я скинул.... и оно по ходу нигде не используется.
    Last edited by coldfire; 17-01-2013 at 10:44.

  6. #4
    korsader's Avatar

    Default Re: Что этот код делает?

    Первая часть кода возвращает длинну строки. Результат в регистре eax

  7. #5

    Default Re: Что этот код делает?

    Все таки я тогда был прав, но что-то оно как-то калечно это делает)

    По поводу того почему я посчитал, что вы не правильный пароль дали... просто я muratov получил код и он тоже был правильный, вот для этого я и хочу разобраться почему)
    Last edited by coldfire; 17-01-2013 at 12:05.

  8. #6
    korsader's Avatar

    Default Re: Что этот код делает?

    Твой пасс правильный. Думаю сам догадаешься почему )). Проверка здесь:
    0042880F |. 0FBE4C05 EC |MOVSX ECX,BYTE PTR SS:[EBP+EAX-14]
    00428814 |. 83F9 7A |CMP ECX,7A
    00428817 |. 7E 12 |JLE SHORT 0042882B
    00428819 |> 8B45 BC |MOV EAX,DWORD PTR SS:[EBP-44]
    0042881C |. 0FBE4C05 EC |MOVSX ECX,BYTE PTR SS:[EBP+EAX-14]
    00428821 |. 83E9 1A |SUB ECX,1A

  9. #7

    Default Re: Что этот код делает?

    но что-то оно как-то калечно это делает)
    Нормально делает. Проверка идет не побайтово, а двордами и каждый дворд "просвечивается" в поисках нулевого байта. В strlen из ntdll точно такой же код.
    Last edited by Sholar; 17-01-2013 at 15:58.

  10. Пользователь сказал cпасибо:
    coldfire (18-01-2013)
+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:34
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org