Как стать автором
Обновить

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

Интересно, как защищаются от такой модфиикации настоящие программы? Они наверное подписывают свои файлы сертификатами, или даже через TPM во время установки?

Видел что-то подобное с хэшем. То есть, если изменить байт программы, то у нее изменится хэш. Программа видела это и не работала.

Лет 15-20 назад занимался такими вещами. Подпись ничего не даст, кроме как проверки в винде на то что файл не модифицированный и эту подпись можно было легко снять. Но были тогда и другие способы защитить свою программу. Самые хорошие способы это так сказать самому придумывать способ защиты на ассемблере и внедрять его в свою программу. Еще один способ это использовать защитники для программ. Сейчас это Denuvo и подобные. А тогда самой хорошей защитой была программа themida, она обфусцировала код и шифровала. Точно не помню как она работала, но помню люди обсуждали на crack.exe, что она по мере исполнения расшифровывает кусок кода, выполняет его, снова зашифровывает и так далее. Был и есть еще такой инструмент как upx, это архиватора, но только для запускаемых файлов, делаешь простую защиту как в статье, архивируешь upx и при запуске ты не найдешь код как автор, так как он будет архивирован, только начальный загрузчик upx понятен будет. В этом случае можно было воспользоваться тем же самым upx для разархивирования, но это не всегда помогало. Если не помогло и инструменты для взлома тоже не помогли, то вручную, был у меня один раз такой случай.
Запускаешь программу, до момента когда upx загрузчик выполнит все действия в памяти и программа будет нормально, смотришь где так сказать начало программы и делаешь дамп. Далее в дампе меняешь pe и начало программы на то самое место и начинаешь искать строки и тд.

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

Еще бы сказал что для новичков ida pro слишком сложная, я ее в редких случаях использовал. Есть так сказать дебагер для кряка, это ollydbg, хз вторая версия вышла или нет. Им проще всего и она запоминает бряки от предыдущего запуска и комменты ставить можно, плюс интерфейс мне больше нравился.

Такие программы как в статье называются crackme, есть сайты где выкладывают их и есть уровни, для новичков и выше. Но советовали первым делом сломать winrar, так как там чуть больше защита чем в программе из статьи, но такая же, поменять на jmp в нескольких местах

ollydbg

Она вроде так в x64 и не шмагла, т.ч. давно стала нерелевантной. Поправьте если что изменилось.

Но советовали первым делом сломать winrar

Сначала подумал, что кто-то сломал винрарные пароли на архивах (до сих пор лежит собственный архив с утерянным лет 15 назад паролем в ожидании лучших времен), потом понял, что речь о самом архиваторе, которым, наверное, уже лет 10 как никто не пользуется.

там где то недавно статья была о том, что можно подключить GPU к этому делу, скорее всего уже есть готовый софт, может помочь)

Большинство - никак. Даже если приложение платное и там какая-нибудь активация. Особо упоротые вешают всякие протекторы типа денувы, но по итогу кому надо - все равно взломает, а легальные пользователи страдают. В особо запущенных случаях бывает даже покупают лицензию но потом ставят кряк.

А можно lea rcx, aBad заменить на lea rcx, aGood ?

В данном случае можно, но если в секции вывода "Good" кроме помещения адреса переменной aGood в регистр RCX будет ещё, например, открытие какого-либо окна, то твой метод не сработает. Хоть у нас и выведется надпись "Good" код продолжит выполняться в секции вывода "Bad", т. к. условие cmp [rsp+0C8h+var_9C], edx выдало ложь, и переход на секцию loc_14000F216 не случился.

Ломать не строить!

C++, декомпилировать который нельзя

смущает меня эта фраза

Зачем так грубо, тут же все просто:

username = 'test'
passwd = 0
for i in range(len(username)):
    passwd = passwd + (ord(username[i:i+1]))
print ('Password: ' , passwd)

Как-то очень просто. Лет 20 назад делал очень наивную защиту от неавторизованного запуска для одной тулзы. Но и тогда там была и привязка к железу, и размазанные по коду проверки, причём не просто if, а подмешивание к математике тулзы частей ключа, плюс автоматически сгенерированные сотни ложных обращений к ключу. Развлекался, как мог.

У конкурентов появилось только когда кто-то слил генератор ключей.

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

Слишком сложное решение для поставленной задачи. "Наша задача - сделать так, чтобы программа выводила "Good" в независимости от того, что пользователь ввёл в поле пароля. "
Открываем Hex редактор,

меняем строку Bad на Good,

получаем результат


Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации