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

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

Ранг: 4.1 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 29 ноября 2009 01:13 · Поправил: Amidosha
· Личное сообщение · #1

Здраствуйте, уважаемые пользователи данного ресурса, кто может мне объяснить сею генерацию серийника в данном крекми, ни как не врублюсь, что-то, спасибо, крекми предлагается.

Code:
  1. LEA EAX,DWORD PTR SS:[EBP-4] - На мой взгляд тут кладется не правильный серийник
  2. CALL cracme_b.00404D40 - вызов генерации как я думаю
  3. MOV EDX,DWORD PTR SS:[EBP-4]
  4. MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]
  5. SUB EDX,12
  6. MOV BYTE PTR DS:[EAX+EBX-1],DL
  7. INC EBX
  8. CMP EBX,9 - количество знаков правильного серийника, может я и не прав
  9. JNZ SHORT cracme_b.0046EE19- выход из под программы генерации


http://ifolder.ru/15209935




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 29 ноября 2009 02:45 · Поправил: Isaev
· Личное сообщение · #2

Amidosha пишет:
На мой взгляд тут кладется не правильный серийник

тут берутся символы от твоего серийника
пару строчек ниже строка
"+g\`SY++"
прибавляешь к каждому символу 0x12 получаешь серийник "=ynrek=="

где ты его нашёл?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 4.1 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 29 ноября 2009 12:55
· Личное сообщение · #3

crackme где то откопал на просторах интернета, а еще вопросик, где вы в коде нашли указание на то что к каждому +g\`SY++ символу, прибавляется 0x12 и по чему именно это.

CMP EBX,9 - количество знаков правильного серийника, может я и не прав, оказывается был не прав.



Ранг: 4.1 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 29 ноября 2009 20:16
· Личное сообщение · #4

Вот как я понял правильный серийник =ynrek==
На примере хотя бы двух символов правильного серийника, напишите если не трудно, как именно они высчитываются, то есть полуачется =y например, ни как не допру, или не мое это или читать еще надо что нить. спасибо



Ранг: 0.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 ноября 2009 17:54 · Поправил: byteResearcher
· Личное сообщение · #5

Code:
  1. 0046EE24   movzx edx, byte ptr ds:[edx+ebx-1]  ; edx=ВведенныйКлюч[1]
  2. 0046EE29   sub edx, 12                                        ; edx=edx-0x12
  3. 0046EE2C   mov byte ptr ds:[eax+ebx-1], dl        ; записали в память по адресу eax+ebx-1 один символ
  4.                                                                               ; посчитанного ключа
  5. 0046EE30   inc ebx                                                ; следующий символ




все происходит здесь

Code:
  1. 0046EE19  lea eax, dword ptr ss:[ebp-4]
  2. 0046EE1C  call 00404D40                           ; cracme_.00404D40
  3. 0046EE21  mov edx, dword ptr ss:[ebp-4]
  4. 0046EE24  movzx edx, byte ptr ds:[edx+ebx-1]
  5. 0046EE29  sub edx, 12
  6. 0046EE2C  mov byte ptr ds:[eax+ebx-1], dl
  7. 0046EE30  inc ebx
  8. 0046EE31  cmp ebx, 9
  9. 0046EE34  jnz short 0046EE19                      ; cracme_.0046EE19


Вводим "123456" и становимся на адрес 0x0046EE21

Code:
  1. 0046EE21  mov edx, dword ptr ss:[ebp-4]
  2. Stack ss:[0012FBA0]=00B1CA00, (ASCII "123456")
  3. edx=00B1CA00, (ASCII "123456")


В EDX занесли строку "123456"

Шагаем далее

Code:
  1. 0046EE24  movzx edx, byte ptr ds:[edx+ebx-1]
  2.  
  3. ds:[00B1C910]=31 ('1')
  4. edx=00B1C910, (ASCII "123456")


В EDX (его младшую половину DL который 8 байт) занесли значение ASCII символа "1" = 0x31

основное действо

Code:
  1. 0046EE29 sub edx, 12
отняли от DL 0x12,т.е. первый символ=0x31 - 0x12 = 0x0000001F

Останавливайся на каждой операции и смотри в какую сторону поменялись регистры/стек после
исполнения каждой строки кода и выполняй все что здесь описано. Основная часть выше,
потом передается управление на процедуру сравнения, которая сравнивает каждый символ
введенного ключа - 0x12 со строкой "+g\`SY++" - логично предположить, что если провести
обратную операцию над строкой "+g\`SY++" то получится правильный ключ



Ранг: 4.1 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 30 ноября 2009 23:09
· Личное сообщение · #6

спасибо огроменное



Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 апреля 2010 00:23 · Поправил: compact
· Личное сообщение · #7

аналогичный вопрос. вроде и место понятно, где сообщение об успешном вводе выводится, но как проверяется сразу не очевидно.
Code:
  1. .text:00401073 loc_401073:                             
  2. .text:00401073                 mov     esi, [esp+0DCh]
  3. .text:0040107A                 mov     edi, ds:GetDlgItemTextA
  4. .text:00401080                 push    40h
  5. .text:00401082                 lea     ecx, [esp+10h]
  6. .text:00401086                 push    ecx
  7. .text:00401087                 push    3EBh
  8. .text:0040108C                 push    esi
  9. .text:0040108D                 call    edi ; GetDlgItemTextA
  10. .text:0040108F                 push    40h
  11. .text:00401091                 lea     edx, [esp+54h]
  12. .text:00401095                 push    edx
  13. .text:00401096                 push    3EAh
  14. .text:0040109B                 push    esi
  15. .text:0040109C                 mov     ebx, eax
  16. .text:0040109E                 call    edi ; GetDlgItemTextA
  17. .text:004010A0                 test    ebx, ebx
  18. .text:004010A2                 mov     byte ptr [esp+90h], 0
  19. .text:004010AA                 mov     byte ptr [esp+4Ch], 0
  20. .text:004010AF                 jz      short loc_4010FC
  21. .text:004010B1                 test    eax, eax
  22. .text:004010B3                 jz      short loc_4010FC
  23. .text:004010B5                 lea     eax, [esp+94h]
  24. .text:004010BC                 push    eax
  25. .text:004010BD                 lea     ecx, [esp+54h]
  26. .text:004010C1                 push    ecx
  27. .text:004010C2                 lea     edx, [esp+14h]
  28. .text:004010C6                 push    edx
  29. .text:004010C7                 push    offset unk_402110
  30. .text:004010CC                 call    sub_4011F0
  31. .text:004010D1                 add     esp, 10h
  32. .text:004010D4                 test    eax, eax
  33. .text:004010D6                 jz      short loc_4010FC
  34. .text:004010D8                 push    40h
  35. .text:004010DA                 push    offset aWellDone___ ;
  36. .text:004010DF                 push    offset aGoodWorkSerial ;
  37. .text:004010E4                 push    esi
  38. .text:004010E5                 call    ds:MessageBoxA
  39. .text:004010EB                 pop     edi
  40. .text:004010EC                 pop     esi
  41. .text:004010ED                 mov     eax, 1
  42. .text:004010F2                 pop     ebx
  43. .text:004010F3                 add     esp, 0CCh
  44. .text:004010F9                 retn    10h

http://slil.ru/29003280

4987_22.04.2010_CRACKLAB.rU.tgz - crackme.rar




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 23 апреля 2010 02:02
· Личное сообщение · #8

compact пишет:
но как проверяется сразу не очевидно.

Так для того и пишут crackme Если бы в них всё было очевидно, в чём тогда смысл?
004011F0 Процедура проверки, распечатай и изучай!

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 23 апреля 2010 06:13
· Личное сообщение · #9

byteResearcher
В EDX (его младшую половину DL который 8 байт) занесли значение ASCII символа "1" = 0x31

Edx = 32
DX = 16
DH = 8| DL = 8

Очевидно что DL = 8 бит

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2010 20:35 · Поправил: compact
· Личное сообщение · #10

Isaev пишет:
Так для того и пишут crackme Если бы в них всё было очевидно, в чём тогда смысл?

Если Вы нашли время написать это, то, возможно, ответите и на мои вопросы.

Правильно ли я понял, что адреса на логин и пароль хранятся в регистрах ebx и eax? Как понять, куда перейдет jmp off_4013D4[esi*4], если в конце листинга находится:
Code:
  1. .text:004013D4 off_4013D4      dd offset loc_40122C    
  2. .text:004013D4                 dd offset loc_401235    ; jump table for switch statement
  3. .text:004013D4                 dd offset loc_401242
  4. .text:004013D4                 dd offset loc_40136E
  5. .text:004013D4                 dd offset loc_40138F
  6. .text:004013D4                 dd offset loc_4012CA
  7. .text:004013D4                 dd offset loc_4012E4
  8. .text:004013D4                 dd offset loc_40126A
  9. .text:004013D4                 dd offset loc_401298
  10. .text:004013D4                 dd offset loc_401313
  11. .text:004013D4                 dd offset loc_4012FF
  12. .text:004013D4                 dd offset loc_401337
  13. .text:004013D4                 dd offset loc_401327
  14. .text:004013D4                 dd offset loc_40135E
  15. .text:004013D4                 dd offset loc_4013BD
?




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 24 апреля 2010 21:10 · Поправил: Coderess
· Личное сообщение · #11

Хотя вопрос не мне, но позволю себе ответить

off_4013D4:

Отметка начала массива, Esi индекс*4 (4 потому что размер dword)
А что в Esi?

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2010 21:33 · Поправил: compact
· Личное сообщение · #12

спасибо)
На сколько я понял, там указатель стека (esp), смещенный на 8, а потом (перед cases) вычли еще единичку. Но дело в том, что этот esi меняется со временем, и отследить, куда надо прыгать, у меня пока не выходит (кажется, что очень много вариантов нужно пересмотреть, обфускация какая-то).




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 25 апреля 2010 06:13
· Личное сообщение · #13

Используйте тогда отладчик. Ида способна выделять самомодифицирующийся код, но предпочтительнее OllyDbg

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes



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


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