Blog. Just Blog

Исследование защиты программы SysTools PDF Unlocker

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы SysTools PDF Unlocker
Скриншот программы SysTools PDF Unlocker

О назначении программы SysTools PDF Unlocker можно легко догадаться из названия. Да, это очередное поделие для снятия с PDF-файлов различных ограничений, установленных их аффторами, типа защиты от редактирования и блокировки печати. При таком обилии подобных софтин мне даже становится удивительно, что кто-то еще пытается ставить эти ограничения на свои PDF-документы. Но сегодня мы попробуем обойти защиту программы для обхода защиты.

Первое, что обращает на себя внимание, это то, что программа запускается через файл "Startup.exe", в то время, как там же в папке есть файл "PDFUnlocker.exe". Но если попытаться просто напрямую запустить "PDFUnlocker.exe", то ничего не получится, программа сразу же завершит работу. Причин тут может быть несколько: запускающий файл каким-то образом модифицирует в памяти основной файл (так работают врапперы на играх некоторых дистрибьюторов) или основному файлу передаются какие-то особенные параметры. Я решил проверить второй вариант.

Параметры запуска программы
Параметры запуска программы

Так и есть, основной файл запускается с параметрами "DEMO 100". То есть получается, что режим работы программы - демо или полный - определяется запускающим файлом и передается основной программе. Попробуем поискать параметр "DEMO" в запускающем файле:

Параметры запуска в файле
Параметры запуска в файле

Недалеко от него обнаруживается строка "FULL". Очевидно, что этот параметр используется для запуска основной программы в полнофункциональном режиме. Попробуем вручную запустить PDFUnlocker.exe, передав ему в качестве параметров "FULL 100".

Программа успешно зарегистрирована
Программа успешно зарегистрирована

И что мы видим? Программа работает в полнофункциональном режиме. При этом мы даже не запускали дизассемблер или отладчик и не притронулись ни к одному байту программы! Все решение по обходу защиты сводится к bat-файлу со следующим содержанием:

@start PDFUnlocker.exe FULL 100
Для большей эстетики вместо пакетного файла можно нарисовать крохотный exe-файл с таким же функционалом и записать его поверх оригинального файла "Startup.exe". Осталось проверить работоспособность. В демо-режиме в разблокированных файлах заменяется пустышкой каждая вторая страница, а на оставшиеся накладывается водяной знак. Полноценная версия этих недостатков лишена.

Вот такие встречаются "защиты". Именно в кавычках, потому что я даже не знаю, что тут еще можно сказать. Кто там удивлялся, что люди до сих пор используют strcmp? ;)

Поделиться ссылкой ВКонтакте
Просмотров: 3474 | Комментариев: 18

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
ManHunter (13.09.2016 в 08:29):
Ну вот, в споре рождается истина :)
addhaloka (13.09.2016 в 08:05):
ЦитатаА что это был за bat2exe, не помните? Софтин с таким названием полно, от DOS до NT, нужно смотреть, чья разработка.

Advanced BAT to EXE Converter PRO: http://www.battoexeconverter.com
ЦитатаА если ее не запускать, пока сложная конструкция не выполнится?

А как тогда узнать, что команда уже выполнилась? Да и не выполняется она, проверил - из командной строки тоже не работает: http://s1.bild.me/bilder/24041...3_070123.png
А из батника - без проблем. Тут либо её переделывать (если это вообще возможно), либо только батник. Простая же команда:
cmdvar  du '%comspec%',0
rdel  du '/c "route delete 216.92.151.75 && route delete 216.92.150.222 && exit"',0
...
invoke ExpandEnvironmentStrings,cmdvar,cmdexe,MAX_PATH*2
...
invoke ShellExecute,0,0,cmdexe,rdel,0,0
нормально отрабатывает, как раньше и говорил. Можно, конечно использовать задержку через Sleep, но это полная лажа. Весьма вероятно, что если команда работала, то и задержка была бы не нужна. В случае батника тоже было бы предпочтительней запускать его через ShellExecute, а не через CreateProcess, но в этом случае, вменяемого способа узнать, что все команды отработали (т. е. тут задержка необходима как узнать, что процесс cmd.exe уже завершился?), я пока не знаю. С CreateProcess это без проблем.

p.s. А вообще спасибо вам, заставили немного пошевелить мозгами :-) - нашёл частичное решение этого вопроса: батник теперь только для добавления адресов и запускается через ShellExecute, вместо задержки просто сделал его удаление после завершения работы PingPlotter (хз, почему такая мысль раньше не пришла, до этого он удалялся перед запуском программы, соппсно потому и не успевал отработать)), а удаление адресов можно и без батника, как выше показал.

Гы. Вот я ламер))) Взглянул на свой скрин с cmd и наконец дошло - нужно было просто заменить в переменных двойной %% на одинарный и "сложная конструкция" заработала без всяких батников. X-Wing Top Ace, ещё раз спасибо.
pawel97 (12.09.2016 в 16:53):
"Про горе-сигнатурщиков я уже написАл, они выбрали в качестве сигнатур генеримый этим софтом код"
Тут грех не вспомнить показательный пример - http://lifeinhex.com/fun-with-...ed-vbscript/
Начитался такого - и вообще забил на енти "антивирусы".
Сколько компом пользуюсь, от самой стадии ламера, 2 раза вирусы были, и то 1 раз с чужой флешки. Где их только находят?!
p.s. Но это уже совсем другая история, так что тоже извиняюсь за офтоп.
X-Wing Top Ace (12.09.2016 в 10:16):
Цитатас bat2exe совсем мало общался, ЕМНИП это наименее худшая из всех

А что это был за bat2exe, не помните? Софтин с таким названием полно, от DOS до NT, нужно смотреть, чья разработка.

Цитаташколота всякие "страшные" "вирусы" писала, с помощью подобного софта

Про горе-сигнатурщиков я уже написАл, они выбрали в качестве сигнатур генеримый этим софтом код, просто не зависящий от того, вредоносен ли батник. LMD...

Цитатазапомнился жуткий паскалевский г.код в полученных exe

Значит, это был точно не TurboBAT - там и на выходе не экзюк, а комушник, и код в этом комушнике ассемблерный. Размер кода мог бы быть и меньше, но там еще была копирастическая NAGлая мессага.

Цитатане успевала выполниться до запуска жертвы

А если ее не запускать, пока сложная конструкция не выполнится?
addhaloka (11.09.2016 в 21:32):
ЦитатаКак уже и написАл ManHunter, две строчки - WinExec и ExitProcess, и нефиг сову на глобус натягивать.

В данном случае я и не спорю, но я изначально о том, что cофт типа bat2exe вообще не нужен - всё что он делает, будь то простой запуск exeшки или запуск приатаченного батника, легко реализовать другим, более красивым способом. :)
ЦитатаМожет, дело в батниках или вообще в кривых сигнатурах, приводящих к ложной тревоге?

Имхо, скорее потому, что когда-то (может и сейчас тоже, давно не интересовался темой) школота всякие "страшные" "вирусы" писала, с помощью подобного софта.
ЦитатаВызовами WinExec с нужными командными строками для route?

Не пробовал, но через ShellExecute (советуют использовать её вместо кривого WinExec, в простых случаях типа param db '/c "ком1 && ком2 && .. && exit"' она прекрасно работает) сложную конструкцию с for, кавычками и подст. знаками не получилось прикрутить, только через батник. Либо же она прикрутилась, но не успевала выполниться до запуска жертвы. :) Там и с батником пришлось через CreateProcess делать, чтобы он точно успел отработать до след. операции.

p.s. Приношу извинения, ManHunter'у и посетителям блога, за оффтоп, больше не буду. :) Просто много лет назад имел дело с подобным софтом, конкретно с bat2exe совсем мало общался, ЕМНИП это наименее худшая из всех, но пара других схожих программ оставили очень плохое впечатление, запомнился жуткий паскалевский г.код в полученных exe.
X-Wing Top Ace (11.09.2016 в 18:30):
Цитатаbat2exe и т. п. - колхоз

Довод в пользу псевдокомпиляторов батника в экзюк, правда, не прогерский, а идеологический. ;))))

Вот если бы bat2exe и т. п. назвали рыночной реформой, это была бы ругань. ;) Но вернемся к нашим софтинам.

Цитататоже пара строчек и всё

Для более сложных случаев, вроде вашего лодыря к PingPro, где нужны гибриды - да, но не для такого простого, как сабж. Кто не хочет экзюк, сгенеренный из батника, тот напишет запускалку без всяких батников. Как уже и написАл ManHunter, две строчки - WinExec и ExitProcess, и нефиг сову на глобус натягивать.

Цитатаантивирусы сильно не любят такие exe

Сколько пользую софтины типа bat2exe (а начинал аж с досного TurboBAT'а, который сам же и сломал), никогда такого не видел, да и читаю впервые.

Может, дело в батниках или вообще в кривых сигнатурах, приводящих к ложной тревоге? Помню, как-то раз (уже давно) AVAST после очередного обновления потер как вирусные (за что, естественно, я сразу же снес его с машины) аж три чистых файла - LA.EXE (плеер Light Alloy), UPX.EXE и... держитесь за стул, attrib.exe из каталога %WINDIR%\System32.

Горе-сигнатурщики могли внести в базуки тот код, который запускает батник из псевдокомпилированного экзюка, а от содержимого батника просто не зависит.

Цитатапока что не разбирался, как это сделать на WinAPI

Вызовами WinExec с нужными командными строками для route?

Цитатареализовано на WinAPI

В порядке мелочных придирок - не на WinAPI, а через WinAPI. На ассемблере.

Цитатавсегда стремлюсь к минимализму в софте

Зачем тогда запуск "PDFUnlocker.exe FULL 100" через батник, хранимый в проге на FASM'е? Если делать запускалку на Ассемблерее, все ранится без всяких батников.
addhaloka (09.09.2016 в 17:58):
ЦитатаБатник в этом случае вообще не нужен.

В случае приведённого примера с PingPlotter, в батники я вынес только операции по блокированию/разблокированию сайта проги через route (пока что не разбирался, как это сделать на WinAPI). Всё остальное (добавление реги в реестр, проверка UAC, запуск программы, очистка следов) реализовано на WinAPI. Такой типа гибрид))
addhaloka (09.09.2016 в 17:42):
Цитатану и всякая полезная мелочь вроде скрытия консольного окна в настройках генерации экзюка.

Дык, тоже пара строчек и всё:
mov dword[sinfo.dwFlags],STARTF_USESHOWWINDOW
mov word[sinfo.wShowWindow],SW_HIDE
)) А всякие bat2exe и т. п. - колхоз (не ради срача, просто давно такое мнение сложилось). К тому же, антивирусы сильно не любят такие exe (лично мне это по барабану, но если чего-то подобное публиковать, могут начаться вопли про страшные вирусы)). Для сравнения, лоадер для Ping Plotter 4 Pro:
написанный на FASM: https://www.virustotal.com/en/.../1473431226/
сделанный в каком-то bat2exe: https://www.virustotal.com/en/.../1466830902/
Ну и это, может и не столь важно, но всегда стремлюсь к минимализму в софте: http://fs5.directupload.net/im...ajtvpu57.png )
X-Wing Top Ace (09.09.2016 в 17:33):
ЦитатаДве строчки WinExec и ExitProcess на FASM'е

Ясен пень! Но addhaloka-то пишет про реализацию на FASM'е "запуска какого-нибудь батника из exe", что, если ему верить, будет гораздо красивше, чем псевдокомпиляция батника!

ЦитатаБатник в этом случае вообще не нужен.

Совершенно верно, я тоже написАл про это.
ManHunter (09.09.2016 в 17:07):
ЦитатаРеализовывать же на FASM'е "запуск батника из EXE" ради запуска ОДНОГО экзюка с нужными параметрами в командной строке вместо ненужных - это, извините, натяжка совы на глобус.

Две строчки WinExec и ExitProcess на FASM'е и глобус сохранят в цельности, и сову уберегут от всяких непотребств. Батник в этом случае вообще не нужен.
X-Wing Top Ace (09.09.2016 в 14:31):
ЦитатаИмхо, мегаунылое УГ

Кем-то тут срач затевается... И да, "мегаунылое УГ" - это масло масленое. ;)

Цитатаоно просто заворачивает батник в exe и запускает его

Во-первых, и что? На то оно и псевдокомпилятор батников.

А во-вторых, не просто. Там (у меня версия 2.4.5 от F2KO) куча дополнительных команд, которых cmd.exe не знает (ShowSelf/HideSelf и все такое прочее с префиксом %extd%), свои переменные окружения, ну и всякая полезная мелочь вроде скрытия консольного окна в настройках генерации экзюка.

Цитатаконвертировало команды из батника в WinAPI функции

Что-то из скриптовых команд, конечно, можно реализовать и через одну функцию ВыньАПИ, но с бОльшей частью команд это не пройдет.

Цитатазапуск какого-нибудь батника из exe

Тогда уж действительно запускалку накодить, объявив в ее исходнике всю командную строку как строку. ;) А если ее не кодить, то спсевдокомпилировать батник псевдокомпилятором, завернув его в экзюк. Реализовывать же на FASM'е "запуск батника из EXE" ради запуска ОДНОГО экзюка с нужными параметрами в командной строке вместо ненужных - это, извините, натяжка совы на глобус.
addhaloka (08.09.2016 в 22:34):
>Для этого, кстати, есть и форточный софт - например, BAT to EXE Converter.
Имхо, мегаунылое УГ. Если бы оно реально конвертировало команды из батника в WinAPI функции, было бы круто, а так оно просто заворачивает батник в exe и запускает его. Подобное (т. е. запуск какого-нибудь батника из exe), в том же FASM, легко сделать и будет гораздо красивей. А в данном случае и батник не нужен - проще крохотную запускалку написать.
ManHunter (08.09.2016 в 17:15):
Скорее, тут типичный "неуловимый Джо", который нафиг никому не уперся.
X-Wing Top Ace (08.09.2016 в 17:10):
Цитатавместо пакетного файла можно нарисовать крохотный exe-файл с таким же функционалом

Для этого, кстати, есть и форточный софт - например, BAT to EXE Converter.

ЦитатаВот такие встречаются "защиты". Именно в кавычках, потому что я даже не знаю, что тут еще можно сказать.

Похоже, рассчитывали на дурика проскочить. Ломая, все же обычно сталкиваешься с чем-то поумнее. А здесь это "что-то поумнее" отсутствует - аФФтАры могли рассчитывать на то, что хакер не станет проверять прогу на такой примитив, и прога останется неломаной по причине непонятой защиты.
Jek (05.09.2016 в 21:08):
Везде так)
ManHunter (05.09.2016 в 17:14):
Другие не смотрел, не могу сказать.
Jek (05.09.2016 в 10:11):
выходит остальные проги этой конторы тоже работают примерно также?)
pawel97 (04.09.2016 в 15:28):
Это ещё что! Смотрел одну их прогу на дотнете, там если разобфусцировать startup.exe и поменять в нём пару переходов, прога примет любые данные и впишет их в какую-то базу, можно будет вернуть оригинальный лаунчер и наслаждаться "лицензионной" прогой!
Но без лаунчеров-посредников запуск конечно лучше.

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0067 сек.) / Память: 4.5 Mb
Наверх