24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Суть такова. Есть одна коммерческая программа. Не какой нибудь высер школьника, что торгует им на всяких тематических форумах. Это что бы было представление о масштабе. Но и не супер анально огороженный, типо Денуво или АйЛецензер. Есть я, не владею ни одним языком программирования, но в сути более менее разбираюсь. С компьютером тоже давно на ты. То бишь, не совсем конченый Алёша, что переустанавливает шиндувс, каждый раз, когда "лагает" Некоторые базовые принципы крекинга знаю. А теперь ближе к сути. Так как у меня нету бабла на лицензию этой программы 30к, то я хочу её взломать для личного пользования. Не распространять, что бы не присесть на сгущенку. Так вот, насколько это будет сложно с моим уровнем? Я знаю тут есть много толковых ребят, которые разбираются в подобных темах. Какой нужно будет изучить язык? Ассемблер или сразу C? И на сколько глубоко? И самое главное, сколько это займёт времени? Алсо, был опыт написания брутфорса на С# но это так, не более чем развлекалово.
>>848578 Говорят что Оли игрушка для юных кулхацкеров. И в ней мол ничего серьезного не сделаешь, так ли это? Но с Оли я знаком, в принципе. Реально ли будет ей взломать коммерческий софт?
>>848451 (OP) Тебе понадобится ассемблер. У меня был единичный опыт такого плана, ситуация как у тебя была, знал только паскаль. В итоге нихуя не вышло, но спустя три года вернулся к этой задаче и таки получилось. У меня был пакер Themida и мне нужно было с помощью OllyDebug запустить пару скриптов, которые бы находили точку входа в пакер и в обход как бы мутили темы, грубо говоря jmp на адрес начала работы самой программы, в итоге был балласт с неиспользуемым кодом пакера и потом его отрубал. Нужно ещё дамп было делать, помню, а потом как-то восстанавливать и тд. Короче, я к чему это всё. Да, реально, но заёбно, месяц потратишь. Второе это то, что язык ассемблера без подготовки решительно невозможно читать. Начни с архитектуры ЭВМ https://vk.com/doc22264043_369431759?hash=d047d4f4a8e75c4211&dl=71c31a532757e063e5 Без этого ты только сможешь запускать чужие скрипты в надежде, что один из них подойдёт. Меня, например, скрипт спрашивал RISC или CISC процессор, а я в душе не ебал, что это. То есть даже самый автоматизированный скрипт, это если ты его найдёшь, один хуй потребует от тебя минимальной корректировки и вмешательства. А вот с нижнего уровня если начал, то потом асм читаешь, пишешь будто всю жизнь на нём писал, должно выработаться мышление определённое, должен понимать, что и как ты делаешь. Ну и удачи, но вангую, что тебя заебёт. Либо ты такой же ноулайфер, как и я.
>>848986 Спасибо за большой ответ. На самом деле не ноулайфер, но время свободное есть. Я боюсь что придётся протратить очень много часов на изучение ассемблера как раз. Но послушаю твоего совета и начну разбираться в ЭВМ.
>>849083 Я в этом не особо разбираюсь. Но обычный ключ продукта. Возможно он сверяет его на сервере. Так же есть демо-мод. По функционалу вроде нет ограничений. Хотя я пока не углублялся. Так же я думаю можно просто модифицировать exe. Сделать битхак и всё будет. Но я не проверял. Программа называется - Notion 6. Нотный редактор. Старые версии есть взломанные, именно через exe, но они все уже стали мусором и на 32бита.
>>849450 >EID is telling you that the exe is NOT packed, it is just a straight forward app compiled with Microsoft VC 6.0 and linked in Overlay mode. Хуй знает, вроде тебе повезло, но ты прогони ещё по разным https://exelab.ru/download.php?action=list&n=NQ==
>>849455 Если окажется, что ничем не запакован, то считай повезло. Кури дальше тогда. У меня было: ЮСамые распространённые пакеры (от англ. pack – «упаковывать»): UPX, AsPack(и AsProtect), PECompact, WinUPack, Telock, NeoLite, Yoda, PE-Shield, Armadillo… Они сжимают как и все(или не часть) ресурсы так и сам код программы, что приводит к невозможности её дизассемблирования (декомпиляции в исходный код ассемблера), отладки(трассировки) и даже редактированию ресурсов. Поэтому перед крЯком обязательно нужно проверить подопытную прогу на «сжатость». Весь код загажен хуйнёй, при отладке в олли прога крашилась, типа детектилась отладка и тд Тот ещё пиздец был. А я всего-то хотел проксидлл подключить, чтобы одну малючесенькую функцию подправить, а так развыёбывалась эта сука.
Скачать ExeInfo PE 0.0.4.1 (1476 Кб) Определяет версию упаковщика и компилятора по встроенной базе из 937 сигнатуры Обновление от : 2015.12.01
Скачать RDG Packer Detector 0.7.5 (2571 Кб) Новый анализатор исполняемых файлов - детектор EXE компиляторов и упаковщиков. Хорошо определяет публичные и приватные крипторы и упаковщики.
Ну ты понял, проверь несколькими, моя хуйня маскировалась под другие пакеры ещё, лол. Пиздец, как вспомню эту хуйню.
Сначала о «скучных банальностях». Антиотладчик. Поддерживается как обнаружение стандартных отладчиков, так и отладчиков уровня ядра. Есть также режим агрессивного поиска, но в этом случае приложение может отказаться запускаться на компьютерах с активными антирусами, руткитами или под Wine. Антидампер. Themida защищает приложения постоянно. Дамп памяти приложения на диск с последующим запуском не снимет защиту (кто бы сомневался.… Такие примитивные методы уже давно не работают) Обфускация точки входа (OEP). Themida прячет точку входа в библиотеку или приложение. Шифрование ресурсов. Если в ваше приложение включены какие-либо ресурсы (иконки, файлы и так далее), они будут зашифрованы и расшифрованы только при обращении к ним. VMWare/VirtualPC совместимость. Можно активировать этот режим для того, чтобы защищенное приложение могло запускаться под гипервизорами. Заворачивание обращений к API Windows. Themida прячет информацию о функциях Windows API, которые вызывает ваше приложение. Информация о требуемых для запуска библиотеках также недоступна взломщику. Защита приложения от модификации. Themida может проверять целостность приложения при его запуске, не позволяя запуститься измененной копии приложения. Можно активировать режим, при котором приложение после защиты можно будет беспрепятственно подписать . Защита памяти приложения от модификации в процессе выполнения (полезно, если вы разрабатываете, например, игру). Технология мутации кода. Весь код ядра Themida, который связывается с вашим приложением, подвергается мутации и «размазыванию». Каждый раз этот код генерируется заново, используя техники виртуализации (см. далее). Защита от мониторинга файлов и реестра. Themida не позволяет внешним программам отслеживать обращения защищенного приложения к файлам или реестру. Сжатие. Наложение защиты приводит к довольно сильному увеличению размера исполнимого файла на диске. Для уменьшения этого размера Themida поддерживает сжатие как самого приложения (со встроенным кодом защиты), так и его ресурсов. Themida умеет защищать формы Delphi/C++ Builder от специальным образом. Содержимое форм (фактически, .dfm файл) нельзя будет извлечь как из .exe, так во время выполнения приложения.
Практически все описанные возможности можно включать/отключать по вашему желанию. СУКА НАХУЙ ТЫ МНЕ НАПОМНИЛ БЛЯДЬ КАК ЖЕ У МЕНЯ ОЧАГ ГОРЕЛ ТОГДА ЕБУЧАЯ ТЕМИДА БЛЯДЬ МРАЗЬ А У ТЕБЯ НИЧЕМ НЕ ЗАПАКОВАН??!!!??!? НИЧЕМ БЛЯДЬ!! ПОВЕЗЛО БЛЯДЬ !!! АА ААААА
Технология CodeReplace извлекает части приложения, вставляет вместо них мусорный код, смешивает оригинальный код с кодом защиты и хранит его в другом месте приложения. При запуске участка кода, защищенного CodeReplace, после многочисленных проверок, он извлекается и расшифровывается. После выполнения опять заменяется мусором. Themida может сама проанализировать ваше приложение и выбрать кажущиеся ей подходящими для такой защиты функции. Но будет лучше, если вы сделаете это сами с помощью макросов (о них речь пойдет далее).
Виртуальная машина Themida – один из самых сильных способов защиты приложения. Суть его состоит в том, что части вашего кода заменяются сгенерированным ассемблерным кодом, но не родным для Intel процессоров, а кодом для абстрактного виртуального процессора со своей системой команд и внутренней структурой. Themida каждый раз случайным образом генерирует план его архитектуры. Таким образом, в коде защиты становится сложно разобраться. Themida поддерживает несколько типов виртуальных процессоров: CISC. Базовая защита, защищенный код относительно быстро выполняется. CISC-2. Расширенная защита, код занимает больше места, чем в случае CISC. Чуть более медленный. RISC-64. Каждая виртуальная инструкция занимает 64 бита, защита сильнее, чем у CISC, но защищенный код выполняется медленно. RISC-128. Усовершенствованный супермедленный и суперзащищенный вариант RISC-64
Для CISC процессоров поддерживается одновременное встраивание в защищенное приложение нескольких виртуальных процессоров одного типа, но с разной системой команд. Это повышает защиту, но увеличивает размер исполняемого кода приложения.
Генерация шума позволяет смешивать производящие полезную работу инструкции с ничего не значащими для еще большего затруднения работы хакеру.
Как и в случае с CodeReplace, Themida может сама выбрать, какие функции внутри вашей программы защитить преобразованием в код для виртуальной машины. Но лучше сделать это самостоятельно (см. далее).
Themida позволяет прятать приложение от PE-сканеров, которые определяют, чем защищено приложение. Доступны возможности локализации интерфейса приложения (окна с ошибками и системными сообщениями) и вставка заставок (все же время запуска защищенного приложения увеличивается на 500-5000 миллисекунд в зависимости от настроек защиты, надо чем-то занять пользователя в это время). Themida поддерживает управление с командной строки, что позволяет интегрировать ее в Build-систему.
>>849473 Сука. И представь, я знал только ебаный паскаль. Столько нервов сгорело. Ты это, если вдруг он всё таки запакован не надо, не лезь в это, не стоит оно того, я пизданулся на всю голову, пока пытался это сделать. Так и не сделал. Потом уже вернулся и получилось, но сука, я уже ебанутый теперь,я голоса слышу, понимаешь? За всё нужно платить.
>>849485 Бля, ну выдохни тогда. Дальше я думаю проблем у тебя не будет. Статью ту кури. У меня если че ситуация была другая немного, мне нужно было стороннюю библиотеку подключить, а пакер не пускал, так что как обойти регистрацию не подскажу. Но думаю там просто должно быть: дебажить до места, где вызывается ебучее окно и посмотреть какие варики есть, там должно быть типа je jne jmp и тд ну и там где-нибудь поставить или типа того. >Жмём на Enter, перед нами «предстаёт» окно Olly, в статусной панели которого мы можем прочитать, что >возник экзэпшн по адресу 0EEDFADE. В принципе это нам и надо. Теперь «шарим» взглядом по дампу >памяти(правое нижнее окно). Тут мы видим всё, что произошло с программой с момента её >запуска(переход по адресам, загрузка модулей, строк, вызов функций и возврат из них).
>>849495 Ничего. Запустил без вмешательства. Показать где происходит остановка. 1. Забыл добавить, что до всего этого он синхронизирует что-то с сервером. Не знаю, важное ли что-то или по-типу обновлений. 2. Он лезет в Windows папку, я просто не знаю, нормально ли это или нет.
>>849503 Бля, чувак, у меня не винда и тд По скринам тупо этим заниматься. Потрать неделю, ну две максимум на ту книжку, которую я тебе скинул и сам всё сделаешь.
>>849508 Не, ты прям прочитай. Она легко идёт и интересно, последовательно и тд. Историю узнаешь, как всё развивалось и тд. А как прочитаешь садись и пару условий в коде поменяй, ну как в обычном коде, только тут язык ассемблера.
>>849529 Хотя у тебя там call чета, вот этот колл по идее вызвать надо. Ну регистрация успешна! высветилось а затем уже какая то функция идёт, начало зарегистрированной работы программы. Ну ты принцип понял разберёшься там. Уже считай всё сделал. Ох и повезло тебе, что ничем не запаковано.
>>849534 Изменил нужные мне байты в отладчике. Через отладчик программа работает. Как сохранить этот измененный файл? Точнее дописал пару инструкций в блоке выравнивания. Надо сохранить программу и изменить точку входа. Как сохранить программу?
Правой кнопкой мыши по коду copy to executable all modifications вылезет окошко в котором нужно нажать правую кнопку мыши save to file имя файла ок мало ли, я долго не понимал, как редактировать там.
>>849537 Хз есть только один способ узнать наверняка. Попробуй просто перепрыгнуть момент регистрации, вполне возможно что интересуется она в сети только в момент введения кода, а потом работай в ней без интернета,запрети ей выход в сеть. Если не получится, то в той статье вроде бы были примеры обхода интернет активации.
>>849537 Даа, смотри, это раные варианты развития событий при регистрации, то есть перепрыгнув на suceeded ты 90 процентов, что всё это дело по бороде пустил.
>>849561 Типа je(jump if equal),jne (jump if not equal) и тд. Уже после получения ответа должна быть проверка ну бля if else если по человечески, вот тебе эту строчку je|jne че там будет надо на jmp заменить. Тогда тывведёшь любой код и его прога сожрёт. Либо попробуй ещё до отсылки где нажатие на кнопку идёт переход сделать, чтобы вообще до интернета не доходило исполнение.
>>849559 Забей, тебя не туда уносит куда-то. Ты нашёл адрес входа в процедуру проверки регистрации. Ты нашёл адрес вывода сообщения об успешной регистрации, то есть процедура проверки к этому моменту отработала. Всё, что тебе нужно сделать, это перепрыгнуть саму процедуру регистрации. Вдаваться в то, как она работает не нужно, потому что она просто не будет исполняться. Тебе нужно найти место обработки нажатия кнопки Activate и прописать туда jmp <адрес сообщения успешной регистрации>. Попробуй так сделать. Что говорит?
>>849572 Может не адреса сообщения а адреса функции, которая ниже идёт. По идее должно всё запуститься в отладчике, а как сохранить изменения в статье написано http://daxa.com.ua/article/num1/ нужно через хекс эдитор будет замутить ну ты разберёшься, ситуация один в один твоя, только он сделал так, чтобы любой код принимало, тоже можешь покопаться там и найти эту проверку, но можно просто перепрыгнуть исполнение и ок.
>>849640 Хотя, конечно, это грязно прыгать на сообщение, лол. Там ещё наверняка что-то в регистрах осталось и тд. Лучше как тот чувак описал сделай, найди ключевую проверку и замени на безусловный переход je на jmp. Где-то там, после того как с интернета взял ключ и сверился с твоим должна быть проверка. Он ещё вводил неверный ключ и по нему потом искал в олли.
>>849677 Бля, короче минус ночь, но заебашил тебе. Пришлось винду ставить и качать твою хуйню. Последняя версия. Скачай демо и замени екзешник.Лови на рыгхосте. Я, блядь, это сделал. Ебать я хацкер нахуй. Это второй опыт мой такой, лел. Да, ты правильно нашёл функцию, в ней вложенная есть, в ней ещё три вложены уже в user32.dll и там можно было джмп сделать и всё резко работало, но юзер длл то в систем 32, так что нихуя не вышло так, в итоге тупо выдрал последнюю вложенную, nopами заменил, вроде ниче не пострадало, только в менюшке окно регистрация не работает ну help software activation, если тебе критично, то мб можно как-то получше сделать,а я уже всё типа. http://rgho.st/62SpDNrWP Лови, короче. Отпишись, мало ли я хуйню сделал, но вроде то, что нужно, получилось вроде. Ебучий Таненбаум, всего одна книга и можно к любой хуйне приступать, даже если никогда не занимался ничем таким. Ладно, пойду питон надрачивать, питон сам себя не изучит. Бля, это ж так подумать, это ж любую прогу так ломануть можно! ЕБАААТЬ НИХУЯ СЕБЕ ООО
>>849790 Ты ничего не взломал, а просто изменил ход выполнения программы, ковыряясь на пару абстракций ниже исходного кода. В этом нет ничего крутого, ты сделал самую обычную вещь, но я в тринадцать лет тоже был очень горд собой, когда написал кейген для TurboLaunch, например.
>>849790 Ну да. Диалога о регистрации нету. В хелпе есть пункт регистрации, конечно это обход. Поэтому я считаю, что программа не полная. Она полюбас будет ссылаться на это. Но пока я не проверил это. Надо будет поработать и посмотреть что скажет. В любом случае, спасибо за то что потратил ночь на это. Но я наверное продолжу копать и посмотрю, можно ли сделать просто кейген. Что бы программа реально считала себя полноценной.
>>849842 Вообще, конечно, хуета получилась. Вечная демоверсия по сути, проверяться нигде не будет и функционал такой же, как в полной, но всё равно уёбищно. Ну разбирайся, пили.
>>849877 Я сейчас как раз дочитываю книжку о ЭВМ. Кстати, а ты не знаешь как находят к примеру, уязвимости в веб? Например всё тот же Нотион 6, у него есть саундбанки, но получить их можно только оплатив, но ведь есть же некий алгоритм который выдаём ссылку на скачивание, после оплаты, или вовсе прямой адрес. Можно ли подобное что-то намутить?
>>849950 Но я никогда таким не занимался, потому ничего конкретного не подскажу. Я вообще за системный подход: сначала необходимо разобраться в теоретической части, освоить матетематику, научиться писать качественный код на разных языках(от nasm до lisp), поработать с базами данных, с ОС, прежде, чем лезть в крякинг и всё такое прочее, много времени можно сэкономить, ночь, например. Ну, а так, я думаю в сети дохуя инфы по этой теме. Гугли как обезопасить свой сайт от взлома и тд, наверняка есть целые ресурсы, посвященные информационной безопасности, вот этому всему, там для всяких веб-девелоперов доступным языком показывают распространённые ошибки, которые они могут допускать. Ну и потом с этим списком ошибок пытаешься атаковать интересующий тебя сайт. Люди таковы, что часто пренебрегают правилами написания кода или вообще могут не знать о них, что-нибудь да не учли, что-нибудь да выстрелит. А дальше, как разберусь в одном, изучал бы по цепочке, пока не нашёл бы способ, но это уже гораздо больше времени займёт. В общем, я бы вот так действовал, хз.
>>849961 Ну и анонимность, конечно. Прогу ты скачал и ковыряй себе до старости, а тут тебя за соседский вайфай посадить могут. Нужно уметь прятаться. Не просто тор+впн, а fucking real anonymous А судя по тому, что мы на мейлаче с тобой об этом разговариваем, это всё не про нас пока что, надыбаем уязвимостей, проведем аудит и через 10 минут пативен приедет. Так что я бы на твоём месте набрался мозгов, почитал бы статеек, как протоколы работают и тд, потом других статеек по безопасности, всё это осмыслил, представил много раз, затем про анонимность в сети почитал бы, запарился, тысячу раз всё перепроверил и только потом переходил бы к практике к проверке одной какой-нибудь штуки на одном конкретном сайте. А лучше вообще туда не лез бы.
Такой мини отчёт. 1 - Я сделал почти такой же обход как у тебя. Сам. Могу гордится собой. Лол. 2 - Кажется нашёл ячейку по которой он сверяет ключ. Теперь надо правильно это реализовать для создания кейгена.
>>850063 По идее если ты нашёл адрес условия этого, то там ты можешь поменять на jmp вместо je и посмотреть, что будет. По идее, если ты всё правильно нашёл, то будет какое то окошко и надпись Регистрация успешно завершена! или типа того. Всё это дело должно находиться где то внутри твоей той функции, точнее на уровне между ней и ещё одной , внутренней, ты сразу поймёшь, о чём я. Флаг переключения на саму программу на третьем бьрейкпоинте в юзер32 длл, вчера вот его и нашёл. Но ясное дело, что юзер32 длл это виндовская библиотека. Там просто идёт сверкая короче лол сидел залипал потом смотрю, что меняется чутка код , если я ввожу, ну не код а комментарии дебагера, ну и стал смотреть какие ззначения меняются при вводе, нашёл то место, в eax помещается то, что ввёл ты, и сверяется с r15. Вот по идее и нужно проследить(это уже на уровнях повыше этого, в районе от твоей функции, что на скрине указал, до функции которая идёт в юзер32) какая функция трогает r15 'уже догадался вчера, что она будет лежать не в этом файле, а в libcurl.dll,, в папке попали, его нужно модифицировать, а не екзешник, в нём по названию понятно что идёт сверка с интернетом, и где-то в той библиотеке смотри, что меняет регистр r15, ну бля, я сам ведь нуб, мб я ине прав Твоя цель по идее добиться того, чтобы при вводе любой хуеты, короче просто при нажатии на кнопку выскакивала надпись регистрация успешна или как там, ну та, которую ты скидывал. И да, я не так и не попробовал сделать то, что тогда тебе говорил. Прыгнуть сразу на адрес этого сообщения(я его не нашёл просто, лол, не разобрался как искать там), вместо цепочки функций проверки и тд прыгнуть на регистрация завершена. В изменённом файле там на этом месте nopы стоят, увидишь сразу.
>>850087 Но это всё равно будет грязно, не лучше, чем я вчера сделал. Даже просто отключить лучше, тогда понятно, что функция просто нигде не вызывается, а тут на полпути перепрыгивать это залупа какая-то. А ещё мне интересно, можно ли дебажить в обратную сторону, не в курсе? Ну типа попасть на адрес и посмотреть откуда он вызывается. Короче как f8 только наоборот. Вчера нихуя не разобрался.
>>850091 В общем, тебе не адрес сравнения нужно искатья его вчера нашёл, а от адреса сравнения пройти в место, где эталонный ключ берётся из Интернета и туда прописать какое-то число, например, 0. Но думаю, там ещё куча всякого разного, типа то конечное значение, которое отправляется в r15 в место сравнения в user32.dll до этого ещё сто раз было поменяно и нужно проследить все эти изменения. А хотя, может и нет. Ключ и ключ, считался и хранится.
>>850087 Я там нашёл огромную хуиту где он производит коннект к интернету. И судя по логам, он чекает профиль на самом сайт или типо того. Твой пол, страну и прочую хуету. Пока не совсем понимаю зачем это ему. Но именно это происходит во время коннекта. Каких либо указаний на ключи не увидел. Возможно просто не уследил. Вообще, попробую потом весь этот кусок аннулировать. Что бы вообще её не происходило и посмотреть что будет.
>>850147 Да там кажется je было. Ну короче он просто по кругу крутил окно. Я сделал как советовал jmp и запахало. >>850149 Точно не помню. Надо опять смотреть. Я пока буду делать по красивому. Поищу что можно сделать. Если конечно там реал нету авторизации по инету. Но это глупо как-то. Если прогу можно так легко обойти, а они там авторизацию по инету делают.
>>850202 А если попробовать прыгнуть на адрес, где Activation succeed, то аварийно завершается 0xc0000005 access violation. Точно ничем не запаковано? У меня тогда похожая хуета была.
>>850202 Не факт. Там даже нету никаких особо ущемленний, даже в демо. Менял время, работает. На суицес ничего не делал. Это тупо. Нашёл там много вкусного.
>>850209 >А если попробовать прыгнуть на адрес, где Activation succeed Этот суицес относится собственно к коннекту. На программу даже никак не влияет. По крайней мере я не заметил ничего за ним.
>>850212 Непонятно, а что вообще тогда должно выводиться при успешной регистрации? Я пробовал туда прыгнуть, меня не пустило. "Активация успешна" . А функция, которая после сообщения идёт? Что она вызывает? А насчёт демо не демо с другой стороны оно ведь каждый раз спрашивает при включении и функции не урезаны, мб после 30 дней окошко просто закрывалось бы, так что вырезав его целиком и проверка убралась.
>>850218 Да хуй знает. Опыта у нас мало наверное. Я вот сам пытаюсь найти окно о успешной регистрации. В любом случае, это прикольно. Порадовало меня копание в этом коде.
Минутка мини инфы. Что удалось надыбать исходя из моего уровня. 54.225.74.201 - айпи по которому он конектится. То что он множество раз ссылается обратно на авторизацию, даже если скипать. Множество говнокода. И параметры, которые активируются после определённого условия. Ну это я так понял. А так хуй знает. Продолжу интересоваться.
>>850521 Давай-давай, у меня времени нет этим заниматься, поудалял и прогу и дебаггер и винду, но за твоими успехами слежу с интересом. Будет круто, если осилишь кейген, не меняя ничего в самой программе, real hakka.
>>850554 Блядь, 12 часов прошло. Ну и жесть. Всего на минуту решил посмотреть поставить. Ёбаный наркотик. Короче, нашёл функцию, в которой проверка ключа, там внутри целый узор из jne je и тд, меняя их получал разные сообщения об ошибках типа Неверный ключ, Вы используете ключ от старой версии, Сервер не отвечает и тд, но на регистрацию выйти так и не вышло. Но нашёл функцию, которая отвечает за регистрацию, надо узнать, где она вызывается, но там вызов типа call dword[addr+значение] не константа короче, потому поиск не находит нихуя. Короче нашёл начало где искать и конец. Буду завтра все вложенные функции смотреть, одна из них должна вызывать регистрационную. Лол 12 часов. Если бы дождь не отвлёк хуй знает сколько просидел бы. А там прикольно, со временем начинаешь осваиваться и ползать по пространству кода, ret, nop вставляешь где надо, прыгаешь возвращаешься угараешь. Ебать меня плавит.
>>850878 И самый огонь в том, что там всё логикой пронизано, если присмотреться. Условия расположены так, что на первом уровне самые распространённые, затем исключения, затем исключения из исключений и тд. То есть если ключ подходит, то быстрее всего программа отработает, этим как маяком можно пользоваться. Хуй знает, уже крыша потекла походу. А у меня шиза спящая, мне опасно вообще такими делами заниматься, сам с собой начинаю спорить, уговаривать себя и тд, лол. Ну вот надо было этот тред встретить, ну йобана.
>>850521 Забавный факт: читающему со стороны может показаться, что мы один анон. Даже пишешь похоже. Бля, а это не я часом тред создал? Вот что ты наделал, нотион, блядь.
>>850881 Или я. Хотя это совсем не важно. В общем, вот. Пойду посплю чутка и поищу вызовы, как минимум удалось локализовать проблему, точно известна функция, в которой обрабатывается ключ по нажатию на кнопку Activate.
>>850882 Ну и ещё нашёл место, где формируется запрос к ним на сайт, а затем обрабатывается ответ. Там тоже флажок, сменил и регистрация пройдена. Осталось только добраться до вызова той функции, там дохуя всяких развилок есть, куча каких то констант, вычислений, типа mov eax,37 и куча переходов, подозреваю, что там проверяется подходит ли ключ под шаблон ключей или типа того, и только потом оправляется/сверяется с сервером, типа мало ключ валидный, но уже использовался, нужно каждую развилку такую пройти, проверить куда ведёт. В результате получится последовательность изменений в условиях, грубо говоря там-то равно, там не равно, которая обеспечит дохождение любого введённого ключа до сверки с их сайтом. И вот тогда произойдёт вызов той функции, про которую говорил. А там я уже всё знаю, изменить флажок после запроса на противоположный и регистрация пройдена. Сука, ладно бы не получалось, а тут получается и забить никак из-за этого. Учёбу сегодня проебал. И завтра проебу походу.
>>850883 >нашёл место, где формируется запрос к ним на сайт Ты выше писал, что используется библиотека curl >>850087. Тебе надо взять эту библиотеку (она opensource) и модифицировать её таким образом, чтобы запрос к сайту не уходил в интернет, а самому сформировать правильный ответ. Какой именно - придётся подебажить. Кейген в данном случае не создать - нет проверки правильности ключа в программе, проверка происходит на сервере.
>>850891 >модифицировать её таким образом, чтобы запрос к сайту не уходил в интернет >изменить флажок после запроса на противоположный и регистрация пройдена Я нашёл то место, говорю же. Всё, что осталось, это правильно пройти развилки от нажатия Activate до вызова этой функции. Там есть проверка ключа всё равно, проверяется подходит ли под шаблон и если ок, то идёт запрос. Вот нужно сделать так, чтобы выполнена была проверка под шаблон.
>>850983 >правильно пройти развилки Имеется ввиду, что запрос сформирован там прямо видно, ссылка идёт на их api, указываются параметры, затем всё это дело сливают и получается новая ссылка с параметрами уже готовая и его передают curl, она обрабатывает и дальше идёт je, то есть сравнение и если всё ок то дальше идут проверки, опять вызовы curl, но там я от вывода сообщения об успешной регистрации до того места исследовал и знаю где какое условие ставить, чтобы выполнение дошло до сообщения об успешной активации. Казалось бы всё ясно, но чтобы посмотреть как эта функция работает, мне пришлось её вызвать посреди другого кода, так что программа падает при попытке отрисовать это дело, хотя по всем пунктам ок. Вот и нужно не самому вызывать её, а найти место где-то в лабиринте проверок условий где она вызывается. Тогда задача решена. Собственно, условий там не так много, но когда я копался и получал на выходе разные сообщения об ошибках я жал всегда f8, а там куча функций, а в них ещё функции а в них условия и где-то в дебрях этих функций вызывается искомая. Из возможных конфигураций нашёл такую, что выводитcя типа This code is already registered. Думаю, что это и есть верная конфигурация, как минимум ключ отправлялся на проверку(не хранятся же в коде все зареганные ключи), где-то внутри функций этих должен быть вызов моей сладенькой. Но сук, я опять полчаса просидел. Нахуй, закрываю пока матан с графами не сделаю.
>>851006 Изначально выводилось Please check your license code, it`s invalid или вроде того, один je на jne заменил и уже вот так. Короче круг поиска сужается.
>>850983 Нет же. Тебе нужно подменить ответ от сервера. Есть ещё один вариант - прокси-сервер. Если открытым текстом шлют запросы, то задача упрощается. Там ведь есть настройки для выхода в интернет? Твой мини-прокси будет отслеживать URL и решать, передавать дальше управление или выдавать фейковый ответ. Но в любом случае, нужно знать, какой параметр за что отвечает и что ожидает программа получить от запроса.
>>851013 Но я понял, спасибо. Сейчас всё закрою и как сделаю вернусь. Ещё вот мысль появилась где искать. Там с определённого момента всё заполняется текстом >This license code is already registered , ну точнее не им, а тем, что лежит в rdx, нужно посмотреть предыдущую функцию выходит.
>>851013 >ещё один вариант - прокси-сервер. Если открытым текстом шлют запросы, то задача упрощается. Там ведь есть настройки для выхода в интернет? Твой мини-прокси будет отслеживать URL и решать, передавать дальше управление или выдавать фейковый ответ О, бля, я понял! Охуенно! Но всё же попробую поковырять сами условия, мне по идее не важно, что ответит сервер, если на его ответ поменять реакцию. И я знаю, где записана эта реакция, я не знаю, где вызывается функция отправки на сервер, но если я найду место вызова, то дальше я знаю, как проставить je jne, чтобы исполнение дошло до строки "Thank you, your program is now activated!", а затем всё это дело с кучей других параметро запишется в rbx, вернётся управление в место на скринах и оттуда запустится уже с этими параметрами user32, то есть увижу другое окошко, с сообщением об успешной регистрации. Такой пока план. Всё, в пизду, закрываю всё пока что.
>>850891 > модифицировать её таким образом, чтобы запрос к сайту не уходил в интернет Крутое решение, если не получится сделать, как планирую, то сделаю так.
>>851014 А ты уверен, что это единственное место, где ключ проверяется? Может быть, по пути к этой функции результат был записан в несколько сотен мест? Ну не будет у тебя запроса на регистрацию, а программа как работала в демо режиме, так и работает в нём.
Ебать пацаны, это ОП. Ни хилый такой у вас ажиотаж тут случился. Я рад что вызвал у вас интерес к этому. Сегодня ночью меня осенило, наверное копание в этом коде, дают особые сбои в мозге. Прям аж сны снятся уже, где я двагаюсь во сне, по строкам jmp от одного сектора к другому. Типо хочу взять стакан и такой код появляется, где я джампаю к следующему циклу. Ебать я походу тоже уже поехал, как анон выше говорил. Но суть вот в чём, когда я наебнул код программы, она сказала что нету соединения с интернетом, и нету вариантов активировать оффлайн, следовательно, как анон выше говорил, ключ они сверяют на серваке. Может по хешу. А может уже сразу берут из твоего профиля. Там у них на сайте, ты активируешь ключ, по особо графе. Может идёт привязка по маку, или железу. Типо Айлок. Но инфа сомнительная. Одно не понятно, если всю их систему можно наебнуть одним лишь джампом, то нахуй такой гимор? Если тред утонет пацаны, создам новый, или создам когда хоть как-то продвинусь.
>>851150 >если всю их систему можно наебнуть одним лишь джампом, то нахуй такой гимор Можно ли? Тебе же написал уже, что там может быть сотня мест, куда заносится результат. Внешне программа может работать нормально, а в действительности будет демо-версия.
Вот такой запрос подаётся curl`у. Когда я пробую его подать, мне выдаёт The URI you submitted has disallowed characters. На самом деле там две части: https://api.presonus.com/registration/app/ и остальная отдельно в libcurl подаются, но я почитал документацию по идее там между ними как раз должен быть вопрос, гет-запрос, почему не выходит, что может быть? Абу заебал шатать у нас утт важные дела!
>>851187 Да в чём тогда проблема, даже если внешне она как демо, даже с джампом, но по функционалу даже не урезается. Время отматываю, нормально работает. Стеснений не испытываю. Странно короче это.
>>851203 У curl много возможностей. Можно URL одной строкой передать, можно массивом параметров ключ-значение. Может быть, он ожидает, что ты параметры ему передашь, а ты ему полный запрос. Или на недопустимые символы ругается не curl? Или мне чего-то непонятно. Название функций, к которым обращается программа с curl, должны быть известны. Посмотри, что от тебя ожидают. >https Прокси отпадает. Только mitm-прокси, только хардкор. Как эту программу скачать (если что, конечно же, потом как-нибудь, мне проект надо закончить же)? Тыкал-тыкал в эту Download, ничего не вылезает и не скачивается. >>851204 >Странно короче это. Некоторые производители (крупного) ПО забивают на мега-защиту своих программ. Простейшая проверка, jz на jnz и программа не требует регистрации. Всё равно, если будешь подобную программу использовать в коммерческих целях, сразу же всплывёт, что нет лицензии.
Посоны, я очень хочу вкотиться, пока учу сишку по Прате. У меня вопрос насчет ассемблера, кому не трудно, удовлетворите любопытство.
Вот имеется много ассемблерных языков, FAST NASM MASM32. Синтаксис у всех разный, или же их в природе только два - AT&T и Intel?. Нужно ли знать их все? Конвертируются ли они друг в друга? Есть к примеру какойнибудь троянчик,неважно ведь на чем он написан, все равно же по сути после дизасемблирования он будет в каком-то из этих двух синтаксисов?
>>851429 Синтаксисы в деталях отличаются. Где какие скобочки ставить, и ставить ли, где dword ptr писать, директивы для макропроцессора и ассемблера (не инструкции) у всех свои, опять же. А после дизассемблирования - ну вот в какой синтаксис дизассемблер отформатирует код, в таком оно и будет. А >>851565 тебе про ассемблеры для разных архитектур рассказывает.
>>851429 Смотри, у тебя проц, например, ч64. У него есть некий набор команд и регистров, вот с ним ты и можешь работать. А различия будут, например такие: mov eax,ebx (Intel) movl %ebx,%eax (AT&T) Но по сути это одна команда. Мне удобнее синтаксис intel.
>>851207 Чувак, а я забухал и ни к учёбе ни к этому не приступал, лол. Друзья пришли, вытащили и понеслось. Там сначала надо зарегаться у них: регаешься и сразу появляется кнопочка скачать демоверсию.
>>851207 >можно массивом параметров ключ-значение Я и так и так пробовал. Да не, это эквивалентно же. Тем более в коде строкой. Там после этого сразу вызывается curl easy четатам curl perform и curl getinfo, гет запрос короче, и вроде как ниче там нету. между, строка так и передается. Кстати, сначала идёт коннект, а затем только окно регистрации. Может, там какое то соединение устанавливается, типа токен одноразовый или хз и без него запрос никак не отправить.
Поддаётся потихоньку. Тот участок кода, на который в прошлый раз думал оказывается неактивный и сайттот,мб с прошлый версий осталось. Сейчас вот прошла проверка на зареганный аккаунт, осталось на код проверить.
>>852015 Вызов curl вроде один там,нашёл переключатель,который реагирует на инвалид код. Пробелупиздапоходу.Надеюсь чтоненужнобудет черезпрокси мутить.
>>851654 >curl easy curl_easy_init - создание контекста >curl perform curl_easy_perform - создание запроса, отправка запроса и получение результата >curl getinfo curl_easy_getinfo - extract information from a curl handle Там ещё должны быть вызовы curl_easy_setopt. Ими устанавливаются параметры: URL, таймаут, заголовок и прочее. >>851665 Вероятно, сервер требует Referrer, User-Agent, ещё какие-нибудь хитрые поля. Ты голый запрос отправляешь, сервер тебя не узнаёт как программу и выдаёт '404 Page Not Found'. У меня mitm-прокси самодельный сломался. Но можно попробовать Fiddler или что-то подобное. И увидишь, какой заголовок программа отправляет.
>>852019 Да, всёэто нашёл. get_info INVALID_CODE возвращает, нужно,чтобы он был AVAILABLE.
Те посты устарели, см>>852017 >>852014 >>852015 >>852013 Видимо, тот участок кода простоот старых версийостался, атавизм короче. Попробуй пройди по новой ссылке, тебе всё выдаст.Осталось только подменить выдачу на AVAILABLE, пока пытаюсь все копии подменить, либо Короче, онивсессылаютсяна одинадрес: lea rcx, [rsp + 0x68] Ноя хз, не шарю, как подменить его на lea rdx, [0x140a318e0] Это адрес константы. В данный моментделаю следующее lea rсx, [0x140a318e0] в каждом месте,где используется. Я просто хз, какпопасть в [rsp+68], как этопонимать? В rsp хранится 000000000030BC10 Это какой-то относительный адрес или что? Я не понимаю.
В дампе менял значение, полученное по запросу(INVALID_CODE) на AVAILABLE,там два раза запрос отсылается надва разных адреса.Вот что получилось. Но регистрациятакинепройдена, как и говорил анон.Видимо, придётся через проксисерверделать, хотястранно, ведьмодменил всезапросы, почему не вышло хз.Кажется, что где-то в мелочи наебался но уже спать рубитт,только поломаю всё.
>>852060 Вот бля, выяснилось, что перед отправкой ключ сначала проверяется на валидность checksum и тд. То есть теперь нужно написать что-то вроде кейгена, ввести подходящий ключ, после того, как он пройдёт все проверки пойдут запросы на сервер и тогда уже подменять ответы в дампе. Пиздец какой.Анон,который писал кейген, есть какая-то инфа или я хз.
Ну,лол, вроде всё. Причём ничего не менял в коде,тупо в регистрах значения менял. Правда при перезаходе сбрасывается естественно, так что осталось захардкодить это дело и нормас.
>>854383 Сначала код,затем сервер.При каждом включении проверяется код, причём это происходит ещё до появления окна регистрации.Предыдущий введённый код запоминается в проге.
>>855080 Нет, пока учёбой занимаюсь. После нажатия ок один хуй демо запускается, не там искали, проверка идёт ещё до появления окошка с регистрацией. Нашёл там пару мест, потом запарюсь, сейчас пока нет времени.
>>855097 Но всё это дико интересно, особенно порадовало просветление с изменением значений регистров вместо кода. Взлом без взлома,лол, то есть код не меняется, но окошко активации выскакивает, типа как у Брюса Ли стань водой, не ломать сам замок, а типа как вода проникнуть, затем стать льдом и провернуть ключ получившийся. Вот только каждый раз же не будешь прогу с дебагером запускатьт, всё же нужно хардкодить. В одном месте в eax ставишь 1 и все проверки, связанные с криптографией проходятся, там типа функции отработали и после этого какие-то значения в регистрах остаются, от них и зависит какие условия пройдут а какие нет. Или в том месте, где запрос. Функция отработала,запрос отправила и ответ INVALID_CODE, только записан наизнанку типа EDOC_DILVANI и в HEX. Ты берёшь, записываешь AVAILABLE(ELBALIAVA) в HEX в эти места в памяти и все проверки проходятся и типа активейшн саксесс.А наоборот потому,что там типа стек же, по одной букве заталкивается, вот и получается слово наизнанку.Я больше изучаю как че работает,чем ломаю уже. Внутри окна активации ничего нет,просто если всё ок, то код записывается в память. А при следующем включении этот код перемалывается в кашу числовую, идут сравнения и если всё хуёво, то опять окно активации вылазит, так что вся суть ещё до этого окошка, там и буду копать.Есть стойкое ощущение, что в итоге приду к самому началу, только если я там функцию тупо nopами заменил,то сейчас тупо по проверкам она не отработает да и всё,вся активация. То есть 70 процентов,что на месте топтание, изначально ок всё сделал, но надо ж ведь проверить, убедиться! Да и потом, такой-то опыт путешествия внутрь кода! И понял многое, пока ебался со всем этим, будто гуляешь по тропинкам, ы. Кароч охуенное занятие, вот.
>>857859 Ну, похоже получилось. В два этапа: сначала ключ проверяется, затем через интернет рега идёт, в одном месте jmp поставил и там, где интернет соединение в памяти подменил ответ на запрос, помимо этого ещё какие-то аддоны поставил, лал,expansion sounds. Повезло, нашёл место где проверяется хэш. Теперь думаю замутить кейген, лол. Почитал, там вроде не сильно трудно. Но это потом уже . Если надо могу екзешник скинуть, но у тебя по идее не пройдёт интернет активацию,надо один хуй запрос подменять. Либо внутрь вписать, но там вписываешь и всё по пизде идёт я хз как.
>>857931 Что в итоге дало то? Намути кейген. Буду признателен. Если конечно там всё реал робит и функционирует. Можешь даже сразу на рутрекер закинуть, пацаны тебя там на руках носить будут за такое.
>>858214 В итоге когда в менюшке нажимаешь Software Activation вылазит это окошко, типа всё ок, ваш ключ, ваш емаил, установленные дополнения. Если вы купили дополнения, которых нет в списке, то жмякайте кнопку, они появятся. Потом, статью уже нашёл, и место, где MD5 и всё такое тоже давно ещё нашёл, потом займусь, учёба пока что, да и сил это отнимает. Как я и говорит, нужно быть ноулайфером-аутистом. Посмотри, там СУТКИ под отладкой. Чуть больше 24 часов потратил в общей сложности.
>>858214 Нужно будет помимо кейгена ещё захардкодить ответ сервера, всё забываю. А то я подставлял в регистр прямо во время работы программы. Типа к дампу переходишь и вот на это две строчки заменяешь. 4c42414c49415641 0000000000000045 В переводе ELBALIAVA(AVAILABLE)
>>858313 Не скачивает, а доступ открывает по идее. Там ключи разные есть, как я понял, можно помимо проги самой ещё что-то купить. Или нет. Хуй знает, не запаривался.
>>858321 Не. Они не появятся просто так. Они весят по 6гб. Их надо качать с сервера. А там они по ссылке после покупки. Так что ты там с сервером сделал? Поменял запрос на свой? Или просто прыгнул*
>>858324 Поменял ответ на AVAILABLE. То есть так их не скачать? Ну бля, тогда нужно где-то взять сами файлы, смысл в том, что если их скачать, они встанут. А если без этого сделать, то даже если ты их установишь,они не встанут., как я понял.
>>858327 Не. Встанут в любом случае. Там проверки особо и нету на это. Тут вообще какая-то ебанутая защита и не понятно что она даёт. Вроде по функционалу она не ограничивает даже.
>>858338 Ну хуй знает, во всяком случае сейчас похоже, что активировано всё. По крайней мере проверка вылезла только в самом начале, типа всё, саксесс, а затем не вылазит больше, а когда в менюшке активейшн нажимаешь вылазит, что всё зарегано, ваш ключ, емейл, ауторизед аддонс,и кнопка, типа если в списке нет аддонов, которые вы купили,то жмякайте. обновим инфу по данному ключу.Во всяком случае я так понял.
Есть одна коммерческая программа.
Не какой нибудь высер школьника, что торгует им на всяких тематических форумах.
Это что бы было представление о масштабе.
Но и не супер анально огороженный, типо Денуво или АйЛецензер.
Есть я, не владею ни одним языком программирования, но в сути более менее разбираюсь. С компьютером тоже давно на ты.
То бишь, не совсем конченый Алёша, что переустанавливает шиндувс, каждый раз, когда "лагает"
Некоторые базовые принципы крекинга знаю.
А теперь ближе к сути.
Так как у меня нету бабла на лицензию этой программы 30к, то я хочу её взломать для личного пользования. Не распространять, что бы не присесть на сгущенку.
Так вот, насколько это будет сложно с моим уровнем?
Я знаю тут есть много толковых ребят, которые разбираются в подобных темах.
Какой нужно будет изучить язык?
Ассемблер или сразу C? И на сколько глубоко?
И самое главное, сколько это займёт времени?
Алсо, был опыт написания брутфорса на С# но это так, не более чем развлекалово.