Исследование Offline Explorer 2.2.807Delphi , Программа и Интерфейс , Исследование программИсследование Offline Explorer 2.2.807
Автор: Wersion (Abetkin Veaceslav) Не ошибитесь версией! Tools:
Если вы желаете только получить взломанную версию программы – вон отсюда(крестик в правом верхнем углу экрана, 1 раз щёлкнуть левой кнопкой мыши); Всё написанное предназначено только для образовательных целей. Написанное потому, что на пиратских сайтах давным-давно есть крэки к этой замечательной программе L, потому, что это 10-я взломанная мной программа. Ну что, начнём. Запускаем oesetup.exe, создает ярлык на Desktop’е. Щёлкаем, смотрим. Какая большая, красивая программа. Есть Nag, 30-day limitation, ограничений функциональности не заметил. Смотрим размер файла – маловат, 831 kb. Кажется, запаковали. Суём в Reshacker\Restorator – всё corrupted. Точно.сжато. Лезем в ProcDump, выбираем PE editor->наш файл. Имена секций не снесли, значит, скорее всего, только запаковали. Смотрим дальше. Привлекла меня секция .daat. Не видел, чтобы при компиляции делали такие секции. Это секция распаковщика. Ставим ей E0000020 в Section Characteristics. (Мера, в основном, для Softice’a), почему – читай формат PE, таблицу Dr.Golova. Запускаем TRW 2000, Load->цель. И F5/X-выход в Windows. Зачем трассировать весь распаковщик? Итак, программа запущена, перед нами Nag. Мне понравилось слово ‘evaluation’ на нём. Поищем его в памяти. Ctrl-n/m, активизируем TRW 2000. Команда s 30:0 ffffffff ‘evaluation’. Нам говорят:
Cтавим брейкпоинт на этот адрес в памяти:
Нажимаем F5/X. вываливаемся в TRW 2000 на инструкции
пройдите их всех по F10 до JNZ т.к. ХХХХХХХХ, на который он собирается прыгнуть меньше того, на котором мы стоим, то мы его обойдём. Ставим брейкпоинт на следующую за ним строчку(F9); Затем F5; F9(снять брейкпоинт) и продолжаем трассировку. Аналогично обходим все подобные JZ/JNZ/JMP. Когда увидите инструкцию POPA, встанете на RET, нажмите F10 последний раз. Всё! Распаковка закончилась! Мы в программе, в секции CODE. Запишем EIP на бумагу. Введём команду suspend. Ничего не закрываем и запускаем Procdump. В Options оставляем только Recompute Object Size и Use actual import infos. Сделаем Dump(Full) нашего процесса. Убьём его. Выйдем из Trw 2000. Опять в ProcDump->PE editor->Our_dump.exe Нужно выставить ему правильную Entry Point. Она равняется EIP-Image Base. И то и другое нам известно. Для меня EIP=005F0E7, Image Base=0400000. Посчитайте в Калькуляторе от Microsoft(Hex mode). (У меня получилось 001F0E7C). Теперь поставьте всем секциям E0000020. //дамп уже запускается и распакован! Дальше нужно восстановить таблицу импортов (хотя можно ломать и так). Можно использовать Import Reconstructor/Revirgin/руки и голову; Я выбрал 3-е, а потом 1-е. И так и этак получается замечательно. Через 1-е: смотрим RVA и *Size секции .idata пишем в IAT Infos. Жмём Get imports и Fix Dump. (прислушаемся к сообщению и исправим Procdump->Directory->Import Table на соответствующие параметры новой секции); Через 3-е: //долго рассказывать Теперь самое главное. Суём всё это в Win32 Dasm. И пока он работает, запускаем Oe.exe и смотрим раздел, посвящённый регистрации. На неправильный код программа отвечает сообщением ‘Sorry…’. Вот мы и поищем его в дизассемблированном файле. (Search->Find Text); Со 2-го раза нашли:
Идём на 005997BB:
Идём на 0059969E:
Ну что, зайдём в этот call 005D92E4 : Вот что он делает:
Видно, что процедура проверки вызывается несколько раз. Программа, вероятно, использует её при старте, чтобы определить, показывать Nag или нет. Нужно сделать так, чтобы после выполнения нашего call 005D92E4 в AL было 1. С этим с успехом справится команда mov AL,1. Её можно записать вместо call 005D8958 по адресу 005D92E8. Воспользуемся Hiew 6.55. Откроем файл, F5, .005D92E8,,F3,F2. Пишем. Т.К. в Hex’е наша инструкция-B001, call 005D8958- E86BF6FFFF то оставшиеся байты (после B001 и до C3) надо забить Nop’ами(90). Сохраняем (F9), выходим (F10). Запускаем. Ура! Ни Nag’a, ни надписи NOT REGISTERED в About. Никаких ограничений! Хотя мы не имеем прав распространять взломанную программу, этикет требует сделать для неё что-то типа патча. Чем и займёмся. Конечно, всё это можно сунуть в архив, добавить *.nfo и показывать как своё геройство. (Так сделал TSRH; кстати, как ему не стыдно распространять Cracked Exe и гадить производителям?). Но! Мы сделаем вещь поменьше и покрасивее и не будем никому давать. Изучив работу распаковщика, я понял, что это что-то многослойное, похожее на AsPack. Патчить его трудновато. Создадим загрузчик. Я пытался использовать R!SC Process Patcher, но он почему-то не работал, или заменял байты рано/поздно. Аналогично Patch Creation Wizard->Memory Patch. Взял PELG(Extreme Loader Generator). Тоже не работает. Что ж, опять в отладчик->Load->PackedOe.exe bpx 005D92E4 //Адрес, который вызывал наш call <проверка РН>. F5/X. Появляется Splash, чуть–чуть висит, а затем мы вываливаемся в TRW 2000. Понятно. Проверка рановато происходит, ещё при Splash’е. Значит, при его создании и надо заменить байты. Только хорошо бы отловить этот момент. В PELG’е есть Method of detection [Standard, Window Title, Class Name]. Standard, как я говорил, не работает, Window Title у Splash’а не наблюдается, остаётся Class Name. А его где взять? Splash показался, исчез и в списке не значится. Притормозим программу. Отладчик->Load->PackedOe.exe
Сделано! Комментарии:
Greats to: Dr. Golova, Predator, G-Rom, Lorian&Stone, Sen, MackT/ uCF2000 and many others! Пишите, если что-то непонятно и только по серьёзным вопросам. Исследование Offline Explorer 2.2.807: авторское программное обеспечение, которое позволяет разблокировать функции Offline Explorer 2.2.807, включая удаление ограничений и заполнения таблицы импортов. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Исследование программ ::
|
|||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |