Приветствую! Это мой первый пост на Хабре в принципе, но не первая статья о взломе ПО вообще, поэтому навык писать все с начала и по шагам, для начинающих крякеров, у меня есть. В данной статье я расскажу о том, как был отучен от триальности PVS-Studio.
Подготовка
Прежде, чем начинать, помните: все действия вы выполняете на свой страх и риск. Уважайте работу программистов!
Первым делом, качаем и устанавливаем программу. Тут все просто.
С чем мы имеем дело?
Давайте выясним, на чем написана программа, и что нам придется "лечить". Старперы для этого используют PEiD, но он очень уж старый теперь, базы не обновляются, да и многие компиляторы он просто не понимает. Обычно, я пользуюсь программой ExeInfo PE.
Заходим в каталог с программой, и "на глаз" решаем, что первым подопытным файлом станет PVSStudioStandalone.exe. Его запуск также говорит о том, что это главный исполняемый файл. Натравливаем на него ExeInfo PE и получаем:
Microsoft Visual C# / Basic.NET | Explore, browse, and analyze .NET assemblies with .NET Reflector
Погружение. EXE №1
Нам рекомендуют установить .NET Reflector, и открыть в нем нашего подопытного. Так и сделаем.
Видим, что названия классов не обфусцированы, (выглядят нормально). Так же с кодом методов этих классов, если походить по ним. Делаем первый вывод: главный исполняемый файл никак не защищен. ОКей. Идем, дальше.
Давайте найдем проверку лицензии и все, что с этим связано.
Запустим PVS-Studio, зайдем в меню Tools -> Options… -> Registration. Попробуем ввести имя юзера и случайный ключ (к автору не обращался, ключ не спрашивал, поэтому формат их мне неизвестен):
Теперь можно поискать по тексту сообщения об ошибке в .NET Reflector'е. Жмем F3 (Search), затем Ctrl+S (Search String or Constant). Вводим "Incorrect registration info". Получаем:
Двойным щелчком переходим по найденной ссылке, и получаем следующий код:
Попробуем выяснить, откуда вызывается данный метод. Жмем Ctrl+R (Analyze), разворачиваем список, а в нем разворачиваем список Used By:
Жмем ПКМ по найденному методу, а там Go To Member.
На скрине я выделил место, где мы и получаем сообщение об ошибке. В условии оператора if видим проверку на тип лицензии Invalid. Значит этот тип был установлен где-то выше по коду. Будем просто по порядку заходить во все методы, пока не найдем что-то подозрительное… И, вот оно:
Радостно заходим в метод GetLicenseInfo()!
Что тут происходит? Похоже, запускается какой-то exe-файл, с аргументом --checkreg=yes, затем парсится его вывод в консоль, и на основе результатов дается информация о лицензии. Какой именно файл запускается? Выяснить легко: заходим в метод GetPVSStudioExePath() и видим:
Есть ехе-шник PVS-Studio.exe, который, похоже, лежит в каталогах x86 или x64. Порыскав в каталоге с программой, убеждаемся, что, да — такие папки, и такой исполняемый файл у нас имеется. Прекрасно!
Значит он, при передаче ему спец-параметра о запросе лицензии (--checkreg=yes), должен выплевывать информацию о нашей с вами лицензии.
Еще глубже. EXE №2
Попробуем запустить PVS-Studio.exe в отдельности через командную строку, передав ему наше желание узнать инфу о лицензии.
Очень хорошая строчка для поиска: "Unknown license type". Будем ее искать через Olly Debugger v2. Открываем в "Ольке" PVS-Studio.exe, жмем ПКМ -> Search for -> All referenced strings:
Жмем Ctrl+F (Search for Text), вводим: Unknown license type. И, находим одну ссылку:
Двойным кликом по ссылке мы попадаем в код:
На скрине я выделил прямоугольником интересную, на мой взгляд функцию.
Во-первых, сразу за ее вызовом идет проверка значения в регистре EAX на число от нуля до трех (0 — trial, 1 — invalid, 2 — timeout, 3 — valid).
Затем, идет проверка байта под адресу BYTE PTR SS:[LOCAL.12+3] (так обозвала Олька) на значения от 0 до 3 (0 — Unknown license type, 1 — Single User License, 2 — Team License, 3 — Site License). Этот адрес подается на входе в функцию в регистре EAX.
Где-то дальше еще есть вывод даты в консоль, но я не стал с этим разбираться, т.к. если тип лицензии — valid, то на дату ему все равно.
Патчинг. EXE №1
Теперь самое интересное: нужно пропатчить код по адресу, на который указывает CALL (в моем случае — 0xA88570), на такой, чтобы выдавался нужный нам тип лицензии и режим. Давайте составлять код:
Первым делом, "исправим" байт, отвечающий за тип лицензии. Я выбрал Site License (это число 3). Судя по имеющейся у нас информации, пишем в Ольке такой код (нажать Пробел на адресе 0xA88570):
mov byte ptr [eax], 3
Затем, исправим возвращаемое в EAX значение. Я так же выбрал 3 (valid):
mov eax, 3
Ну и, напоследок, выйти из функции:
retn
Все! Сохраняем изменения в исполняемый файл, и радуемся полностью рабочей лицензии!
Патчинг. EXE №2
На этот раз, исполняемый файл у нас 64-х битный, поэтому Олькой найти код не получится. Но, можно найти его с помощью x64dbg. Проявите немного усидчивости и вы сможете пропатчить и его!
P.S. Как видим, от силы полчаса исследования, и нас ждет хороший результат.
Всем спасибо!
Комментарии (123)
Ivan_83
14.04.2015 16:10+16Можно было написать свой PVS-Studio.exe который бы всегда возвращал что нужно :)
Если оказалось бы что оригинальный нужен для работы, то можно было его вызывать, и данные туда-обратно пересылать.
Напомнило старые — добрые 199х — начало 200х, когда компиляторы не оптимизировали а про обфускацию не знали.DrMefistO Автор
14.04.2015 16:12+4Именно так я и делал в первый раз! Но, к сожалению, в этом случае, т.к. сам PVS-Studio.exe в себе проверяет лицензионность, нужные результаты выдаваться не будут все равно.
Diaver
14.04.2015 16:21Можно было просто модифицировать сборку .NET с помощью плагина Reflexil для Reflector-a, или возникли бы какие-то проблемы?
DrMefistO Автор
14.04.2015 16:24+5Ну, модифицировать сборку не выйдет по той же причине, по которой я не подменял PVS-Studio.exe на заглушку — главные результаты дает именно он, а шарповский файл всего лишь аккуратно их выплевывает в таблицу.
mwizard
14.04.2015 16:29+1Хорошая статья, спасибо! Но патч — это самое простое решение, которое придется переделывать каждый раз при обновлении софтины. Не смотрели в сторону кейгена?
Надеюсь, авторы PVS Studio не воспримут статью, как личное оскорбление :) Мы все программисты и уважаем чужой труд.DrMefistO Автор
14.04.2015 16:31+2Не смотрел. Но, хотел. Если раздобуду ключ (любой, хоть триальный), попробую написать кейген и сделать статью.
mwizard
14.04.2015 16:33+25Напишите авторам PVS-Studio :)) Хотя это будет уже просто какая-то сказочная наглость — «Здравствуйте, можно попросить у вас пробный ключ на неделю? Я хотел бы написать кейген к вашему продукту, но для облегчения работы мне хотелось бы видеть направление бранчинга для успешной проверки. Спасибо!»
DrMefistO Автор
14.04.2015 16:34+2Кейген, как оказалось, уже есть, даже с исходниками. Ну да ладно. Цель статьи — немного обучить реверс-мышлению.
mark_ablov
14.04.2015 16:35+21Ну не знаю, по мне так всё тривиально и не интересно.
«Взлом» софта по алгоритму «нашёл строку» => «пропатчил переход» очень прост и не требует абсолютно никаких особых навыков.mwizard
14.04.2015 16:36+3А это уже щелчок по носу авторам PVS-Studio, которые хранят строки в открытом виде.
Longer
14.04.2015 17:03+22Не стоит заморачиваться с защитой программы, любую защиту можно обойти, не важно как быстро в данном случае. Те, кто взламывает или патчит программу для использования — просто не их клиенты. Ведь у честно оплаченных копий есть свои плюшки (ТП например).
DrMefistO Автор
14.04.2015 17:05+8Именно! Я всегда поддерживал такой подход: платить за саппорт, а программы бесплатные. Но это мое сугубо личное мнение.
ivlis
15.04.2015 04:49-2Что им мешает заопенсорсить свой продукт, тогда совсем не понятно. Уж бы и версию по Linux запилили бы давно.
Halt
14.04.2015 18:44+15Скорее это явная демонстрация того, что разработчики не являются белками истеричками от безопасности и не городят тонны обфускаторов чтобы было. Они сами говорили, те кто будет обходить ограничения триала и так у них ничего не купит. А те кто купят, не будут портить себе карму.
Тот же WinRAR отучивался от nag скрина заменой одного байта, просто потому что лицензия — это повод поддержать разработчика, а не индульгенция.DrMefistO Автор
14.04.2015 19:36Абсолютно с Вами согласен! Считаю, что покупка программы (даже после использования крякнутых версий) — это своего рода благодарность автору за труды. Другое дело, что не всегда по силам благодарить авторов IDA Pro, либо той же PVS-Studio.
monah_tuk
15.04.2015 06:42+1Ты попробуй ещё официально IDA Pro купить. Даже при наличии бюджета. Или что-то поменялось в последнее время?
datacompboy
15.04.2015 13:57да нет никаких с этим проблем, если тебе она нужна в белом свете.
MacIn
21.04.2015 00:33Что, уже продают частникам?
pfemidi
21.04.2015 01:00Только стандартные продают. А вот расширенные как лет пять-шесть назад перестали частникам продавать, лишь организациям, так до сих пор и не продают. Так что как минимум с Intel x64 частники в пролёте, увы. Ну и со всякими спарками/альфами тоже.
DrMefistO Автор
14.04.2015 16:38Ну, Вам легко, а научить крякингу не каждый хочет.
По опыту знаю, что по старым статьям мало кто хочет учиться, к сожалению.mark_ablov
14.04.2015 16:49+3Не уверен, что крякинг это must have знание, которому нужно обучать всех.
Если человек не способен осилить даже такие простейшие действия, то значит это ему и не нужно вовсе.
Было бы желание, то ни старые статьи, ни вообще их отсутствие не было бы проблемой. Вон приснопамятный мыщъх вообще с debug.exe начинал.DrMefistO Автор
14.04.2015 16:53+1Я тоже начинал с debug.exe. И согласен с Вами в том, что это не для всех знание.
Но, если бы все делали, как Вы думаете, ехетулс был бы голым, а знание реверса было бы у совсем единиц, таких как Крис.dns78
14.04.2015 16:57А может, оно и к лучшему было бы?
DrMefistO Автор
14.04.2015 17:02+1Тогда бы вирусописатели и им подобные люди держали надо всеми верх!
Конечно, это палка о двух концах: с одной стороны, это знания для вирусописателей, да. Но с другой, это знания и для тех, кто с ними борется! Думаю, вторые часто приходят в АВ-компании на собеседования (как и я когда-то).mark_ablov
14.04.2015 17:14+1Массовка (первая линия исследования малвар) думаю обучаются не по таким статьям, а непосредственно у ав-вендоров. Настоящие профессионалы (ну по крайней мере, те с которымы я общался) так же начинали далеко не с такого рода howto'шек (коих кстати и 10-15 лет назад было немало).
Так что не думаю, что отрасль бы обеднела.DrMefistO Автор
14.04.2015 17:23+1А профессионалы с чего начинают? Тоже ведь с малого. Главное — зародить интерес (как в школе).
dns78
15.04.2015 00:11А разве сейчас есть интересные вирусы? Если можно, ссылку, хотелось бы посмотреть. Я как-то давно уже ничего интересного (кроме истерики Касперского, пожалуй, по поводу не то самописных классов на C, не то форта), не видел.
DrMefistO Автор
15.04.2015 00:17Ну, крипторы, которые навешивают на малварь, зачастую используют интересные трюки для обхода детектов. Именно реверсеры должны уметь находить такие штуки.
А исследование вирусов, пусть даже старых — тема интересная, но, зачастую, до статьи не доживает, ибо надо придумать, о чем в ней можно написать.
Scratch
14.04.2015 16:36-7на exetools выкладывали аж сорцы кейгена, вполне рабочие. Одно дело разобраться как они работают и рассказать. А ломать программу без навесной защиты невелика заслуга
DrMefistO Автор
14.04.2015 16:40+9Заслуга — написать статью, ИМХО. Много Вами написано статей о реверсе? Критиковать может каждый, а сделать — единицы!
Scratch
14.04.2015 16:55+12Заслуга — написать хорошую статью.
DrMefistO Автор
14.04.2015 16:55+6Статья плохая? Если да — чем?
mwizard
14.04.2015 17:07-9Статья не плохая, просто она слишком уж для новичкового уровня. Но если рассматривать ее, как начало цилка, то вполне ок — я не зря поэтому спросил про keygen.
DrMefistO Автор
14.04.2015 17:09+2Попробую продолжить написание статей на тему исследования защиты ПО.
P.S. К сожалению, за мой большой опыт написания статей о реверсе, я не писал ни одной статьи о кейгенинге.
Видимо, этому не просто обучить в статье.
Часто участвует «намыленный взгляд».)Longer
14.04.2015 17:13Вообще хотелось бы подобного под Linux (не чтобы взламывать проприетарщину) для фана. Какие-нибудь программы-примеры. Я пробовал как-то раз развлекаться таким образом, но инструментария достаточно удобного, как под винду, не нашёл. По понятным причинам такие инструменты не очень развиты под linux. Но может я плохо искал.
mark_ablov
14.04.2015 17:15+1IDA.
А gdb значительно лучше чем ollydbg.Longer
14.04.2015 17:22gdb да, но мне немного другого инструмента не хватало. В комменте ниже подробнее.
DrMefistO Автор
14.04.2015 17:16Есть Hopper, есть IDA под Linux. А вот программ-примеров, увы, даже не искал. Часто фриварные попадаются (немудрено).
Longer
14.04.2015 17:20Программу пример можно написать самому для начала, а так примеры есть.
Hopper и IDA — проприетарные.
Мне в большей степени инструмента, как дизассамблер + редактор (забыл название за давностью лет аналога под винду, вроде на «H»название начиналось) не хватало.mark_ablov
14.04.2015 17:23hiew, есть куча (2-3) кроссплатформенных аналогов.
Longer
14.04.2015 17:25Да hiew, спасибо. В текущий момент нет снова времени погружаться в эту тему, может позже, но насколько я помню, аналоги hiew были ограничены чем-то, может быть архитектурой или/и ещё чем-то.
dns78
15.04.2015 00:16Самое ужасное ограничение всех альтернатив — это ncurses, что приводит к тотальному обрезанию хоткеев (не только это, но это самое болезненное — для меня). На мой взгляд — для комфортного проглядывания бинарников быстрее hiew под wineconsole дернуть.
monah_tuk
15.04.2015 08:07biew, а ныне beye: ru.wikipedia.org/wiki/Beye но не верх идеала. Зато опенсорсный. Мне вот не хватает тула, временами, в котором бы рисовались стрелочки от вызова к вызову, переходы отмечать, навигация по переходам. Вроде radare2 может, но не осилил пока.
REU
14.04.2015 17:24+1Хочешь открытого, тогда radare2
DrMefistO Автор
14.04.2015 17:26Хороший продукт, но, насколько я знаю, не имеет внутренней базы (как .idb у Иды).
REU
14.04.2015 17:32+1DrMefistO Автор
14.04.2015 17:33Добавил в закладки, спасибо!) Никак не могу на него перейти. Просто к Иде очень привык.
xvilka
15.04.2015 11:47+1У нас есть еще хорошая книга (в процессе написания, но есть перевод на персидский) и статьи с блога radare.today
mark_ablov
14.04.2015 17:20бтв, всё думаю написать свой write-up по неоквесту последнему, а то NWOcs что-то не спешит публиковать разбор заданий.
Там есть достаточно интересные задания. По крекингу — стандартные Java/.NET + реверс бинарника для солярки под Sparc'и + написание кейгена для алгоритма серийника, который исполняется во внутренней ВМ в обработчике #PF своей ОСи.
d_olex
14.04.2015 18:56+4При всем уважении, но найти строку с сообщением и запатчить джамп — это не реверс-инженеринг, а детский сад штаны на лямках. Если вам интересны примеры хороших технических статей на тему r/e — сходите на тот же /r/ReverseEngineering например.
DrMefistO Автор
14.04.2015 19:40+10Сам же и писал для подобных сайтов статьи! Знаете, в статье-то оно просто все выглядит. Но, фишка в том, что главное не сколько всего запатчено, а КАК я к этому пришел, и как показать ход рассуждений новичку. Именно об этом в статье!
d_olex
14.04.2015 20:00+4Статей про monkey patching сотни и все они не несут никаких новых знаний.
показать ход рассуждений новичку
Новичку в области r/e я бы посоветовал изучать тонкости работы hll компиляторов, внутренности операционных систем и задрачивать классический академический program analysis (в сети можно найти неплохие книги по данному предмету и конспекты лекций из MIT и Стенфорда если не ошибаюсь), сопутствующие ему разделы математики (теория множеств, графы и пр.) и криптографию. Как показывает практика, большинство из тех кто изучает r/e путем исправления джампов в отладчике так и остается на этом низком уровне навсегда, настоящий же реверсинг всегда идет бок о бок с compsci, софтвер инжинирингом и системным программированием.DrMefistO Автор
14.04.2015 20:03Я начинал именно с
исправления джампов в отладчике
При этом за плечами имею множество статей и закейгененного софта.
я бы посоветовал изучать тонкости работы hll компиляторов...
Попробуйте объяснить такие вещи в статье новичкам.d_olex
14.04.2015 20:07+1При этом за плечами имею множество статей и закейгененного софта.
Не знаю, мне это мало о чем говорит, поскольку cracking — это очень и очень частный случай r/e который мне интересен разве что в контексте тестирования инструментов для автоматического анализа машинного кода (automated keygen generation там, семантический анализ, SMT и прочее).
d_olex
14.04.2015 20:12Попробуйте объяснить такие вещи в статье новичкам
На эту тему есть достойные книги, начиная dragon book и заканчивая «Reverse Engineering for Beginners», не говоря уже о куче академических публикаций.DrMefistO Автор
14.04.2015 20:13+3Ну, на многие темы, обсуждаемые на Хабре есть куча книг, но, статьи все еще пишутся.
d_olex
14.04.2015 20:21+1Если говорить о статьях именно на тему monkey patching-a — то достаточно один раз осилить курс по program analysis и compilers theory что бы стать умнее чем большая часть целевой аудитории подобных статей. Уча новичков исправлению джампов в отладчике вместо того что бы учить мат. части — вы их не учите, вы их калечите.
Diaver
15.04.2015 00:31+3Какая прелесть, к черту статьи для начинающих и просто любопытствующих, сразу хардкор! Нужна статья или нет решают хаброюзеры и +61 на момент комментария, явно дает понять что нужна.
d_olex
15.04.2015 00:36-1Я всего лишь указал на то, что к r/e о котором упомянул автор в своей браваде статья относится весьма посредственно, и дело не столько в хардкорности.
Diaver
15.04.2015 00:42+3Почему же весьма посредственно. Мы узнали как устроена работа PVS в части проверки лицензии, любопытствующие узнали как можно модифицировать исполняемые файлы и работать с тулзами типа ольки. То что для вас это слишком просто и не интересно лично ваши проблемы и это не дает вам право ругать автора и статью только на этом основании. Опять же повторюсь что статья была оценена позитивно, а значит имеет право на жизнь.
d_olex
15.04.2015 00:51А я разве говорил что ее нужно удалить?
Бить канделябром тех кто ленится восстанавливать алгоритм и писать кейген, вместо этого ломая защиты быстрым грязным патчингом — это давняя (и на мой взгляд справедливая O) традиция крэкинг сообщества, так что ничего личного. Например КК, которого автор считает авторитетом, так же высказывал аналогичный мессадж в своих книгах.
Alexeyslav
15.04.2015 10:31Скорее узнали что есть такие инструменты. А вот как с ними работать — врятли. Есть только рецепты как достичь конкретных целей. Шаг в сторону от рецепты и всё, темнота. А если еще для этих действий необходима предварительная настройка этих инструментов?
Но с другой стороны, на чем начинают обучать электронике? Правильно… батарейка-выключатель-лампочка.
darked
15.04.2015 08:10+1Не слушайте других, за статью спасибо!!! Все на словах гуру крэкинга и с чёрными поясами по реверсу.
Интересно почитать такого рода статьи. Как заметили выше — не все в этом разбираются, поэтому простые примеры читать интересно. А усложнение можно сделать и в следующих постах.
monah_tuk
15.04.2015 08:13Поддерживаю! Как с некоторыми багами — анализируешь неделю, две, три… А решение в 1-2 строчки выходит. У меня правда хуже было: две недели на баг, а решение — 1 удалённый символ.
Alexeyslav
15.04.2015 10:34+1Это не хуже, это круче! Какое удовольствие уничтожить тот самый символ который две недели не давал спать… а со стороны выглядит как магия: пришел, удалил символ и все заработало.
DrMefistO Автор
14.04.2015 16:46+1Многие статьи на exetools именно такие: найти строчку, пропатчить. Так на все можно смотреть с уровня достаточного опыта.
cher11
14.04.2015 16:59+15Спасибо, мне, как не имеющему опыт подобного «ковыряния», было очень интересно.
Да и вообще забавно увидеть статью, в которой все поменялось местами —
под прицелом оказалась сама PVS Studio, а не открытый код.
zorgrhrd
14.04.2015 17:35-7Никогда не понимал в подобных статьях блоки текста про ассемблерный код, какие то тантрические символы, но да, было интересно, спасибо!
Хотя тут все пишут что это слишком для новичков и не интересно, простите, не все пишут стихи на ассемблере, мне даже в этой статье ничего не понятно и не видно логики, в части про ассемблер, хоть другими языками и владею.REU
14.04.2015 17:41-2Считается, что новичок должен владеть базовыми знаниями в виде знания базовых команд ассемблера. А если человек этого не знает, то он не новичок, а полностью не шарющий в теме человек.
toxicdream
15.04.2015 08:35+1Мне кажется, любой программист просто из любопытства обязан посмотреть на ассемблер хоть краем глаза.
Можно не знать имен и количество регистров, но часто используемые команды ADD, JMP, MOV, CALL и т.п. легко запоминаются.
datacompboy
14.04.2015 17:59+3Нда… Столько утилит, когда раньше хватало для того же патча одного hiew…
DrMefistO Автор
14.04.2015 20:20Да, времена уже не те!) Да и зачем велосипедить, если можно некоторые рутинные вещи сделать гораздо быстрее)
Другое дело, что, если хочется "по F3 дизассемблировать вирусы" (С) (F3 — кнопка вызова Lister в Тотале).
PerlPower
14.04.2015 18:26+3Каждый раз читаю такую статью и лезу ломать одну программу, которая лежит у меня с 2005 года, и каждый раз мне не хватает терпения. Все-таки то что вышло у автора — один из простейших вариантов.
naum
14.04.2015 20:08-14Это отвратительно, так подставлять коллег по цеху. Куча народа уже отписалась в разное время, что ломала пвс авторам пвс. Причем многие кейгенели. Все относились к этому спокойно.
А тут ман по тупому отлому для нубов. Если не хотели подставить — нужно было скипать название продукта.
И да, без кейгена за хороший топик не канает. Обучать киддисов можно было и на простеньких крякми, а не продукте пацанов с соседнего хаба.DrMefistO Автор
14.04.2015 20:12Вообще, часто, целью данных статей (конечно, я отписывался авторам, но реакции ноль), является «ускорение» фиксов защиты в ПО. Так же и с эксплоитами. Все для того, чтобы в будущих версиях какой-нибудь нуб не сделал того же самого. Думаю, все именно так. Плюс, это статья о том, как НЕ надо писать защиту.
О том, что кто-то отписывался авторам программы, я не в курсе.naum
14.04.2015 20:18-7Вы реально не понимаете, что ребята и не защищались? Они не раз писали об этом. Только всем хватало толку не форсить этот момент. Вы не вайт, не блэкхэт даже, вы просто балбес, решивший понтануться на пустом месте за счёт раскрученного продукта собложников.
DrMefistO Автор
14.04.2015 20:22+2Теперь понимаю. Ну, что ж. Теперь пришло время защититься.
Понтануться я совершенно не хотел, просто, это была программа, которая попалась под руку, вот и все.
VioletGiraffe
14.04.2015 20:40+4И что поменялось с выходом этой статьи? Как гуглился кейген, так и гуглится.
DrMefistO Автор
14.04.2015 20:41+2И что? Я тут кряков не выкладывал. Цель — обучение реверсу.
leoismyname
14.04.2015 22:01Просмотрел пост. О каком обучении идет речь? Такую статью и в езинос бы не взяли, слишком толсто даже для того времени :)
VBKesha
14.04.2015 23:24+3Хорошая статья.
Как минимум из разряда показать что иногда не всё так сложно как кажется.
А иногда приходится реверсить прогу не только что бы отучить от жадности, а по банальным причинам например аналогов проги нету но на современной системе из за какой либо мелочи не работает, в итоге зачастую единственный способ это исправить пропатчить прогу, и иногда бывает что того что описано в статье вполне достаточно.monah_tuk
15.04.2015 08:22+2Реверсил ThreadX из SDK Cypress FX3, что бы добавить поддержку в OpenOCD связки ARM926E-JS + ThreadX и упросить отладку через JTAG в дальнейшем. Успешно. Так что поддерживаю комментарий.
petrovnn
15.04.2015 10:53-8Мне не нравится агрессивный пиар на хабре этой конторы (как и любой другой), поэтому не скажу что обрадовался… но хорошо что кто-то дал им понять что не только они имеют что сказать
progman_rus
15.04.2015 13:29-3WMProtect?
нет не слышали.
Klotos
18.04.2015 01:17Спасибо за статью, продолжайте и не обращайте внимание на огульную и беспочвенную критику.
pewpew
Отличный способ получить бесконечный trial безо всяких просьб по email.
DrMefistO Автор
Просить по email — не так уж и плохо, особенно, если это бесплатно, и программа вам действительно нужна!
pewpew
Сарказм же
DrMefistO Автор
Не оценили, похоже, Ваш "сарказм")