![]() |
eXeL@B —› Основной форум —› Взлом программы из нескольких exeшников (основная прога взломана, а дочерние нет) |
Посл.ответ | Сообщение |
|
Создано: 02 ноября 2005 09:58 · Личное сообщение · #1 Добрый день! Помогите новичку ![]() Такая проблема: Есть прога "Психологические тесты" состоит из основной проги - ведение базы опрашиваемых и пр. и кучи exe с отдельными тестами. При выборе в меню определенного теста запускается отдельный exe файл. Защита - ключевая дискета с серийником. Основную программу сломал... теперь дискету не просит, говорит добро пожаловать и все функции доступны, но если нажимаешь какой-нибудь тест, то в окне теста высвечивается TPanel с надписью нелегальная копия (все проги на дельфи). При этом ничего не спрашивает и дисковод не хрюкает. Кстати под этой панелью (если ее скрыть) список опрашивываемых. Как тест узнает, что он нелегальный? Как может передаваться в тест легальность? Как отследить условия появления этой панели? Каким путем пойти? Подскажите ![]() ![]() |
|
Создано: 02 ноября 2005 10:02 · Личное сообщение · #2 |
|
Создано: 02 ноября 2005 10:15 · Личное сообщение · #3 |
|
Создано: 02 ноября 2005 10:47 · Личное сообщение · #4 |
|
Создано: 02 ноября 2005 16:58 · Личное сообщение · #5 |
|
Создано: 02 ноября 2005 22:17 · Личное сообщение · #6 Расскажу как ломалась основная программа. Засунул екзешник в ДеДе получил кучу форм и кучу асмовских проц. Выбрал процы, которые запускаются при создании (или активации не помню уж...) 2 форм: основной и формы которая просит засунуть дискету (название типа FormSN ![]() ![]() ![]() С отдельными тестами такого не прокатило... там дискету засунуть не просят и флоп молчит. и одинаковых проц при запуске разных форм дохрена... и только панелька в одном месте и лабелька в другом и кнопочки не все доступные... Такое ощущение, что осн. прога чего-то недодала тесту... Может такое быть, что при запуске и проверке серийника что-то записывается в память (в той проце, которуюя я подпортил) а потом тест из этого места берет? Или как в аналогичных случаях делается? (опыта нет) Или может отлавливать условие по появлению панельки? В легальной копии она должна быть скрыта. Насчет ссылки и закачки... www.cogito.msk.ru - но там такого нету... (видно давно было) и вообще инфы никакой... У меня все на компашке ~16М закачивать сюда не пустят ![]() А по кускам типа пару екзешников - так они без своих баз работать не будут... Насчет одинаковых защит - согласен одинаковые (между тестами), но в основной проге - другая... ![]() |
|
Создано: 04 ноября 2005 11:31 · Личное сообщение · #7 |
|
Создано: 04 ноября 2005 11:38 · Личное сообщение · #8 tracker пишет: Может такое быть, что при запуске и проверке серийника что-то записывается в память (в той проце, которуюя я подпортил) а потом тест из этого места берет? А еще может необходимую инфу хранить во временных файлах, реестре, использовать инфу, которая должна быть на дискете, и т.д. На пальцах ничего не объяснишь, смотреть надо... tracker пишет: ~16М закачивать сюда не пустят Закачай на www.webfile.ru/ ----- Сколько ни наталкивали на мысль – все равно сумел увернуться ![]() |
|
Создано: 04 ноября 2005 12:57 · Личное сообщение · #9 tracker, попробуй отследить какие файлы и ветви реестра использует основная прога(Filemon & Regmon тебе в помощь) может картина яснее станет. ValdiS пишет: А еще может необходимую инфу хранить во временных файлах, реестре, использовать инфу, которая должна быть на дискете, и т.д. Полностью согласен с ValdiS, скорее всего так и есть. ![]() |
|
Создано: 05 ноября 2005 18:50 · Личное сообщение · #10 tracker пишет: Ну соответственно и поменял в одном месте je на jne Ну а что сравнивается перед этим переходом? Смотри что с чем сравнивается, и ставить бряк на доступ к области памяти с этим значением, а там искать место, где туда записывается значение, при котором переход выполнится наоборот. Дело в том, что флаг ты не изменил, и вероятно, что он проверяется еще раз в другом месте, соответственно и пишет потом "нелегальная копия". И еще, менять je на jne нехорошо, надо менять или на jmp или на несколько nop. ----- Research is my purpose ![]() |
|
Создано: 09 ноября 2005 13:03 · Личное сообщение · #11 Закачал ![]() 2 Error_Log место где все происходит... .004E767B: E838FFFFFF call .0004E75B8 --- (2) .004E7680: 59 pop ecx .004E7681: 84C0 test al,al .004E7683: 750D jne .0004E7692 ; здесь я первый раз менял на je ...... .004E7688: E82BFFFFFF call .0004E75B8 ; здесь хрюкает дисковод .004E768D: 59 pop ecx .004E768E: 84C0 test al,al .004E7690: 7408 je .0004E769A ; здесь второй раз менял на jne ...... .004E76B2: E871D2F1FF call .000404928 --- (4) ...... .004E76BA: E845D2F1FF call .000404904 --- (5) .004E76BF: C3 retn Последние дни пялюсь на внутренности 0004E75B8 (там где хрюкает) пока безуспешно... Нашел, что на дискете ищет файл snumber.sn сделал дискету с таким файлом туда цифирки записал, даже потом вижу куда он эти цифры в память пишет... но дальше слишком все запутано... (для меня) ![]() |
|
Создано: 10 ноября 2005 02:09 · Личное сообщение · #12 ХИ! ЛЮДИ! ОН СЛОМАЛСЯ!!! ![]() правда нечаянно ![]() Проца там где хрюкало: .004E75B8: 55 push ebp .004E75B9: 8BEC mov ebp,esp .004E75BB: 83C4F0 add esp,-010 ;"Ё" .004E75BE: 53 push ebx .004E75BF: 8BD8 mov ebx,eax .004E75C1: 33C0 xor eax,eax .004E75C3: 8AC3 mov al,bl .004E75C5: 8D1485D4855300 lea edx,[005385D4][eax]*4 .004E75CC: 8D45F0 lea eax,[ebp][-10] .004E75CF: E848BAF1FF call .00040301C .004E75D4: BA3C764E00 mov edx,0004E763C .004E75D9: 8D45F0 lea eax,[ebp][-10] .004E75DC: B10D mov cl,00D ;" " .004E75DE: E809BAF1FF call .000402FEC .004E75E3: 8D55F0 lea edx,[ebp][-10] .004E75E6: 8B4508 mov eax,[ebp][08] .004E75E9: 052CFEFFFF add eax,0FFFFFE2C .004E75EE: E875D5F1FF call .000404B68 .004E75F3: 33DB xor ebx,ebx .004E75F5: 8B4508 mov eax,[ebp][08] .004E75F8: 50 push eax .004E75F9: E85EFDFFFF call .0004E735C .004E75FE: 59 pop ecx .004E75FF: 84C0 test al,al .004E7601: 740A je .0004E760D Исправил на jne .004E7603: 8B4508 mov eax,[ebp][08] .004E7606: 50 push eax .004E7607: E830FEFFFF call .0004E743C .004E760C: 59 pop ecx .004E760D: B801000000 mov eax,000000001 .004E7612: EB01 jmps .0004E7615 .004E7614: 40 inc eax .004E7615: 83F810 cmp eax,010 ;" " .004E7618: 7F13 jg .0004E762D .004E761A: 8B1530905300 mov edx,[00539030] .004E7620: 8A1402 mov dl,[edx][eax] .004E7623: 8B0D9C985300 mov ecx,[0053989C] .004E7629: 3A11 cmp dl,[ecx] .004E762B: 75E7 jne .0004E7614 .004E762D: 83F810 cmp eax,010 ;" " .004E7630: 7F02 jg .0004E7634 .004E7632: B301 mov bl,001 ;" " .004E7634: 8BC3 mov eax,ebx .004E7636: 5B pop ebx .004E7637: 8BE5 mov esp,ebp .004E7639: 5D pop ebp .004E763A: C3 retn И все заработало!!! Короче сделал я дискету, там серийник ввел 1111222233334444 такой длинный, потому что раньше встречал в памяти строчку ASCII 10 и тут какой-то цикл до 10, подправил файл, а он мне говорит, что таких длинных целых не бывает. Ну я потихоньку укорачивать стал... и тут бах и добро пожаловать ![]() и тесты работают полноценно. Завтра патч буду учиться писать ![]() А можно еще пару вопросов: 1. Если кто все-таки скачал эту хрень, то как бы поступил настоящий крякер ![]() Где и как вмешался бы в программу... или не вмешался бы (типа серийник бы подсмотрел) 2. Почему менять je на jne нехорошо, надо менять или на jmp или на несколько nop. ?
![]() |
|
Создано: 10 ноября 2005 08:00 · Личное сообщение · #13 Я так понимаю - по адресу .004E75F9: E85EFDFFFF call .0004E735C происходит какая-то проверка и результат заносится в AL. Спускайся в процедуру и в самом начале ставь mov al,1 ret После этого программа при вводе любого серийника будет считать себя зареганной. tracker пишет: как бы поступил настоящий крякер Пропатчит процедуру. tracker пишет: серийник бы подсмотрел Давно уже не работает. tracker пишет: Почему менять je на jne нехорошо Получится обратный результат - при вводе валидный серийников прога их не примет =))) ----- TBR ![]() |
|
Создано: 10 ноября 2005 08:13 · Личное сообщение · #14 Вдогонку: tracker пишет: .004E7688: E82BFFFFFF call .0004E75B8 ; здесь хрюкает дисковод .004E768D: 59 pop ecx .004E768E: 84C0 test al,al .004E7690: 7408 je .0004E769A ; здесь второй раз менял на jne Попробуй по адресу .004E75B8: 55 push ebp, вместо того, чтоб проходить, поставить mov al,1 ret А еще посмотри что стоит на выходе по .004E76BF: C3 retn. ----- TBR ![]() |
|
Создано: 10 ноября 2005 19:23 · Личное сообщение · #15 Оказалось не все тесты работают... только несколько... Оказалось серийник состоит из двух частей и целиком выглядит так: xxxxxxxxx-xxxx и от второй части зависит какие тесты запускаются, а какие нет Времени разбираться дальше уже не было, стал просто перебирать разные вторые части. при 200 - всего 2 теста работают... при FFF - почти все, а при FFFF - совсем все!!! Как я крут как я крут ![]() ![]() Что бы еще такого сломать ![]() Спасибо всем, кто помог добрым советом. ![]() |
![]() |
eXeL@B —› Основной форум —› Взлом программы из нескольких exeшников (основная прога взломана, а дочерние нет) |
Эта тема закрыта. Ответы больше не принимаются. |