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

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

Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 16 мая 2013 21:59
· Личное сообщение · #1

Доброго времени суток. Крекинг изучаю не очень долго, и каждый раз пытаюсь взять программы с защитой посложнее, на этот раз наткнулся на вот такую программу
http://gfile.ru/aY90

При ее запуске вылезает окошко с выбором регистрации на ПК или на Имя. после выбора появляется окно , а в нем текстовое поле с четырехзначным кодом и ниже кнопка "ОК" по ее нажатию программа закрывается.
Программа написана на Delphi 2010. Смотрел через IDR, и там есть главная форма - сама программа. А вот как к ней выйти не могу сообразить, через какие процедуры. пробовал изменять выполнение процедуры по нажатию кнопки регистрации на создание главной формы, в программе просто вылетала ошибка. подскажите , как быть. буду очень благодарен



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 16 мая 2013 22:06
· Личное сообщение · #2

Начни с FormCreate, потом посмотри с точки входа, ну и в процедурах инициализации может быть что-то важное. Это так, общие советы, спрятано может быть где угодно, нужно смотреть саму программу.

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

Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 16 мая 2013 22:54
· Личное сообщение · #3

Ну я саму программу скинул, точнее ссылку указал, так что если хотите сами посмотреть, как там все связано, то я против не буду, а если еще и подскажите что да как, вообще буду очень благодарен)))



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 08:19 · Поправил: ELF_7719116
· Личное сообщение · #4

skew пишет:
Ну я саму программу скинул, точнее ссылку указал, так что если хотите сами посмотреть

"Знаете, я сделал большое дело - кинул ссылку, а Вам то всего навсего осталось взломать...". Одно из двух:
1) Вы идете в запросы на взлом
2) Берете отладчик и начинаете самостоятельно ее ковырять
Code:
  1. 0071F125  |.  50            PUSH EAX                                 ; /Arg1
  2. 0071F126  |.  6A 00         PUSH 0                                   ; |/Arg4 = 0
  3. 0071F128  |.  6A FF         PUSH -1                                  ; ||Arg3 = -1
  4. 0071F12A  |.  6A 00         PUSH 0                                   ; ||Arg2 = 0
  5. 0071F12C  |.  6A FF         PUSH -1                                  ; ||Arg1 = -1
  6. 0071F12E  |.  E8 69B2FFFF   CALL check_info.0071A39C      ; |--
  7. 0071F133  |.  8BD0          MOV EDX,EAX                              ; |
  8. 0071F135  |.  8D45 EC       LEA EAX,[EBP-14]                         ; |
  9. 0071F138  |.  E8 FFBBCEFF   CALL 0040AD3C                            ; |[Trader.0040AD3C
  10. 0071F13D  |.  8B55 EC       MOV EDX,DWORD PTR SS:[EBP-14]            ; |
  11. 0071F140  |.  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8]             ; |
  12. 0071F143  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ; |
  13. 0071F146  |.  E8 D9F6FFFF   CALL address_open.0071E824                 ; \Trader.address_open

В процедуре по адресу 0071A39C, есть вложенная процедура(0071A078) которая собирает инфу о твоей системе(сначала о диске, через CreateFile->DeviceIoControl, а если админа нет, через GetVolumeInformation, затем CPU, и BIOS материнки), после проводит некоторые операции и сабмитит твою инфу по адресу http://qubebot.ru/agr/checkreg.php. (full_reg_code=XXXX-XXXX-XXXX-XXXX, prog=TRADER), в ответ приходит набор буков с двумя равно в конце (по секрету скажу, что это хэш BASE64): NXY3OA0KMjAxMy0wNS0xNw==, который расшифровывается как 4078
2013-05-17 (число, дата). Число используется чтобы найти файло с расширением .nona, в той же папке, где и traider.exe C:\target_folder\TRADER4078.nona... остальное можно почерпнуть в процедуре по адресу 0071F188.
Code:
  1. 0071F1B9  |.  A2 588F9800   MOV BYTE PTR DS:[988F58],AL
  2. 0071F1BE  |.  A0 F0DC7E00   MOV AL,BYTE PTR DS:[7EDCF0] 
  3. 0071F1C3  |.  34 01         XOR AL,01
  4. 0071F1C5  |.  2245 1C       AND AL,BYTE PTR SS:[EBP+1C] 
  5. 0071F1C8  |.  74 0D         JE SHORT 0071F1D7 //ВОПРОС ДНЯ: А ЧТО БУДЕТ ЕСЛИ ЗАНОПИТЬ ??? (или 0D на 00 исправить)
  6. 0071F1CA  |.  B8 DCFE7100   MOV EAX,0071FEDC
  7. 0071F1CF  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
  8. 0071F1D2  |.  E9 4A0C0000   JMP 0071FE21


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

Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 17 мая 2013 09:57 · Поправил: skew
· Личное сообщение · #5

ELF_7719116 пишет:
Знаете, я сделал большое дело - кинул ссылку, а Вам то всего навсего осталось взломать...". Одно из двух:


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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 10:11
· Личное сообщение · #6

skew пишет:
а только ее защита

Защита это SecuROM, ASProtect, Themida, Armadillo... Данная программа относиться к типу "подправил переход и пользуйся на здоровье", нету там ничего "защищенного" - сбор данных, обмен с сервером и взведение флага регистрации. Все открыто - дизассемблируй не хочу.



Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 17 мая 2013 10:45
· Личное сообщение · #7

ELF_7719116
парой и люди могут намудрить так, что мозг ломается))
И если не трудно подскажите, всегда хотел узнать, вот код
0071FDB6 | EB 5A JMP 0071FE12
0071FDB8 | E9 AF94CEFF JMP 0040926C

идут по порядку. Почему стоит нижний переход(зачем), если переход случится выше и никак тот, что ниже не заденет ?



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 17 мая 2013 10:47 · Поправил: Veliant
· Личное сообщение · #8

skew встань на второй JMP и нажми ctrl+r и увидишь откуда его задевает. Или бряк на нем.
То что они идут последовательно в коде, не означает что они последовательно выполняются.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 11:21
· Личное сообщение · #9

skew пишет:
И если не трудно подскажите, всегда хотел узнать, вот код
0071FDB6 | EB 5A JMP 0071FE12
0071FDB8 | E9 AF94CEFF JMP 0040926C

очевидно это делфийские исключения под try catch



Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 17 мая 2013 11:29
· Личное сообщение · #10

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

ELF_7719116Кстати оказывается все было еще проще чем я думал, спасибо тебе ))
От того адреса порылся в разных направлениях, нашел процедуру проверки покупки и теперь прога , как лицензия))



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 11:58
· Личное сообщение · #11

skew пишет:
нашел процедуру проверки покупки и теперь прога , как лицензия))

Радости то сколько "трейдеры" разоряться теперь из-за недополученных рублей
skew пишет:
спасибо тебе ))

внизу можно лайки ставить(как на ютубе)



Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 17 мая 2013 12:06
· Личное сообщение · #12

ELF_7719116XDD. Я же говорю мне интересно только обучение, поэтому и рад ))
А если бы хотел навредить создателям просто выложил бы ее в паблик и всего то.

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 12:53
· Личное сообщение · #13

skew пишет:
Теперь надо сообразить как это реализовать

У нас есть флаг регистрации(значение типа BOOL), если он равен 0 -> программа зарегистрирована, если 1 - над покупать. Клоню к тому, что несложно увидеть, что перед входом в функции проверки и следующей связи с сервером есть такой интересный переход:
Code:
  1. 0077746E  |.  E8 5D0EF2FF   CALL 006982D0                            ; [Trader.006982D0]
  2. 00777473  |.  803D F4DC7E00 CMP BYTE PTR DS:[7EDCF4],0     //Изначально [0x7EDCF4] = 1
  3. 0077747A  |.  0F84 DB000000 JE 0077755B                              //ЛЮБОПЫТНЫЙ ПЕРЕХОД
  4. ...[процедура регистрации]
  5. 00777528  |.  B8 44767700   MOV EAX,00777644                         ; UNICODE "Unlimited" - чисто крекерский вариант
  6. 0077752D  |.  E8 16CFECFF   CALL 00644448
  7. ...[идет правильная ветка]
  8. 0077754F  |.  E8 4006DCFF   CALL 00537B94                            ; [Trader.00537B94
  9. 00777554  |.  C605 F4DC7E00 MOV BYTE PTR DS:[7EDCF4],0   // Адрес 0x7EDCF4 аналогичен тому который проверяется вверху, но теперь он будет равен 0
  10. 0077755B  |>  33C0          XOR EAX,EAX //сюда прыгаем с ЛЮБОПЫТНОГО ПЕРЕХОДА

А теперь вопрос: что находиться в черном ящике Где нужно пропатчить, чтобы пользоваться бесплатной Unlimited версией?



Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 17 мая 2013 13:35 · Поправил: skew
· Личное сообщение · #14

ELF_7719116 ну при первой проверки заменить 1 на 0. а при записи во второй 0 на 1. если правильно понял.
ну а в "любопытном переходе" идет проверка на это самое число. может я и не прав



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 14:41
· Личное сообщение · #15

skew
Сейчас я Вас немного обрадываю
Тут все хитрее, чем казалось! Оказывается есть еще такой участок кода, где проверяется флаг регистрации + несколько дополнительных проверок(меня в конце концов смутил тот факт, почему JNE и так далеко прыгает):
Code:
  1. 0077FCFE  |.  E8 E9FEDEFF   CALL 0056FBEC                            ; [Trader.0056FBEC
  2. 0077FD03  |.  8B45 FC       MOV EAX,DWORD PTR SS:[LOCAL.1]
  3. 0077FD06  |.  83B8 3D060000 CMP DWORD PTR DS:[EAX+63D],0
  4. 0077FD0D  |.  0F95C2        SETNE DL
  5. 0077FD10  |.  8B45 FC       MOV EAX,DWORD PTR SS:[LOCAL.1]
  6. 0077FD13  |.  8B80 9C050000 MOV EAX,DWORD PTR DS:[EAX+59C]
  7. 0077FD19  |.  E8 CEFEDEFF   CALL 0056FBEC                            ; [Trader.0056FBEC
  8. 0077FD1E  |.  803D F4DC7E00 CMP BYTE PTR DS:[7EDCF4],0 // <--вот тут наш старый знакомый
  9. 0077FD25  |.  0F85 4D400000 JNE 00783D78
  10. 0077FD2B  |.  8B45 FC       MOV EAX,DWORD PTR SS:[LOCAL.1]
  11. 0077FD2E  |.  83B8 3D060000 CMP DWORD PTR DS:[EAX+63D],0
  12. 0077FD35  |.  0F84 813B0000 JE 007838BC
  13. 0077FD3B  |.  A1 0CE47E00   MOV EAX,DWORD PTR DS:[7EE40C] //0x7EE40C - еще один, но уже как PTR
  14. 0077FD40  |.  8338 00       CMP DWORD PTR DS:[EAX],0
  15. 0077FD43  |.  74 0C         JE SHORT 0077FD51
  16. 0077FD45  |.  A1 0CE47E00   MOV EAX,DWORD PTR DS:[7EE40C]
  17. 0077FD4A  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  18. 0077FD4C  |.  8338 00       CMP DWORD PTR DS:[EAX],0 //извлекаем DWORD оттуда
  19. 0077FD4F  |.  7E 3E         JLE SHORT 0077FD8F
  20. 0077FD51  |>  8D8D A8FCFFFF LEA ECX,[LOCAL.214] //в идеале нам сюда не нужно!
  21. 0077FD57  |.  BA F03F7800   MOV EDX,00783FF0
  22. 0077FD5C  |.  B8 20407800   MOV EAX,00784020                         ; UNICODE "Error Licence"
  23. 0077FD61  |.  E8 E246ECFF   CALL 00644448
  24. 0077FD66  |.  8B85 A8FCFFFF MOV EAX,DWORD PTR SS:[LOCAL.214]
  25. 0077FD6C  |.  E8 2F21E0FF   CALL 00581EA0                            ; [Trader.00581EA0
  26. 0077FD71  |.  E8 C29EC8FF   CALL 00409C38
  27. 0077FD76  |.  A1 0CE47E00   MOV EAX,DWORD PTR DS:[7EE40C]
  28. 0077FD7B  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  29. 0077FD7D  |.  6900 E8030000 IMUL EAX,DWORD PTR DS:[EAX],3E8
  30. 0077FD83  |.  71 05         JNO SHORT 0077FD8A
  31. 0077FD85  |.  E8 D682C8FF   CALL 00408060                            ; [Trader.00408060
  32. 0077FD8A  |>  E8 F966C8FF   CALL 00406488
  33. 0077FD8F  |>  A1 0CE47E00   MOV EAX,DWORD PTR DS:[7EE40C]
  34. 0077FD94  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
  35. 0077FD96  |.  6900 E8030000 IMUL EAX,DWORD PTR DS:[EAX],3E8 

Все что с "Error Licence" связано я поднопил/перепрыгнул. Вышел на это место, установив аппаратную точку останова по чтению/записи 7EDCF4.



Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 17 мая 2013 15:59 · Поправил: skew
· Личное сообщение · #16

ELF_7719116 не совсем вас понял. то есть по этому адресу начинается полная версия - купленная. после м
проверки флага активации делать джамп на 7EDCF4 ?



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 17 мая 2013 16:25
· Личное сообщение · #17

skew
Первично проверяется там, а после уже вторично 00777473 CMP BYTE PTR DS:[7EDCF4],0 ...
Самое главное: когда Добавить->Ok проверяется снова. дело в том, что как раз там же, где UNICODE "Error Licence" внизу идет процедура подключения к серверу, мы в любом случае должны туда попасть, а не перепрыгивать:
Code:
  1. 0077FD1E  |.  803D F4DC7E00 CMP BYTE PTR DS:[7EDCF4],0 // <--вот тут наш старый знакомый
  2. 0077FD25  |.  0F85 4D400000 JNE 00783D78 //перепрыгивает, если 1! Когда 0, тогда срабатывает дополнительная проверка ниже




Ранг: 7.5 (гость)
Активность: 0.030
Статус: Участник

Создано: 17 мая 2013 18:25 · Поправил: skew
· Личное сообщение · #18

ELF_7719116 то есть надо прыжок переставить в точку подключения, но через проверку?
а если просто на просто поставить вместо JE -> JMP. Дабы не сравнивать ни с чем а попросту пропустить сверки с активацией

Не пойму, поставил джамп на
0077FD35 /E9 823B0000 JMP 007838BC

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



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

Создано: 31 мая 2013 12:05
· Личное сообщение · #19

skew пишет:
Сама программа меня нисколько не интересует, а только ее защита, приводя примеры, какие сделали вы в голове откладывается и из частей таких примеров складывается подробная картина, а так как многие программы написаны по одному принципу, то их будет взломать уже проще, так как когда-то, какие то хорошие люди помогли разобраться с одной.


Защита в этой программе ни какого отношения к общепринятым методам защиты не имеет. Так что опыт может пригодиться только для одного - для взлома линейки программ nona-soft.

ELF_7719116 пишет:
"трейдеры" разоряться теперь из-за недополученных рублей


Это навряд ли. Доход с этой программы "только на пиво". Массовой она не может быть по определению, т.к. число пользователей ограничено узким кругом играющих в Perfect World. Понятно что в случае появления взломанной версии в паблике данное ПО исчезнет из продажи и работы в этом направлении в рамках "для всех" будут прекращены.




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 31 мая 2013 16:08
· Личное сообщение · #20

Nona
В следующий раз накрой программу каким небуть протектором и на каждую проданную версию ставьотдельный маркер и если она появится на паблике узнаешь от кого уплыла и примишь меры..

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




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

Создано: 31 мая 2013 16:11
· Личное сообщение · #21

ClockMan пишет:
на каждую проданную версию ставьотдельный маркер и если она появится на паблике узнаешь от кого уплыла и примишь меры..


так и делается )), только вот с мерами проблема. Максимум - отключение акка, но если версия ломаная, то уже поф будет.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 31 мая 2013 17:15
· Личное сообщение · #22

Ба! Разработчики! Защитите SecuROM'ом 8 с VM пожалуйста - мне статью дописать нужно



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 31 мая 2013 17:21
· Личное сообщение · #23

ELF_7719116 ыыыыы +1 и дай почитать.. все хотел на секьюр посмотреть.. а мне все не давали заказов с ней

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 31 мая 2013 17:27
· Личное сообщение · #24

VodoleY
уже больше года тут . Периодически копаю еще.

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


Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 31 мая 2013 17:56
· Личное сообщение · #25

Давайте ближе к теме уже.


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


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