Обновить

Комментарии 37

Ждём комментарии авторов. Интересно, такая слабая, можно сказать формальная, защита сознательный ход, типа всё равно сломают?
НЛО прилетело и опубликовало эту надпись здесь
Судя по тому, что у автора статус регистрации почему-то генерирует программа clang.exe (которая никак в регистрации не участвует на самом деле), до реальной защиты он даже не добрался.
> которая никак в регистрации не участвует на самом деле

Откуда такая уверенность? У них вполне может быть своя сборка кланга, дополненная бледжеком и функциями участия в процессе регистрации
Замечание верное, но, в данном случае, достаточно запустить кланг с указанной опцией, чтобы понять, что не он выносит вердикт о корректности рег. данных. Автор просто спутал exe-шники.
Так просто? А я уже чаек принес :(

Бедные чайки, отпустите их.

С ildasm было бы хоть чуточку интереснее, dnSpy уже совсем ребячество…
уже много месяцев есть даже рабочий кейген в сорцах. Сразу было понятно, что авторы особо не собираются бороться с халявщиками (как и jetbrains, например). Потому что это отнимет больше сил, чем хороший маркетинг
Скомпилил кейген — и правда, работает. Вот разбор алгоритма кейгена бы с удовольствием почитал.
Ждем «Анализ dnSpy средствами PVS Studio»
Эй хакеры, подскажите как ключи распаковывать в ASProtect'e 1.2. А то я тоже хочу убрать защиту заменив формальной(глючит, зараза). А StarForce плохие люди — не говорят. Само собой все ключи у меня есть, я же сам её ставлю. Мне бы только информацию из ключа доставать.
«А это вообще законно?»

Учитывая политику лицензирования PVS-Studio, для них нет причин делать сильную защиту. Одинокие (грустно звучит) разработчики итак споконо могут использовать PVS, а корпоративные всё-равно купят лицензию, чтобы избежать попоболи. Так что не вижу особых проблем для разработчиков из-за столь простого взлома.
Я правильно понял, что минусы дотнета вылезли — простой реверсинг? Можно алгоритмы потащить )
Правда традиционно колет глаза :) Ничего, еще один акк заведу.
Да что IL, что Java — защиту сделать трудно. Так — для формальности.
Вот в нативном коде — это другое дело.
Самый сложный алгоритм видел в Word 5.
А почему вы думаете, что в нативном коде легко сделать защиту? Или по другому, почему вы думаете, что в нативном коде трудно разобраться?
Потому что возможностей больше в нативном коде.
Ну и примеры всякие смотрю иногда.
Ну да, интересное мнение основанное на том, смотрю иногда, что то. В С# например есть динамическая кодогенерация, вы даже не представляете, какие чудеса можно с ней сделать или думаете, что на управляемом коде нельзя свою VM написать? да без проблем.
Эм, не знаю как сейчас но года 2 назад смотрел интереса ради триалку для VS, имеющую ограниченное количество запусков. Там она просто в одной ветке реестра хранила счетчик запусков. Ушло минут 10 наверное на все про все.
У решарпера, по крайней мере 9го так же.
НЛО прилетело и опубликовало эту надпись здесь
Для вашей программы требуется снять обуфскацию
Есть в паблике утилита https://github.com/saneki/eazdevirt
Она может вытащить код из виртуальной машины
С Уважением Mishar
Фиг там. Скорее всего, новая версия обфускатора, которую утилита не знает.

C:\2017-03-05>C:\2017-03-05\eazdevirt-master\bin\Debug\eazdevirt.exe -d TestConsole.exe

                         .___          .__         __
  ____ _____  ________ __| _/_______  _|__|_______/  |_
_/ __ \\__  \ \___   // __ |/ __ \  \/ /  \_  __ \   __\
\  ___/ / __ \_/    // /_/ \  ___/\   /|  ||  | \/|  |
 \___  >____  /_____ \____ |\___  >\_/ |__||__|   |__|
     \/     \/      \/    \/    \/



Unhandled Exception: System.Exception: Number of found subsequences (DictionaryAddPattern) 0 != 203 (expected value)
А de4dot её не берёт? Стабильная версия, правда, давно не обновлялась, лучше собрать свежий из сорцов.
Берёт, деобфускация генерит именам классов читаемые названия. Но не расшифровывает строки и не восстанавливает виртуализированный код машины протектора. Всё-таки это универсальный тул, а не заточенный на снятие конкретного протектора.

p.s. eazdevirt основан на dnlib, как и de4dot.
Эта версия старая и она не брет новый обновленный протектор, я лишь дал ссылку на исходный код который можно дописать под новую версию, а с de4dot не справиться с этим
Выше в комментариях правильно заметили: автор статьи сделал, по сути, косметический кряк. Ограничения при этом наверняка остаются, поскольку необходимо ломать не GUI, а консольную PVS-Studio.exe, в которой и сидит реальная защита.

На ру-борде это и проделывают с каждой выходящей версией.

Вопрос к автору: вы проверяли отсутствие триальных ограничений?
На разных система запускаются разные файлы там есть архитектура для системы X64 — X86
Запустите в ком. строке clang.exe с аргументом --checkreg=yes. Потом PVS-Studio с таким же аргументом.
Ну фу же. Нашли дырку — сообщите автору. Как исправят или проигнорируют — публикуйте. Неужели так сложно?

А тут — сломали гуй очевидным и скучным образом и побежали хвастаться тем, что сломали кусок необфусцированного кода… Детство какое-то.
Детство, не детство — а инвайт он походу за эту статью получил :)
шутка по теме
В магазин приходит маленький Мойше.
— Мне три литра мёда, протягивает он банку продавщице. Та наливает полную банку.
— А папа завтра придёт и заплатит.
— Ну нет, — забирает у него банку продавщица и выливает обратно мёд.

Мойше выходит на улицу и заглядывает в банку: — Папа был прав, тут хватит на два бутерброда.
Здравствуйте отвечу сразу всем в одном комментарии
1. Триал ограничения
Они все сняты так как в самом коде программы есть проверки на наличия триала вот в таком виде
image
Как ранее я показывал что через патч присуждает LicenseInfo.RegistrationStates.Valid значит где есть такие проверки везде программа пройдет как валидная без каких либо нареканий
На разных система запускаются разные файлы это я говорю про подпрограмму clang.exe там есть архитектура для системы X64 X86
Спасибо за понимание с уважением Mishar
Настоящие проверки не в Standalone.exe. Настоящие проверки в PVS-Studio.exe, которая написана на С++

программа пройдет как валидная без каких либо нареканий
Только визуально.
Извините, я не знаю, как ещё более понятно объяснить.

Вы взломали лишь один компонент программы, она теперь рапортует, что зарегистрирована, но триальные ограничения никуда не делись.
Продублирую тут свой ответ вам в личку, мне кажется, что читателям будет полезно:

Standalone.exe — С#, GUI-ёвая графическая обвязка вокруг консольной С++-ной PVS-Studio.exe.

Когда мы вводим имя и серийник в Standalone.exe, она просто их отправляет в консольную PVS-Studio.exe. Она их не проверяет на валидность. Не высчитывает, соответствует ли имя серийнику. В консольной части происходит реальная проверка, после чего консольная PVS-Studio.exe отправляет Standalone.exe ответ в духе «всё ок» или «всё плохо, серийник не валидный». И Standalone.exe просто проверяет, какой ответ ей пришёл: хороший или плохой. Чтобы показать статус регистрации. Т.е., можно провести такую параллель: Standalone.exe это что-то типа About, где выводится имя юзера. А вот консольную PVS-Studio.exe не патчили, она при каждой своей работе (при анализе исходников) проверяет валидны ли сохранённые серийник и имя. А так как они не валидные, то она урезает свою функциональность.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации