Взлом программы PDF2TXT 2.9 [ Инструменты ] + OllyDebuger + ResHacker + HackersView [ О программе ] Ку, люди античата! Программа PDF2TXT, предназначенна для переконвертирования файлов из формата pdf в txt, соответственно. Ограничения по работе в незарегенной версии, 100 раз использования. Сегодня мы взломаем её не как всегда, а сделаем так чтобы она работала вечно, не вводя серийник. Поехали: [ Взлом - Отключение счётчика числа запусков] Вся эта приблуда, то-есть счётчик, содержиться в библиотеке verypdf.dll, её то мы и будем мучить в отладчике, благо библиотека не пакованная, как впрочем и сама программа. Итак начинаем: Загружаем программу, не в отладчик а просто так. Появиться окошко с просьбой ввести серийник, мы же его не вводим, а нажимаем кнопку Try. Видим окошко со следующей информацией: You have 99 times to try, please register... -тра-та-та (у вас число может быть другим, в зависимости от того, сколько раз вы запускали программу) Эту строку мы запоминаем и грузим в отладчик нашу библиотеку verypdf.dll. Сканируем её на ascii-строки и ищем часть этой строки (например: times to try) которую мы только-что запомнили. Находим, щёлкаем по ней 2 раза и попадаем в окно кода. Вы должны видеть следующее: PHP: 10001B5C > A1 D8730110 MOV EAX,DWORD PTR DS:[100173D8] 10001B61 . 894424 0C MOV DWORD PTR SS:[ESP+C],EAX 10001B65 B9 64000000 MOV ECX,64 10001B6A . 68 88720110 PUSH verypdf.10017288 ; ASCII "PDF2TXT v2.9" 10001B6F 2BCE SUB ECX,ESI 10001B71 . 8D5424 10 LEA EDX,DWORD PTR SS:[ESP+10] 10001B75 . 51 PUSH ECX 10001B76 . 68 40720110 PUSH verypdf.10017240 ; ASCII "Your have %d times - МЫ СДЕСЬ! 10001B7B . 52 PUSH EDX 10001B7C . C78424 F000000>MOV DWORD PTR SS:[ESP+F0],2 10001B87 . E8 1DA40000 CALL verypdf.1000BFA9 10001B8C . 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C] 10001B90 . 83C4 10 ADD ESP,10 10001B93 . 6A 30 PUSH 30 ; /Style = 10001B95 . 68 88730110 PUSH verypdf.10017388 ; |Title = "Software 10001B9A . 50 PUSH EAX ; |Text 10001B9B . 57 PUSH EDI ; |hOwner 10001B9C . FF15 3C330110 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA Теперь прикинем, по идее прога должна запускаться только 100 раз, так? Значит где-то это должно быть явно видно. Теперь внимание: По смещению 10001B65, регистр ECX, принемает значение 64! И тут вы скажете: Ну и что? Причём тут значение 64? А я вам скажу, что 100 в хексе (в шестнадцатиричной системе), как раз равняется 64! И значит это то, что нам нужно! Далее дело за малым, меняем 64 на значение побольше, например 2710 - 10 000 в десятичной системе. Затем править файл в Hiew, а именно : 10001B65 B9 10 27 00 00 Этими действиями, мы заставляем программу запускаться не 100 раз как обычно, а 10 000 раз! Но тем неменее, по истечении 10 000 раз, прога перестанет работать. "Почему?" - спросите вы. А потому что! Посмотрим ещё раз на код: PHP: 10001B65 B9 10270000 MOV ECX,2710 ; Изменённое значение! 10001B6A . 68 88720110 PUSH verypdf.10017288 ; ASCII "PDF2TXT v2.9" 10001B6F 2BCE SUB ECX,ESI ; !!!!!!!!!!!!!!!!!!!! 10001B71 . 8D5424 10 LEA EDX,DWORD PTR SS:[ESP+10] 10001B75 . 51 PUSH ECX 10001B76 . 68 40720110 PUSH verypdf.10017240 ; ASCII "Your have %d times 10001B7B . 52 PUSH EDX 10001B7C . C78424 F000000>MOV DWORD PTR SS:[ESP+F0],2 10001B87 . E8 1DA40000 CALL verypdf.1000BFA9 10001B8C . 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C] 10001B90 . 83C4 10 ADD ESP,10 10001B93 . 6A 30 PUSH 30 ; /Style = 10001B95 . 68 88730110 PUSH verypdf.10017388 ; |Title = "Software 10001B9A . 50 PUSH EAX ; |Text 10001B9B . 57 PUSH EDI ; |hOwner 10001B9C . FF15 3C330110 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA Смотрите на строку по адресу 10001B6F, там из ECX вычитается ESI. А как вы помните в ECX - находиться наше новое значение, в то время как в ESI - число настоящих запусков программы, то есть, например мы запустили программу 10 раз, тогда ESI, содержит значение A - 10 в хексе. Тут как бы счётчик: 1) Из ECX вычитается ESI 2) Выводиться сообщение с числом оставшихся запусков, то есть выводиться новое значение ECX! Как бы это исправить? Конечно можно сделать так, чтобы в ESI, всегда было значение 0 (нуль), но это не дзенский метод, мы просто занопим сам счётчик, делаем: PHP: ---БЫЛО--- 10001B6F 2BCE SUB ECX,ESI ---СТАЛО--- 10001B6F 90 NOP 10001B70 90 NOP Затем просто правим это в Hiew и наша прога работает ВЕЧНО! Потом можно с помощью ResHacker'а на этом окне, где просят ввести серийник, удалить все кнопки, кроме кнопки Try, удалить все поля ввода и написать чё-нить вроде: Cracked by: Vasya-Cracker, special 4 CCCP, а кнопку Try, переименовать в OK! Я прекрасно осознаю, что прогу можно было взломать просто вырубив проверку на валидный серийник, я просто хотел показать в этой статье, как можно манипулировать числом запусков программ. С тем же успехом это можно проделывать например с такими ограничениями: + Число открытых файлов + Число сохранений изменений + Число нажатий на кнопку И таких программ, с такими защитами очень много! Вот и всё! Все кто слушал - молодец! Спасибо за внимание. Всем бб! Но в этой проге есть косяк, его заметил hidden: В незарегистренной версии стоит ограничение на 10 страниц, и вот как это исправить: PHP: 00410E9C 75 39 JNZ SHORT pdf2txt.00410ED7 00410E9E |. 83FF 0A CMP EDI,0A 00410EA1 |. 7C 08 JL SHORT pdf2txt.00410EAB 00410EA3 C74424 10 0A00>MOV DWORD PTR SS:[ESP+10],0A 00410EAB |> 8B15 FCB24200 MOV EDX,DWORD PTR DS:[42B2FC] 00410EB1 |. 6A 24 PUSH 24 00410EB3 |. 68 AC6C4200 PUSH pdf2txt.00426CAC ; ASCII "Purchase prompt" 00410EB8 |. 68 286C4200 PUSH pdf2txt.00426C28 ; ASCII "This is a trial version. It will can only extract the first ten pages from the pdf file. Would you like to purchase PDF2TXT online?" 00410EBD |. 52 PUSH EDX 00410EBE |. E8 6DE4FFFF CALL pdf2txt.0040F330 00410EC3 |. 83C4 10 ADD ESP,10 00410EC6 |. 83F8 06 CMP EAX,6 00410EC9 |. 75 0C JNZ SHORT pdf2txt.00410ED7 00410ECB |. 6A 01 PUSH 1 00410ECD |. 68 FC6B4200 PUSH pdf2txt.00426BFC ; ASCII "http://www.verypdf.com/pdf2txt/pdf2txt.htm" 00410ED2 |. E8 D9590000 CALL <JMP.&verypdf.#5> 00410ED7 |> 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10] Функция проверки колва страниц находиться в главном модуле, то есть в файле pdf2txt.exe. Открываем его отладчиком, ищём строку: This is a trial version. It will can only extract the first ten pages from the pdf file. Would you like to purchase PDF2TXT online? И по адресу 00410E9C, вместо JNZ лепим JMP! Догадались что произойдёт? Прога просто проскочит проверку на 10 страниц и будет работать нормально. Вот и всё! Всё это актуально и для версии 3.2, только в 3.2 файлы запакованны UPX'ом! Распаковывайте: upx.exe <filename.nn> -d И Вперёд! (ц) KindEcstasy
Последняя версия этой программы 3.2, если не ошибаюсь... И довольно-таки не просто было найти 2.9... Нашел...залил - http://filefactory.ru/1162322295/pdf2txt.exe Будем пробывать )
Я вот не понимаю, какой прикол взламывать старые версии программы? Мне например понадабилась прога, я пошел скачал последнюю версию, крякнул, написал как и теперь пользуюсь. Темболее сам то ты пользуешся теперь этой прогай? Она ИМХО безполезна. А про это забыл?: ЗЫ Давай если крякаем какую-нить прогу, выкладывать эту версию, в чистом виде, например не репиде. т.к. после появления кряка, эта версия проги кудато исчезает и найти её давольно сложно.
Да просто есть у меня старые диски, ну а на них софт я вот и беру оттуда проги. Просто качать прогу новой версии у меня нет ни времени, ни денег (итак траффик экономлю как могу). А новичкам потренироваться и старые проги подойдут, но это моё мнение. Насчёт того, что я забыл: Я честно говоря этого и не видел даже, так что помидорами не кидайся =). Заинсталю заново - посмотрю. Насчёт выкладывания на рапиде: Да я обморозился, но я же говорил, что каждый байтик траффика экономлю. А вообще конечно я поддерживаю твою мысль про то, чтобы выкладывать прогу в чистом виде. Со следующего раза так и буду делать. Спасибо вам за критику Hidden. C уважением, KindEcstasy.
to hidden Какой прикол взламывать старые программы? Вопрос не по адресу, потому как эту тему создавал не я... Выложил 2.9 версию, потому как на ней тут показывали взлом программы... И я не уверен, что в 3.2 такая же система... Поэтому хотелось бы четко попробывать на той версии, которую описывают.. На счет использования этой программы вовсе...По правде говоря впервые о ней услышал ... Решил просто-напросто так сказать "проверить на работоспособность" статью...именно на примере той самой версии, о которой тут и написано... На счет того нужна ли она или нет...мне бы она была нужна, если бы она нормально понимала русский язык, а то достает одни каракули вместо русских букв... Согласен с тобой на тему, что надо было последнюю версию рассматривать, но извини, притензия явно не по адресу...
Да только когда второй раз прочитал твой пост, лишь тогда только понял )... Почему именно так...не знаю...видимо переучился сегодня )... По теме... to KindEcstasy Изучал ли ты последнюю версию? Которая именно 3.2? Если да, то прошу тебя об этом тут рассказать...
насчёт 3.2 - нет не изучал, если даш ссылку то посмотрю. Начсёт ограничения на 10 страниц ( про замечание hidden'a ), статью дополнил!!!
2 Koller: Ты писал: Изучал ли ты последнюю версию? Которая именно 3.2? Если да, то прошу тебя об этом тут рассказать... Да я скачал и посмотрел. Защита там не изменилась, просто теперь они запаковали всё UPX'ом. Твои действия: 1) Распаковываешь библиотеку verypdf.dll (upx.exe verypdf.dll -d) 2) Патчишь вот так: 10001170 33C0 XOR EAX,EAX 10001172 40 INC EAX 10001173 C3 RETN 3) Запускаешь, высвечивается предложение ввести серийник, ты жмёшь ОК (или чё там я уже не помню). Прога радуется-соответственно радуешься и ты. 4)Всё. Можно нормально работать с прогой. Конечно не принципиально как ты будешь крякать, можно и так, как я описывал в версии 2.9. з.Ы. Про конструкцию вида: 10001170 33C0 XOR EAX,EAX 10001172 40 INC EAX 10001173 C3 RETN Я уже писал в своих статьях. Читай их. Если не разберёшся, напиши. Я напишу статью и кину те на мыло. зз.ы Только оставь мыло =) бб
не вижу смысла в обсеждении "за4ем крякать старый софт". туторы тут выложены для образовательских целей и в целях поднятия "экспы" их исследователя. кому нужен варез - идем на варез.ру или на сайт TSRh. другое дело, коне4но, когда кто-то бы "культурно" попросил поисследовать более новую версию какого-либо софта, а не возмущенно вздыхал... ЗЫ: в своих суждениях я предположил, 4то старые версии не слишком отли4аются во внутренней защите и их выбор большей простотой крекинга не обоснован