Исследование защиты программы 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? ;)
Просмотров: 3558 | Комментариев: 18
Метки: исследование защиты, PDF
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(13.09.2016 в 08:29):
Ну вот, в споре рождается истина :)
addhaloka
(13.09.2016 в 08:05):
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. Но это уже совсем другая история, так что тоже извиняюсь за офтоп.
Тут грех не вспомнить показательный пример - http://lifeinhex.com/fun-with-...ed-vbscript/
Начитался такого - и вообще забил на енти "антивирусы".
Сколько компом пользуюсь, от самой стадии ламера, 2 раза вирусы были, и то 1 раз с чужой флешки. Где их только находят?!
p.s. Но это уже совсем другая история, так что тоже извиняюсь за офтоп.
X-Wing Top Ace
(12.09.2016 в 10:16):
А что это был за bat2exe, не помните? Софтин с таким названием полно, от DOS до NT, нужно смотреть, чья разработка.
Про горе-сигнатурщиков я уже написАл, они выбрали в качестве сигнатур генеримый этим софтом код, просто не зависящий от того, вредоносен ли батник. LMD...
Значит, это был точно не TurboBAT - там и на выходе не экзюк, а комушник, и код в этом комушнике ассемблерный. Размер кода мог бы быть и меньше, но там еще была копирастическая NAGлая мессага.
А если ее не запускать, пока сложная конструкция не выполнится?
addhaloka
(11.09.2016 в 21:32):
В данном случае я и не спорю, но я изначально о том, что cофт типа bat2exe вообще не нужен - всё что он делает, будь то простой запуск exeшки или запуск приатаченного батника, легко реализовать другим, более красивым способом. :)
Имхо, скорее потому, что когда-то (может и сейчас тоже, давно не интересовался темой) школота всякие "страшные" "вирусы" писала, с помощью подобного софта.
Не пробовал, но через 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 и т. п. назвали рыночной реформой, это была бы ругань. ;) Но вернемся к нашим софтинам.
Для более сложных случаев, вроде вашего лодыря к PingPro, где нужны гибриды - да, но не для такого простого, как сабж. Кто не хочет экзюк, сгенеренный из батника, тот напишет запускалку без всяких батников. Как уже и написАл ManHunter, две строчки - WinExec и ExitProcess, и нефиг сову на глобус натягивать.
Сколько пользую софтины типа bat2exe (а начинал аж с досного TurboBAT'а, который сам же и сломал), никогда такого не видел, да и читаю впервые.
Может, дело в батниках или вообще в кривых сигнатурах, приводящих к ложной тревоге? Помню, как-то раз (уже давно) AVAST после очередного обновления потер как вирусные (за что, естественно, я сразу же снес его с машины) аж три чистых файла - LA.EXE (плеер Light Alloy), UPX.EXE и... держитесь за стул, attrib.exe из каталога %WINDIR%\System32.
Горе-сигнатурщики могли внести в базуки тот код, который запускает батник из псевдокомпилированного экзюка, а от содержимого батника просто не зависит.
Вызовами WinExec с нужными командными строками для route?
В порядке мелочных придирок - не на 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):
Ясен пень! Но addhaloka-то пишет про реализацию на FASM'е "запуска какого-нибудь батника из exe", что, если ему верить, будет гораздо красивше, чем псевдокомпиляция батника!
Совершенно верно, я тоже написАл про это.
ManHunter
(09.09.2016 в 17:07):
Две строчки WinExec и ExitProcess на FASM'е и глобус сохранят в цельности, и сову уберегут от всяких непотребств. Батник в этом случае вообще не нужен.
X-Wing Top Ace
(09.09.2016 в 14:31):
Кем-то тут срач затевается... И да, "мегаунылое УГ" - это масло масленое. ;)
Во-первых, и что? На то оно и псевдокомпилятор батников.
А во-вторых, не просто. Там (у меня версия 2.4.5 от F2KO) куча дополнительных команд, которых cmd.exe не знает (ShowSelf/HideSelf и все такое прочее с префиксом %extd%), свои переменные окружения, ну и всякая полезная мелочь вроде скрытия консольного окна в настройках генерации экзюка.
Что-то из скриптовых команд, конечно, можно реализовать и через одну функцию ВыньАПИ, но с бОльшей частью команд это не пройдет.
Тогда уж действительно запускалку накодить, объявив в ее исходнике всю командную строку как строку. ;) А если ее не кодить, то спсевдокомпилировать батник псевдокомпилятором, завернув его в экзюк. Реализовывать же на FASM'е "запуск батника из EXE" ради запуска ОДНОГО экзюка с нужными параметрами в командной строке вместо ненужных - это, извините, натяжка совы на глобус.
addhaloka
(08.09.2016 в 22:34):
>Для этого, кстати, есть и форточный софт - например, BAT to EXE Converter.
Имхо, мегаунылое УГ. Если бы оно реально конвертировало команды из батника в WinAPI функции, было бы круто, а так оно просто заворачивает батник в exe и запускает его. Подобное (т. е. запуск какого-нибудь батника из exe), в том же FASM, легко сделать и будет гораздо красивей. А в данном случае и батник не нужен - проще крохотную запускалку написать.
Имхо, мегаунылое УГ. Если бы оно реально конвертировало команды из батника в WinAPI функции, было бы круто, а так оно просто заворачивает батник в exe и запускает его. Подобное (т. е. запуск какого-нибудь батника из exe), в том же FASM, легко сделать и будет гораздо красивей. А в данном случае и батник не нужен - проще крохотную запускалку написать.
ManHunter
(08.09.2016 в 17:15):
Скорее, тут типичный "неуловимый Джо", который нафиг никому не уперся.
X-Wing Top Ace
(08.09.2016 в 17:10):
Для этого, кстати, есть и форточный софт - например, 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 и поменять в нём пару переходов, прога примет любые данные и впишет их в какую-то базу, можно будет вернуть оригинальный лаунчер и наслаждаться "лицензионной" прогой!
Но без лаунчеров-посредников запуск конечно лучше.
Но без лаунчеров-посредников запуск конечно лучше.
Добавить комментарий
Заполните форму для добавления комментария