Исследование защиты программы Ultra Tag Editor
Скриншот программы Ultra Tag Editor
Программа Ultra Tag Editor от Atelio Software - редактор тегов файлов в формате MP3 (ID3v1, ID3v2.2, ID3v2.3 и ID3v2.4) и OGG (vorbis comments). Удобство работы и функционал, конечно, на любителя, лично мне, например, больше всего нравится бесплатный Mp3tag, но в качестве подопытного очень даже сгодится.
Качаем дистрибутив, устанавливаем, запускаем. Тут же появляется наг-окно с информацией об оставшемся триальном времени и предложениями выложить бабло на покупку.
Наг-окно при запуске программы
Возможность потратить бабло мы рассмотрим в какой-нибудь другой статье, а пока посмотрим на файл изнутри. Характерные названия секций файла наводят на мысль, что файл упакован ASProtect'ом. PEiD и ASPrINF нашу догадку подтверждают.
Файл упакован ASProtect
Для распаковки нам потребуется отладчик OllyDbg, к нему обязательно надо установить два плагина: OllyDump и ODBGScript. Также нам обязательно потребуется скрипт от китайского товарища VolX - ASProtect 1.3x - 2.xx Unpacker v1.15E. Распакуйте плагины в папку Plugins отладчика, а скрипт распакуйте куда-нибудь в сухое прохладное место. Из дополнительного инструментария потребуется программа для восстановления импорта, например, ImpRec.
Переходим к распаковке ASProtect. Загружаем файл в отладчик, поскольку файл упакованный, OllyDbg сразу сообщит об этом и запросит подтверждение на дизассемблирование. Соглашаться не надо, все равно мы пока ничего интересного не увидим. Первая стадия распаковки. Идем в меню Plugins - ODBGScript - Run script... и в открывшемся окне выбираем распакованный скрипт Aspr2.XX_unpacker_v1.15E.osc Скрипт сразу же начнет работу, и остановится с сообщением, что "краденого кода" (одна из опций защиты ASProtect) в файле не обнаружено, и что данные для восстановления импорта файла находятся в окне лога.
Скрипт закончил работу
Отладчик находится на OEP файла, пока в нем ничего не трогаем. Сейчас надо сделать дамп файла. В принципе, скрипт-распаковщик делает дамп автоматически, но он получается с испорченным PE-заголовком. Чтобы потом не возиться дополнительно с восстановлением файла, лучше сделаем дамп самостоятельно. Plugins - OllyDump - Dump debugged process.
Дамп файла
В открывшемся окне обязательно уберите галочку Rebuild Import и нажмите кнопку Dump. Сохраните дамп в какой-нибудь файл, например, dumped.exe, или же поверх файла, который создал скрипт de_TagEditor.exe, все равно он бы нам больше не понадобился.
Дамп готов, теперь надо восстановить секцию импорта. Помните, сообщение скрипта, что информация для импорта записана в лог? Отлично, открываем в отладчике лог работы скрипта Plugins - ODBGScript - Log Window... и смотрим, что у нас там есть интересного.
Лог работы скрипта
Вот этот же лог, только в текстовом виде. В нем хорошо видно, какие функции защиты были использованы: привязка к железу, а также регистрация средствами ASProtect. Красным цветом выделены строки, которые нужны для восстановления импорта.
142276F freeloc: 00170000
493884 GetHardwareID 0058A680
493824 GetDecryptProc 0058A690
493834 GetEncryptProc 0058A690
493844 GetRegistrationInformation 0058A6A0
58A5D0 Address of IAT = 005941B8
58A5D0 RVA of IAT = 001941B8
58A5D0 Size of IAT = 00000930
58A5D0 Address of OEP = 0058A5D0
58A5D0 RVA of OEP = 0018A5D0
Запускаем ImpRec, в верхнем окне выбираем процесс - tageditor.exe, в нижнем окне заполняем данные из лога скрипта: OEP = RVA of OEP, RVA = RVA of IAT, Size = Size of IAT. После этого нажимаем кнопку Get Imports. Если все сделано правильно, то в среднем окне появится список импортируемых функций и библиотек, все должны быть с пометками "valid: YES".
Восстановление импорта
Нажимаем кнопку Fix Dump и выбираем сохраненный файл дампа. ImpRec в логе должен написать, что импорт был успешно прикручен к дампу. Все, закрываем отладчик, ImpRec и остальной инструментарий, попробуем запустить дамп с прикрученным импортом, в моем случае это файл de_TagEditor_.exe
Программа успешно зарегистрирована
Мало того, что с программы полностью снят навесной протектор, так она теперь сразу стала зарегистрирована. Как это получилось? Дело в том, что скрипт от VolX, кроме распаковки файла, модифицирует код протектора, ответственный за регистрацию, таким образом, чтобы он всегда возвращал признак "зарегистрировано". А стало быть защиты программ, основанные только на средствах ASProtect, будут считать что все в порядке.
Таким же способом снимается навесная защита ASProtect не только с Ultra Tag Editor, но и со многих других программ, причем часть из них тут же становятся зарегистрированными. Но имейте в виду, что способ этот не дает 100% гарантии, и успешный результат зависит от использованных опций защиты.
Просмотров: 9553 | Комментариев: 7
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Rice
(26.07.2013 в 12:47):
Есть ещё более удобный и более бесплатный и русский редактор тегов: xdlab.ru. По своему многолетнему опыту работы с музыкальными файлами скажу, что лучше редактора не встречал.
ManHunter
(18.07.2011 в 10:47):
Этот метод немного устарел. DecomAS рвет ASProtect как грелку. Только там вся нужная часть кода пошифрована по ключу, и без рабочего серийника туда нефиг даже соваться.
irokkezz
(18.07.2011 в 00:45):
Во первых огромное спасибо за Ваши публикации, особенно по исследованию защит.
А во вторых вопрос, касаемо ASPr'а. После распаковки исполняемого файла программы Recovery Toolbox for RAR (http://www.recoverytoolbox.com/rar.html) вышеизложенным способом, распаковка происходит без проблем. Но программа не запускается, при попытке запуска генерирует файл Err.log с записью [ASP_IsOK3] :. Если не трудно, подскажите пожалуйста куда копать.
Еще раз спасибо за Вашу работу.
А во вторых вопрос, касаемо ASPr'а. После распаковки исполняемого файла программы Recovery Toolbox for RAR (http://www.recoverytoolbox.com/rar.html) вышеизложенным способом, распаковка происходит без проблем. Но программа не запускается, при попытке запуска генерирует файл Err.log с записью [ASP_IsOK3] :. Если не трудно, подскажите пожалуйста куда копать.
Еще раз спасибо за Вашу работу.
Isaev
(09.09.2010 в 14:49):
А если скрипт произвёл ещё 2 файла
jmptable.bin и st_table.bin
что с ними делать? :)
jmptable.bin и st_table.bin
что с ними делать? :)
ManHunter
(09.09.2010 в 00:42):
Значит как-то неправильно отработал скрипт.
Isaev
(08.09.2010 в 15:56):
//все должны быть с пометками "valid: YES"
А если не все? :)
...я не имею ввиду эту прогу.
А если не все? :)
...я не имею ввиду эту прогу.
Soso
(07.09.2010 в 18:04):
Молодчик, спасибо за мануал !!!!!
Добавить комментарий
Заполните форму для добавления комментария