Русский / Russian English / Английский

Сейчас на форуме: reverser, tihiy_grom (+6 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

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

Ранг: 1.1 (гость)
Статус: Участник

Создано: 9 июня 2013 13:10 · Поправил: AVL4EXELAB New!
Цитата · Личное сообщение · #1

Всем привет!
Помогите, пожалуйста, (научите) понять как генириуется в программе правильный ответ для регистрации программы на компе. ИД на разных компах - разное.
Сам софт я поламал (изменением адреса условного перехода), он принимает любой серийник, но интересно разобраться как можно узнать ПРАВИЛЬНЫЙ ответ. Также интересно откуда прграмма знает, что она уже зарегистрирована ранее, наверное в реестре где-то сохраняет этот факт...
Прикрепляю два файла. Ломаный мною и оригинал.
https://dl.dropboxusercontent.com/u/104910404/ARDUINO%20simulator.rar
Спасибо!

Ранг: 617.3 (!)
Статус: Участник

Создано: 9 июня 2013 13:20 · Поправил: Vovan666 New!
Цитата · Личное сообщение · #2

CALL 0067D9F0
декодирование ключа, должна получиться строка PROSIM

генерация там легкая, как раз для новичков

Ранг: 10.4 (новичок)
Статус: Участник

Создано: 9 июня 2013 13:35 · Поправил: dfnsff New!
Цитата · Личное сообщение · #3

AVL4EXELAB пишет:
Также интересно откуда прграмма знает, что она уже зарегистрирована ранее, наверное в реестре где-то сохраняет этот факт...


Скачай http://technet.microsoft.com/ru-ru/sysinternals/bb896645.aspx и посмотри что куда записывается

Тоже интересно как сделать кейген для программы. допустим есть некий сложный(!) код проверки ключа. как я понимаю выход один: встраивать брут в программу? нельзя никак сделать "обратную функцию" т.е. на вход этой функции подаём то что должно получится и получем ключ?))


Ранг: 669.3 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 9 июня 2013 14:12 New!
Цитата · Личное сообщение · #4

dfnsff
В этом-то и искусство - найти способ получить обратную функцию за допустимое время.

| Сообщение посчитали полезным: Artem_N, dfnsff, Abraham


Ранг: 23.1 (новичок)
Статус: Участник

Создано: 9 июня 2013 15:06 New!
Цитата · Личное сообщение · #5

Читай Нарваху, будет очень полезным для тебя.
http://exelab.ru/f/index.php?action=vthread&forum=5&topic=14847&page=1

Ранг: 23.1 (новичок)
Статус: Участник

Создано: 9 июня 2013 15:11 New!
Цитата · Личное сообщение · #6

dfnsff, AVL4EXELAB
Вот кстати еще интересный ресурс http://crackmes.de
Там чуть ли не с нулевым уровнем сложности крэкмисы есть, решая их, научитесь ломать более сложное и так по нарастающей.

| Сообщение посчитали полезным: AVL4EXELAB


Ранг: 19.9 (новичок)
Статус: Участник

Создано: 9 июня 2013 15:15 New!
Цитата · Личное сообщение · #7

рега хранится тут HKEY_LOCAL_MACHINE\SOFTWARE\SimForArduino 0.98.C.1

| Сообщение посчитали полезным: AVL4EXELAB


Ранг: 1.1 (гость)
Статус: Участник

Создано: 9 июня 2013 18:38 · Поправил: AVL4EXELAB New!
Цитата · Личное сообщение · #8

Спасибо за подсказки. Нарваху читаю денно и ночно. Даже перечитываю. Но что-то застрял, вот и осмелился спросить. PROSIM я видел в коде неноднократно и сравнение видел этого PROSIM. На радостях даже решил что ЭТО и есть пароль (один на всех, по приколу), но не тут-то было, конечно. Этот пароль не прокатил.
Я сейчас на курорте, интернет есть только в холле отеля, так-что в топик заглядываю раз на пару часов. Иду в номер попробую поработать исходя из Ваших подсказок.

Ранг: 10.4 (новичок)
Статус: Участник

Создано: 9 июня 2013 19:11 · Поправил: dfnsff New!
Цитата · Личное сообщение · #9

ARCHANGEL пишет:
В этом-то и искусство - найти способ получить обратную функцию за допустимое время.


т.е. если это возможно даже руками, значит можно всё это автоматизировать? или тут есть какие то ограничения? для MD5 хэшей например нету ничего обратного - только брут) мб аддон есть какой для olly для брута?)) Вобщем тут ещё и не 100 процентов можно сделать Кейген, ассиметричное шифрование не ломануть...пока)
Правда был такой случай что разрабы засунули данные для формирования закрытого ключа в прогу...так что да это Искусство!)

Ранг: 23.1 (новичок)
Статус: Участник

Создано: 9 июня 2013 19:22 New!
Цитата · Личное сообщение · #10

Даже руками ? Скорее головой и руками ибо это все не механически делается. В каждом случае индивидуальный подход и автоматизировать этот процесс не получится. Даже если используются хэши не обязательно знать как этот хэш получился(из какой строки), достаточно подменить неправильный хэш(сгенерированный твоим ключом) на правильный(если в программе он проскальзывает где-то), брут обычно не применяется , а если применяется то очень редко.

Ранг: 10.4 (новичок)
Статус: Участник

Создано: 9 июня 2013 19:24 · Поправил: dfnsff New!
Цитата · Личное сообщение · #11

ZX-CodeR пишет:
брут обычно не применяется , а если применяется то очень редко.


Тогда уже получится не кейген, а модификация программы, хотя всёже лучше чем тупо джамп в нужном месте - мало ли какие глюки могут из-за этого быть. Вобщем я уже понял что это всё ка пишет ARCHANGEL Искусство)

Ранг: 23.1 (новичок)
Статус: Участник

Создано: 9 июня 2013 19:32 New!
Цитата · Личное сообщение · #12

Генерация ключа при необратимом алгоритме невозможна, соответственно и кейген не сделать ко всему.
Тебе нужна практика чтобы это понять.
А глюки как ты говоришь могут возникнуть в разных случаях, например при проверке контрольной суммы файла и ли если ветка с проверкой содержала еще изменение каких то данных, которые нужны походу исполнения программы, вот как раз нахождение этого всего и правка файла так чтобы все работало, тоже можно отнести к искусству.


Ранг: 234.4 (наставник)
Статус: Участник
radical

Создано: 9 июня 2013 20:45 New!
Цитата · Личное сообщение · #13

dfnsff пишет:
ассиметричное шифрование не ломануть

Зависит от его типа и размера публичного ключа.

В даном случае Vovan666 всё верно сказал, алго простое.
Serial number = id тома С в виде (хххх - хххх)

Ну и после несложны преобразований в цикле, начиная с
0067DAF8 |> /8B45 C8 /MOV EAX, [LOCAL.14]

получается строка, которая сравнивается с PROSIM (точнее ищется PROSIM в декодированной полученной строке)

| Сообщение посчитали полезным: Abraham


Ранг: 10.4 (новичок)
Статус: Участник

Создано: 9 июня 2013 21:09 · Поправил: dfnsff New!
Цитата · Личное сообщение · #14

DimitarSerg пишет:
Зависит от его типа и размера публичного ключа.


Разумеется...я не говорю про те шифры что англичане в войну ломали на чудо агрегате.
Если тут всё просто - тогда вобщем и говорить неочем, просто хотел сказать что не так просто бывает и ломаная прога с обходом - успех

Ранг: 617.3 (!)
Статус: Участник

Создано: 9 июня 2013 21:20 New!
Цитата · Личное сообщение · #15

dfnsff
К чему ты вообще толлить начал про то чего не знаешь? какие-то бруты md5,ассиметрия, нахрена тут это вообще?

| Сообщение посчитали полезным: DimitarSerg, SReg, SergX



Ранг: 234.4 (наставник)
Статус: Участник
radical

Создано: 9 июня 2013 21:23 · Поправил: DimitarSerg New!
Цитата · Личное сообщение · #16

AVL4EXELAB
Всё очень просто: на примере 2-х первых символов (как получить PR), дальше сам...
мой ID тома F8328583
мейл ds@mail.ru

UNICODE "DS@MAIL.RU@@@@@@@"
UNICODE " "
UNICODE "F832 - 8583 "

| Сообщение посчитали полезным: AVL4EXELAB


Ранг: 10.4 (новичок)
Статус: Участник

Создано: 9 июня 2013 21:33 New!
Цитата · Личное сообщение · #17

Vovan666 пишет:
К чему ты вообще толлить начал про то чего не знаешь? какие-то бруты md5,ассиметрия, нахрена тут это вообще?


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


Ранг: 234.4 (наставник)
Статус: Участник
radical

Создано: 9 июня 2013 21:37 New!
Цитата · Личное сообщение · #18

dfnsff
Если кейген возможен, и там не RSA > 512бит либо ECDSA-113 либо еще что-то не кейгенящееся без патча, то лучше кейгенить.

Кейген всегда считался высшой степенью мастертства ;)

Конечно если сломать софтину для себя, чтобы только работало, то сойдет и переход поправить.


Ранг: 2006.0 (!!!!)
Статус: Модератор
retired

Создано: 9 июня 2013 21:57 New!
Цитата · Личное сообщение · #19

Хорош уже не по теме гонять.
dfnsff
Тебе мало было 1 философского топика про смысл реверса? 1 раз глаза на это закрыл, в следующий раз посты порежу.

| Сообщение посчитали полезным: Abraham


Ранг: 1.1 (гость)
Статус: Участник

Создано: 9 июня 2013 23:17 New!
Цитата · Личное сообщение · #20

Ого, понаписали тут, пока меня небыло
Зачем мне знать как генерится ключь - для самообразования. Ибо, переход я поправил довольно быстро( пару дней ушло), может, просто повезло. И коль я уже разбираюсь конкретно с этой программой, то хотелось-бы вытянуть с неё все соки в плане крекинга.
Это моя первая "проба пера" и я не программист, так-что не обезсудьтте.
Вот начал разбирать рекоменуемую процедуру и сразу затык.
CALL 0067D9F0.
Разбираю процедуру по винтикам:

0067D9F0 /$ 55 PUSH EBP // заносим в стек регистр ЕВР (000AF704)
0067D9F1 |. 8BEC MOV EBP,ESP // копируем ЕСП в ЕБП (000AF6D0)
0067D9F3 |. 83C4 AC ADD ESP,-54 // к ЕСП плюсует -54 (000AF6D0 -54 = 000AF67C)
0067D9F6 |. 53 PUSH EBX // в стек ЕВХ (022F5DB0)
0067D9F7 |. 33DB XOR EBX,EBX // обнуляем ЕВХ
0067D9F9 |. 895D AC MOV DWORD PTR SS:[EBP-54],EBX // ЗАТЫК. Помещают 00000000 КУДА? В стек? Почему ТАК делают?
0067D9FC |. 895D B0 MOV DWORD PTR SS:[EBP-50],EBX // ЗАТЫК. Помещают 00000000 КУДА? В стек? Почему ТАК делают?
0067D9FF |. 895D B4 MOV DWORD PTR SS:[EBP-4C],EBX // ЗАТЫК. Помещают 00000000 КУДА? В стек? Почему ТАК делают?
0067DA02 |. 895D CC MOV DWORD PTR SS:[EBP-34],EBX............
0067DA05 |. 895D C8 MOV DWORD PTR SS:[EBP-38],EBX
0067DA08 |. 895D C4 MOV DWORD PTR SS:[EBP-3C],EBX
0067DA0B |. 895D C0 MOV DWORD PTR SS:[EBP-40],EBX
0067DA0E |. 894D F4 MOV DWORD PTR SS:[EBP-C],ECX
0067DA11 |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
0067DA14 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
0067DA17 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

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

Ранг: 19.9 (новичок)
Статус: Участник

Создано: 9 июня 2013 23:39 New!
Цитата · Личное сообщение · #21

AVL4EXELAB
Там (HKEY_LOCAL_MACHINE\SOFTWARE\SimForArduino 0.98.C.1) появляется подраздел Unlock куда пишется верно введенный ключ мыло и серийник

Ранг: 617.3 (!)
Статус: Участник

Создано: 9 июня 2013 23:44 New!
Цитата · Личное сообщение · #22

AVL4EXELAB пишет:
// ЗАТЫК. Помещают 00000000 КУДА? В стек? Почему ТАК делают?

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

| Сообщение посчитали полезным: Abraham


Ранг: 10.4 (новичок)
Статус: Участник

Создано: 9 июня 2013 23:47 · Поправил: dfnsff New!
Цитата · Личное сообщение · #23

AVL4EXELAB пишет:
0067D9F9 |. 895D AC MOV DWORD PTR SS:[EBP-54],EBX // ЗАТЫК. Помещают 00000000 КУДА? В стек? Почему ТАК делают?
0067D9FC |. 895D B0 MOV DWORD PTR SS:[EBP-50],EBX // ЗАТЫК. Помещают 00000000 КУДА? В стек? Почему ТАК делают?
0067D9FF |. 895D B4 MOV DWORD PTR SS:[EBP-4C],EBX // ЗАТЫК. Помещают 00000000 КУДА? В стек? Почему ТАК делают?


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

Как новичок новичку рекомендую использовать IDA+hex rays, в IDA есть крутая функция Graph View. и интересная функция: hex rays, показывает псевдокод твоей функции на языке похожем на c++.

вот кусок твоего(из твоего поста) кода из IDA:
Code:
  1. push    ebp
  2. ;EBP-4h=>email
  3. ;EBP-8h=>ser
  4. ;EBP-Ch=>code1
  5. ;EBP+8h=>Result
  6. ;EBP-34h=>s
  7. ;EBP-38h=>sEmail
  8. ;EBP-3Ch=>sSerial
  9. ;EBP-40h=>sCode
  10. mov     ebp, esp
  11. add     esp, 0FFFFFFACh
  12. push    ebx
  13. xor     ebx, ebx
  14. mov     [ebp+var_54], ebx
  15. mov     [ebp+var_50], ebx
  16. mov     [ebp+var_4C], ebx
  17. mov     [ebp+var_34], ebx
  18. mov     [ebp+var_38], ebx
  19. mov     [ebp+var_3C], ebx
  20. mov     [ebp+var_40], ebx
  21. mov     [ebp+var_C], ecx
  22. mov     [ebp+var_8], edx
  23. mov     [ebp+var_4], eax
  24. mov     eax, [ebp+var_4]


гораздо лучше понимается! var_54,var_50... - переменные и там будет видно что с этими переменными делается
И ещё 1 момент: во время исследования программы лучше все переменные и функции переименовывать в понятные названия - в итоге получим хорошо читаемый код

| Сообщение посчитали полезным: AVL4EXELAB


Ранг: 1.1 (гость)
Статус: Участник

Создано: 10 июня 2013 22:27 New!
Цитата · Личное сообщение · #24

DimitarSerg пишет:
Всё очень просто: на примере 2-х первых символов (как получить PR), дальше сам...мой ID тома F8328583мейл ds@mail.ruUNICODE "DS@MAIL.RU@@@@@@@"UNICODE " "UNICODE "F832 - 8583 "

Делаю как Вы сказали.
Но не всё так гладко.
Первые 4-ре разряда - без проблем посчитал.
5-й - методом тыка-перебора-анализа-тупо сделал.
А 6-й ни в какую.
А именно:
Ид- 3C78 - 89EF
Мейл: @@@@@@@@list.ru

Считаю:
3 + 1 = 4+20+20=44-> D
C + 1 = D+20+22=4F-> O
7 + 1 = 8+20+1F=47-> G
8 + 1 = 9+20+23=4C-> L
-1 + 1 = 0+20+19=39-> 9
2D + 1 = 2E+20+1D=6B-> k

Получаю в коде PROSIxxx.
Букву М подобрать не могу. Вот мои попытки:
1-A
2-B
3-C
4-D
6-F
7-G
8-H
9-I
F-V
A-Q
B-R
a-q
b-r
o-
m-}
^-n
z-
0-@
!-1
M-]
O-_
G-W
H-X
J-Z
K-[
L-\

Почему 5 и 6 разряды не считаются нормально?
Где именно в коде программы виден алгоритм пересчёта?
Ибо, я ж ассемблер, типа, изучаю, а не тупо подбором кода зинимаюсь.
Помогите, пожалуйста, понять как в коде реализована формула трансформации из мейла и ИД винта в правильный пароль.
Разжуйте, если можно, а я постараюсь понять.
 eXeL@B —› Вопросы новичков —› Программу взломал, но хочу и не могу найти как генерируется правильный код регистрации.

Видеокурс ВЗЛОМ