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

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

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

Создано: 30 сентября 2008 22:50
· Личное сообщение · #1

Добрый день!

Вот, захотелось мне зарегистрировать такую программку: www.symtoys.com/pub/onyx3.exe

Для полной функциональности требуется регистрация. Имя, и серийник. Наверняка, серийник зависит от введённого имени.
Значит включил я olly, нашёл функцию которая считывает введённые имя и серийник (называется edittextgetter, на неё брейкпоинт ставте), и затем внимательно слежу, что происходит. А происходит то, что я не увидел в дампе памяти где же оно прописывает нужный серийник. Вижу кучу операций с введёнными данными, но ничего вразумительного. В результате ессно вылазит окно с просьбой ввести правильный серийник. Подтолкните к правильному решению. Не прошу готового, прошу сдвинуть меня с мёртвой точки. Думаю, глаз профессионала заметит там, что к чему...




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

Создано: 30 сентября 2008 23:42 · Поправил: coderess
· Личное сообщение · #2

Zergius2 не всеже проги хранят серийник в открытом виде, есть которые генерят по символьно, по этому ты мог и не увидить его, следи за регистров указывающим на имя, куда он копируется, как изменяется.

P.S. прогу еще не скачал...

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




Ранг: 120.2 (ветеран), 8thx
Активность: 0.120
Статус: Участник

Создано: 01 октября 2008 00:05
· Личное сообщение · #3

Попробуй начать с конца 0DBC3CE



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

Создано: 01 октября 2008 09:02
· Личное сообщение · #4

Не, порылся, не доходит, можно чуток подробнее




Ранг: 95.2 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 01 октября 2008 10:31 · Поправил: SecurAdmin
· Личное сообщение · #5

Code:
  1. 00D9C3A6    E8 321EFEFF     CALL 00D7E1DD        //Вызываем проверку валидности ключа
  2. 00D9C3AB    8BA5 20FFFFFF   MOV ESP,DWORD PTR SS:[EBP-E0]
  3. 00D9C3B1    8985 7CFFFFFF   MOV DWORD PTR SS:[EBP-84],EAX 
  4. 00D9C3B7    8945 D0         MOV DWORD PTR SS:[EBP-30],EAX
  5. 00D9C3BA    33C9            XOR ECX,ECX
  6. 00D9C3BC    3BC1            CMP EAX,ECX 
  7. 00D9C3BE    0F94C2          SETE DL
  8. 00D9C3C1    83E2 01         AND EDX,1
  9. 00D9C3C4    8895 7AFFFFFF   MOV BYTE PTR SS:[EBP-86],DL
  10. 00D9C3CA    33DB            XOR EBX,EBX
  11. 00D9C3CC    3BD2            CMP EDX,EBX
  12. 00D9C3CE    0F84 F6010000   JE 00D9C5CA         //А вот здесь, если ключ верный, то длинный-предлинный прыжок вниз


Саму функцию проверки ковырять очень лень....

-----
бессмысленные манипуляции не становятся более разумными если их повторять




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

Создано: 01 октября 2008 14:08
· Личное сообщение · #6

2SecurAdmin,

Я нашёл подобие того кода, что ты указал, вот:

Code:
  1. 00C74227   E8 84698FFF      CALL Onyx3.RuntimeStackCheck
  2. 00C7422C   8B65 C0          MOV ESP,DWORD PTR SS:[EBP-40]
  3. 00C7422F   8A05 094B1E00    MOV AL,BYTE PTR DS:[1E4B09]
  4. 00C74235   83F8 00          CMP EAX,0
  5. 00C74238   83E0 01          AND EAX,1
  6. 00C7423B   B9 01000000      MOV ECX,1
  7. 00C74240   3BC1             CMP EAX,ECX
  8. 00C74242   0F94C2           SETE DL
  9. 00C74245   83E2 01          AND EDX,1
  10. 00C74248   8855 F6          MOV BYTE PTR SS:[EBP-A],DL
  11. 00C7424B   33DB             XOR EBX,EBX
  12. 00C7424D   3BD3             CMP EDX,EBX
  13. 00C7424F   0F84 8E010000    JE 00C743E3


Это тоже самое или нет?

Но я не могу отловить выполнение этих строк, когда пытаюсь поставить брекпоинт, то оно мне говорит что "you try to place breakpoint outside of code section"

Я однозначно новичек, и вот не доходит до меня... ;)



Ранг: 120.2 (ветеран), 8thx
Активность: 0.120
Статус: Участник

Создано: 01 октября 2008 17:20
· Личное сообщение · #7

этот код появляется по ходу выполнения программы поэтому если ты стоишь на oep и пытаешься поставить на него бреак - получаешь облом, его нет, если ты нашел начало, встань на него, а потом ищи код который тебе показали это конец проверки (хотя первые две цифры адреса могут быть другие у меня 0DBC3CE , а у SecurAdmin D9С3CE), поэтому лучше ищи по сигнатуре или по коду пробегись, это полезнее будет.



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

Создано: 01 октября 2008 21:24
· Личное сообщение · #8

Ура, понял, нашёл, зарегистрировал как-бы. Но!
Когда я ее запускаю в след. раз, всё по прежнему. А где мне найти этот код в самом запускаемом файле, чтобы пропатчить?



Ранг: 120.2 (ветеран), 8thx
Активность: 0.120
Статус: Участник

Создано: 01 октября 2008 21:52
· Личное сообщение · #9

Смотри VirtualAlloc



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 02 октября 2008 08:06
· Личное сообщение · #10

Zergius2 пишет:
А где мне найти этот код в самом запускаемом файле, чтобы пропатчить?

заходишь сюда:
Code:
  1. 00D9C3A6    E8 321EFEFF     CALL 00D7E1DD        //Вызываем проверку валидности ключа

и смотришь все обращения к этой процедуре, ставишь бряки на эти обращения перезапускаешь прогу и увидишь кто вызывает проверку при старте проги, потом меняешь переход и какбе все.

-----
xchg dword [eax], eax





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 02 октября 2008 16:05
· Личное сообщение · #11

Zergius2
Заходи внутрь указаной функи
Code:
  1. 00D9C3A6    E8 321EFEFF     CALL 00D7E1DD        //Вызываем проверку валидности ключа

В самом конце функи при выходе будет следующей код
Code:
  1. 00D90A48    33C0                           XOR EAX,EAX
  2. 00D90A4A    8985 D8FCFFFF                  MOV DWORD PTR SS:[EBP-328],EAX
  3. 00D90A50    8B8D A8FCFFFF                  MOV ECX,DWORD PTR SS:[EBP-358]
  4. 00D90A56    3BC8                           CMP ECX,EAX
  5. 00D90A58    0F84 25000000                  JE 00D90A83
  6. 00D90A5E    51                             PUSH ECX
  7. 00D90A5F    E8 3C6478FF                    CALL Onyx3.RuntimeReraiseException
  8. 00D90A64    8BA5 A4FCFFFF                  MOV ESP,DWORD PTR SS:[EBP-35C]
  9. 00D90A6A    FFB5 A8FCFFFF                  PUSH DWORD PTR SS:[EBP-358]
  10. 00D90A70    E8 EB5C78FF                    CALL Onyx3.RuntimeUnlockObject
  11. 00D90A75    8BA5 A4FCFFFF                  MOV ESP,DWORD PTR SS:[EBP-35C]
  12. 00D90A7B    33C0                           XOR EAX,EAX
  13. 00D90A7D    8985 A8FCFFFF                  MOV DWORD PTR SS:[EBP-358],EAX
  14. 00D90A83    8B45 F0                        MOV EAX,DWORD PTR SS:[EBP-10]
  15. 00D90A86    5E                             POP ESI                                                       ; Onyx3.005CA350
  16. 00D90A87    5B                             POP EBX                                                       ; Onyx3.005CA350
  17. 00D90A88    81C4 5C030000                  ADD ESP,35C
  18. 00D90A8E    5D                             POP EBP                                                       ; Onyx3.005CA350
  19. 00D90A8F    C3                             RETN

Так вот нужно сделать чтобы в EAX возвращалось не 0.
Можно сделать так
Code:
  1. 00D90A48    33C0                           XOR EAX,EAX
  2. 00D90A4A    8985 D8FCFFFF                  MOV DWORD PTR SS:[EBP-328],EAX
  3. 00D90A50    8B8D A8FCFFFF                  MOV ECX,DWORD PTR SS:[EBP-358]
  4. 00D90A56    3BC8                           CMP ECX,EAX
  5. 00D90A58    0F84 1F000000                  JE 00D90A7D
  6. 00D90A5E    51                             PUSH ECX
  7. 00D90A5F    E8 3C6478FF                    CALL Onyx3.RuntimeReraiseException
  8. 00D90A64    8BA5 A4FCFFFF                  MOV ESP,DWORD PTR SS:[EBP-35C]
  9. 00D90A6A    FFB5 A8FCFFFF                  PUSH DWORD PTR SS:[EBP-358]
  10. 00D90A70    E8 EB5C78FF                    CALL Onyx3.RuntimeUnlockObject
  11. 00D90A75    8BA5 A4FCFFFF                  MOV ESP,DWORD PTR SS:[EBP-35C]
  12. 00D90A7B    33C0                           XOR EAX,EAX
  13. 00D90A7D    33C0                           XOR EAX,EAX
  14. 00D90A7F    B0 01                          MOV AL,1
  15. 00D90A81    90                             NOP
  16. 00D90A82    90                             NOP
  17. 00D90A83    8945 F0                        MOV DWORD PTR SS:[EBP-10],EAX
  18. 00D90A86    5E                             POP ESI                                                       ; Onyx3.005CA350
  19. 00D90A87    5B                             POP EBX                                                       ; Onyx3.005CA350
  20. 00D90A88    81C4 5C030000                  ADD ESP,35C
  21. 00D90A8E    5D                             POP EBP                                                       ; Onyx3.005CA350
  22. 00D90A8F    C3                             RETN

Метод может не идеален, но вроде работает как надо.

Всё. Ищем по опкодам в бинарнике указаный код и патчим.
Code:
  1. 00376264: 25 1F
  2. 00376287: 89 33
  3. 00376288: 85 C0
  4. 00376289: A8 B0
  5. 0037628A: FC 01
  6. 0037628B: FF 90
  7. 0037628C: FF 90
  8. 0037628D: 8B 89


Можно регаться на любое имя с любым серийником.

-----
Computer Security Laboratory




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

Создано: 02 октября 2008 21:29 · Поправил: Zergius2
· Личное сообщение · #12

Фууух, всё нашёл, и сделал её таки Прикрепляю таблетки для Onyx3 и для CardEditor к ней.

Спасибо вам большое за помощь

Вопрос к cadet и SecurAdmin:

А как именно вы поняли, что именно там окончательно решается - правильный ли серийник или нет?
Я хочу правильно понять эту логику...

rapidshare.com/files/150464652/41dd_02.10.2008_CRACKLAB.rU.tgz.html




Ранг: 95.2 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 03 октября 2008 06:12
· Личное сообщение · #13

Лично я ставил бряки на функции отвечающие за обращение к тексту введенного в поля серийного номера и имени (не помню уже точно, но вроде GetDlgItemText), после чего немного трассировал и выходил на тот участок кода.

PS: Не выкладывал бы ты здесь кряки...лучше залей на обменник, а сюда только ссылки дай.

-----
бессмысленные манипуляции не становятся более разумными если их повторять



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


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