Что такое «кряк» и последствия его установки. Крэкинг: практика взлома и теория защиты Серийный номер в текстовом файле


Итак, начнем с теории. Crack (крэк, кряк) - программа, позволяющая осуществить взлом защиты программы, установленной разработчиками для ограничения функциональных возможностей. Как правило, кряк создается для массового использования, и создается программистами-энтузиастами без преследования выгоды. Существуют целые коллективы программистов, занимающихся взломом ПО, например «TEAM ROR», «Team EQUiNOX», «BEAN», «SSG» и другие. Для слова кряк используются следующие выражения: лекарство, таблетка, медицина, пилюля, аптека и т.п.. Вот самые типичные способы защитить программное обеспечение от "несанкционированного" использования:

Условно бесплатное ПО (shareware) - программы которые можно бесплатно скачать и использовать определенный промежуток времени по прошествию которого за программу придется заплатить, если Вы решили пользоваться ей дальше. Срок бесплатного пользования программой составляет, обычно, 30 дней.

Демо-версия (demo) - программы данного типа, как правило, предназначены для того, чтобы пользователь смог оценить возможности программы. Демо-версия обычно не полнофункциональна (часть опций программы может не работать) либо имеет ограничения на применение программы. Например, программа в демо режиме может обрабатывать всего 1 файл либо создавать какой-то чертеж, но без возможности его распечатать или сохранить результаты работы на диске. Т.е. программы данного типа позволяют лишь оценить саму программу, ее интерфейс и степень ее полезности для пользователя. Полнофункциональную версию необходимо приобретать у разработчика.

Триал- версия (trial) - в принципе, полный аналог условно-бесплатного ПО (shareware) за исключением того, что часто в trial-версиях пользователю предоставляется не определенный бесплатный срок использования программы (30, 14 дней), а определенное количество запусков программы. Можно сказать, что программы типа trial и shareware это одно и тоже.

Защита от копирования (retail software) - Эта защита препятствует только тому, чтобы пользователи не делали копии и не устанавливали программное обеспечение на нескольких компьютерах, не покупая лицензию.

Защита на дисках (игры) - эта защита обычно используются в играх; Для запуска игры вы должны иметь оригинальный компакт-диск. Типичным кряком этой защиты является NoDVD или NoCD, реже - специальный драйвер.

Существует еще множество других типов программной защиты, от очень простого до чрезвычайно сложного. Удаление, отключение или обход защиты - очень трудное и интересное занятие для крэкера. Удаляя защиту, взломщик "побеждает" программиста (или целые программные группы), ответственных за создание алгоритма защиты. После того, как программа сломана, крэкеры, обычно, выкладывают свежеизготовленный кряк на общедоступное скачивание, чтобы продемонстрировать свои способности миру.

Серийный номер, патч, генератор ключей и т.д., принято называть кряком или крэком (от англ. crack). Теперь мы расскажем о каждом подробнее.

Существует несколько основных типов кряков:

Серийные номера aka сериалы (serial numders, s/n). Это самый простой тип кряка - последовательный специальный текстовый код, позволяющий снять ограничения или демонстрационный период работы программы. Чаще всего способен работать на нескольких компьютерах, если не проверятся разработчиком через интернет. Чтобы зарегистрировать программу, использующую этот вид регистрации, нужно: Запустить программу и, обычно на вкладке О программе -> Ввести серийный номер или регистрация, вставить этот код.

Регистрационные файлы aka ключи (regfiles, keyfiles). По существу, рег-файлы очень похожи на серийники, обычно это специальный файл с расширением *reg. Если открыть кей-файл любым текстовым редактором, то можно увидеть серийный номер, если он, конечно не зашифрован. Чтобы активирвать программу, регистрирующуюся этим способом, обычно нужно запустить *reg файл и просто согласиться с изменениями реестра. Бывают исключения среди *reg файлов, это могут быть просто файлы, не относящиеся к реестру; их нужно скопировать в папку с программой, также есть вариант типа lisence.dat и им подобных случаев. Разработчикам программы довольно легко противостоять распространению кей-фалов, поскольку, в большинсве случаев, они могут просто заблокировать ключ, добавив его в черный список. Например, ключи Касперского Антивируса блокируются таким способом.

Генератор ключей aka кейген (keygenerator, keymaker, keygen) - небольшая программа, которая генерирует криптографический ключ для кодирования данных или псевдоподлинные CD-ключи или серийные/регистрационные/активационные номера для регистрации/активирования ПО. Генератор ключей сделать намного сложнее, чем любой другой кряк, поскольку крэкер должен не только полностью понять последовательный алгоритм генерации объектного кода, но также и быть в состоянии обновить его. За частую, создание keygen"а занимает несколько дней или даже неделю. Keygen использует те же алгоритмы, что и защита, поэтому его создание - это также результат взлома защиты, а точнее успешного исследования алгоритмов защиты с помощью отладчика либо дизассемблера. Так, можно скачать бесплатную демо (trial) версию и с помощью кейгена превратить ее в полнофункциональную, введя сгенерированный серийный номер.

Разработчики ПО пытаются предотвратить пиратство, используя активацию продукта, требующую от пользователя соединиться с интернетом или позвонить по телефонному номеру для дальнейшего использования ПО, как, например, Adobe . Новейшие кейгены также содержат метод обхода активации продукта. Также, существуют программы, которые сами генерируют специальный ключ, который нужно предоставить разработчику вместе с платой, чтобы получить ключ активации. К счастью, многие крэкеры умеют обходить такую защиту. Пример такой защиты можно увидеть в программах EzGenerator, Incomedia Website X5 Evolution и др.

Patch. Патч - самый широко распространенный тип кряков - маленькая программа, которая изменяет целевые программные файлы, чтобы удалить или изменить часть кода, который ответственен за ограничения защиты или регистрационный процесс. В результате исправление или заставляет программное обеспечение "думать", что оно регистрировано; или например, открывает недоступные в демо-вериях ключевые кнопки или закрытые функции или просто удаляет модуль защиты и т.п. Патч легко создать, сравнивая двоичный код регистрированной версии и trial-версии и исправляя различия между ними. Для регистрации программы необходимо скопировать патч в папку с установленной программой и пропатчить *.exe или *.dll-файл.

Один недостаток патчей - то, что, если взломцик случайно изменит часть кода, который необходим для нормального функционирования программы, она будет работать некорректно или не будет работать вовсе. Некоторые разработчики преднамеренно "смешивают" код защиты с кодом программы, чтобы сбить с толку крэкера; однако, опытные взломщики обходят данный вид защиты без проблем.

Противостоять патчам обычно является не очень аппаратной задачей для программных изготовителей; в большинстве случаев, простое программное обновление версии делает патч бесполезным, потому что патчи изменяют двоичный код и обычно создаются, чтобы изменить определенные части в том коде, который не будет работать, если код будет отличаться (даже немного) от оригинала. Некоторые разработчики пытаются обмануть взломщиков, выпуская "тихие обновления": у программного обеспечения есть точно та же самая версия и даже дата выпуска, но различный двоичный код. Крэкеры противостоят этому выпуском нескольких версий патча, или созданием универсального патча, который работает со всеми версиями программного выпуска.

Loader. Loader - программа, предназначенная для запуска взламываемой программы. Обычно просто обходит ограничения на количество запусков или триальное время. Обычно, лоадеры используются, чтобы взломать программное обеспечение с зашифрованными двоичными файлами.

Cracked EXE. Cracked EXE - это взломанный EXE файл, в котором нейтрализован модуль защиты. Также встречаются случаи с Cracked DLL. Скопировав с заменой такой файл в папку с программой вы получите полнофункциональную версию программы. Иногда, *.exe бывают сломаны не до конца, и программа все еще требуют ввести серийный номер, то ее можно ‘добить’, введя любой набор символов, как правило это бывает 11111-11111-11111 или aaaaa- aaaaa- aaaaa.

NoCD/NoDVD. NoCD/NoDVD является аналогом Craсked EXE.

Лекарство - более обобщенная форма всех вышеперечисленных понятий.

Хорошо, теперь мы знаем о типах crack"в и что они делают. Как правильно использовать их?

Во-первых, проверьте загруженный кряк хорошим антивирусом, например NOD32, Kaspersky. Вообще, мы рекомендуем делать это с любым исполняемым файлом, загруженным из Интернета. Помните, что крэкеры никогда не заражают свои кряки вирусами; поскольку один известный крэкер сказал: "Я не собираюсь проводить недели работы, чтобы украсть Ваш пароль ICQ или форматировать Ваш жесткий диск". Тем не менее, советуем ВСЕГДА, проверять кряки антивирусом, перед применением.

Во-вторых, читайте NFO-файл , прилагаемый к кряку! В этом файле, обычно содержится краткая инструкция по применению лекарства, также бывают случаи с ‘Readme.txt’, эти файлы всегда следует читать, перед тем, так использовать кряк. чтение NFO/Readme сохранит Вас от многих проблем позже.

Теперь Вы готовы распаковать и использовать кряк (если это - программа). Если это - патч или лоадер, Вы должны сначала закрыть взламываемую программу, затем открыть NFO-файл и следовать инструкции. Помните, что некоторые кряки не работают как предназначено; в кряке может быть ошибка, или целевая защита программы могла бы быть уже обновлена. В таких случаях Вы, возможно, должны или получить старшую версию программы, или более новую / рабочую версию крэка.

Если все прошло удачно, то, теперь, программа должна работать без ограничений!

Спасибо за чтение нашего маленького гайда; мы надеемся, что он помог Вам или по крайней мере Вам было интересно читать. Мы будем регулярно обновлять это и добавлять подробную информацию, по мере появления новой информации.

Итак, начнем с теории. Crack (крэк, кряк) - программа, позволяющая осуществить взлом защиты программы, установленной разработчиками для ограничения функциональных возможностей. Как правило, кряк создается для массового использования, и создается программистами-энтузиастами без преследования выгоды. Существуют целые коллективы программистов, занимающихся взломом ПО, например «TEAM ROR», «Team EQUiNOX», «BEAN», «SSG» и другие. Для слова кряк используются следующие выражения: лекарство, таблетка, медицина, пилюля, аптека и т.п.. Вот самые типичные способы защитить программное обеспечение от "несанкционированного" использования:

Смотрим>>>>>>>>> ">

Условно бесплатное ПО (shareware) - программы которые можно бесплатно скачать и использовать определенный промежуток времени по прошествию которого за программу придется заплатить, если Вы решили пользоваться ей дальше. Срок бесплатного пользования программой составляет, обычно, 30 дней.

Демо-версия (demo) - программы данного типа, как правило, предназначены для того, чтобы пользователь смог оценить возможности программы. Демо-версия обычно не полнофункциональна (часть опций программы может не работать) либо имеет ограничения на применение программы. Например, программа в демо режиме может обрабатывать всего 1 файл либо создавать какой-то чертеж, но без возможности его распечатать или сохранить результаты работы на диске. Т.е. программы данного типа позволяют лишь оценить саму программу, ее интерфейс и степень ее полезности для пользователя. Полнофункциональную версию необходимо приобретать у разработчика.

Триал- версия (trial) - в принципе, полный аналог условно-бесплатного ПО (shareware) за исключением того, что часто в trial-версиях пользователю предоставляется не определенный бесплатный срок использования программы (30, 14 дней), а определенное количество запусков программы. Можно сказать, что программы типа trial и shareware это одно и тоже.

Защита от копирования (retail software) - Эта защита препятствует только тому, чтобы пользователи не делали копии и не устанавливали программное обеспечение на нескольких компьютерах, не покупая лицензию.

Защита на дисках (игры) - эта защита обычно используются в играх; Для запуска игры вы должны иметь оригинальный компакт-диск. Типичным кряком этой защиты является NoDVD или NoCD, реже - специальный драйвер.

Существует еще множество других типов программной защиты, от очень простого до чрезвычайно сложного. Удаление, отключение или обход защиты - очень трудное и интересное занятие для крэкера. Удаляя защиту, взломщик "побеждает" программиста (или целые программные группы), ответственных за создание алгоритма защиты. После того, как программа сломана, крэкеры, обычно, выкладывают свежеизготовленный кряк на общедоступное скачивание, чтобы продемонстрировать свои способности миру.

Серийный номер, патч, генератор ключей и т.д., принято называть кряком или крэком (от англ. crack). Теперь мы расскажем о каждом подробнее.

Существует несколько основных типов кряков:

Серийные номера aka сериалы (serial numders, s/n). Это самый простой тип кряка - последовательный специальный текстовый код, позволяющий снять ограничения или демонстрационный период работы программы. Чаще всего способен работать на нескольких компьютерах, если не проверятся разработчиком через интернет. Чтобы зарегистрировать программу, использующую этот вид регистрации, нужно: Запустить программу и, обычно на вкладке О программе -> Ввести серийный номер или регистрация, вставить этот код.

Регистрационные файлы aka ключи (regfiles, keyfiles). По существу, рег-файлы очень похожи на серийники, обычно это специальный файл с расширением *reg. Если открыть кей-файл любым текстовым редактором, то можно увидеть серийный номер, если он, конечно не зашифрован. Чтобы активирвать программу, регистрирующуюся этим способом, обычно нужно запустить *reg файл и просто согласиться с изменениями реестра. Бывают исключения среди *reg файлов, это могут быть просто файлы, не относящиеся к реестру; их нужно скопировать в папку с программой, также есть вариант типа lisence.dat и им подобных случаев. Разработчикам программы довольно легко противостоять распространению кей-фалов, поскольку, в большинсве случаев, они могут просто заблокировать ключ, добавив его в черный список. Например, ключи Касперского Антивируса блокируются таким способом.

Генератор ключей aka кейген (keygenerator, keymaker, keygen) - небольшая программа, которая генерирует криптографический ключ для кодирования данных или псевдоподлинные CD-ключи или серийные/регистрационные/активационные номера для регистрации/активирования ПО. Генератор ключей сделать намного сложнее, чем любой другой кряк, поскольку крэкер должен не только полностью понять последовательный алгоритм генерации объектного кода, но также и быть в состоянии обновить его. За частую, создание keygen"а занимает несколько дней или даже неделю. Keygen использует те же алгоритмы, что и защита, поэтому его создание - это также результат взлома защиты, а точнее успешного исследования алгоритмов защиты с помощью отладчика либо дизассемблера. Так, можно скачать бесплатную демо (trial) версию и с помощью кейгена превратить ее в полнофункциональную, введя сгенерированный серийный номер.

Разработчики ПО пытаются предотвратить пиратство, используя активацию продукта, требующую от пользователя соединиться с интернетом или позвонить по телефонному номеру для дальнейшего использования ПО, как, например, Adobe . Новейшие кейгены также содержат метод обхода активации продукта. Также, существуют программы, которые сами генерируют специальный ключ, который нужно предоставить разработчику вместе с платой, чтобы получить ключ активации. К счастью, многие крэкеры умеют обходить такую защиту. Пример такой защиты можно увидеть в программах EzGenerator, Incomedia Website X5 Evolution и др.

Patch. Патч - самый широко распространенный тип кряков - маленькая программа, которая изменяет целевые программные файлы, чтобы удалить или изменить часть кода, который ответственен за ограничения защиты или регистрационный процесс. В результате исправление или заставляет программное обеспечение "думать", что оно регистрировано; или например, открывает недоступные в демо-вериях ключевые кнопки или закрытые функции или просто удаляет модуль защиты и т.п. Патч легко создать, сравнивая двоичный код регистрированной версии и trial-версии и исправляя различия между ними. Для регистрации программы необходимо скопировать патч в папку с установленной программой и пропатчить *.exe или *.dll-файл.

Один недостаток патчей - то, что, если взломцик случайно изменит часть кода, который необходим для нормального функционирования программы, она будет работать некорректно или не будет работать вовсе. Некоторые разработчики преднамеренно "смешивают" код защиты с кодом программы, чтобы сбить с толку крэкера; однако, опытные взломщики обходят данный вид защиты без проблем.

Противостоять патчам обычно является не очень аппаратной задачей для программных изготовителей; в большинстве случаев, простое программное обновление версии делает патч бесполезным, потому что патчи изменяют двоичный код и обычно создаются, чтобы изменить определенные части в том коде, который не будет работать, если код будет отличаться (даже немного) от оригинала. Некоторые разработчики пытаются обмануть взломщиков, выпуская "тихие обновления": у программного обеспечения есть точно та же самая версия и даже дата выпуска, но различный двоичный код. Крэкеры противостоят этому выпуском нескольких версий патча, или созданием универсального патча, который работает со всеми версиями программного выпуска.

Loader. Loader - программа, предназначенная для запуска взламываемой программы. Обычно просто обходит ограничения на количество запусков или триальное время. Обычно, лоадеры используются, чтобы взломать программное обеспечение с зашифрованными двоичными файлами.

Cracked EXE. Cracked EXE - это взломанный EXE файл, в котором нейтрализован модуль защиты. Также встречаются случаи с Cracked DLL. Скопировав с заменой такой файл в папку с программой вы получите полнофункциональную версию программы. Иногда, *.exe бывают сломаны не до конца, и программа все еще требуют ввести серийный номер, то ее можно ‘добить’, введя любой набор символов, как правило это бывает 11111-11111-11111 или aaaaa- aaaaa- aaaaa.

NoCD/NoDVD. NoCD/NoDVD является аналогом Craсked EXE.

Лекарство - более обобщенная форма всех вышеперечисленных понятий.

Хорошо, теперь мы знаем о типах crack"в и что они делают. Как правильно использовать их?

Во-первых, проверьте загруженный кряк хорошим антивирусом, например NOD32, Kaspersky. Вообще, мы рекомендуем делать это с любым исполняемым файлом, загруженным из Интернета. Помните, что крэкеры никогда не заражают свои кряки вирусами; поскольку один известный крэкер сказал: "Я не собираюсь проводить недели работы, чтобы украсть Ваш пароль ICQ или форматировать Ваш жесткий диск". Тем не менее, советуем ВСЕГДА, проверять кряки антивирусом, перед применением.

Во-вторых, читайте NFO-файл , прилагаемый к кряку! В этом файле, обычно содержится краткая инструкция по применению лекарства, также бывают случаи с ‘Readme.txt’, эти файлы всегда следует читать, перед тем, так использовать кряк. чтение NFO/Readme сохранит Вас от многих проблем позже.

Теперь Вы готовы распаковать и использовать кряк (если это - программа). Если это - патч или лоадер, Вы должны сначала закрыть взламываемую программу, затем открыть NFO-файл и следовать инструкции. Помните, что некоторые кряки не работают как предназначено; в кряке может быть ошибка, или целевая защита программы могла бы быть уже обновлена. В таких случаях Вы, возможно, должны или получить старшую версию программы, или более новую / рабочую версию крэка.

Если все прошло удачно, то, теперь, программа должна работать без ограничений!

Спасибо за чтение нашего маленького гайда; мы надеемся, что он помог Вам или по крайней мере Вам было интересно читать. Мы будем регулярно обновлять это и добавлять подробную информацию, по мере появления новой информации.

Disclaimer: всё ниженаписанное написано исключительно с просветительскими и исследовательскими целями, а также понимания механизмов защиты от взлома. Автор ни в коем случае не рекомендует использовать данную информацию для взлома программ.

В данной статье я хочу рассказать про три с половиной основных способа взлома программ на.NET, цель, которую я преследую - помочь разработчикам лучше понять механизмы защиты своих программ, т.е. выяснить наиболее очевидные угрозы и предпринять соответствующие меры (или не принимать).

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector , декомпилятор программ под.NET

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


Для начала краткий ликбез по структуре.NET программы, для тех кто не знаком с разработкой под данный Framework: весь код, написанный на любом.NET языке (C#, Visual Basic, F#, Delphi.NET) компилируется в особый Intermediate Language, называемый обычно IL или MSIL . Это что-то типа ассемблера, только весьма умного и обладающего весьма мощными инструкциями. И это, в принципе, такой же равноправный язык как и C#, только синтаксис похуже (а возможности больше). Кроме того, в программе на.NET активно используются метаданные, т.е. вся информация о классах, метода, пропертях, атрибутах и всём остальном сохранена в исполняемом файле.
Т.е. на самом деле, декомпиляция программы не очень верное понятие в данном случае. Она и так вся в открытом виде лежит, а инструменты в виде Reflector"а занимаются тем, что приводят конструкции MSIL к соответствующим конструкциям C# или другого языка, повышая читабельность кода.

Перейдём, собственно, к взлому.

0. Обнуление триала

Собственно, это даже не взлом, а полулегальный способ продлить срок использования неактивированной программы. Заключается он в том, что находится место, где хранится дата первого запуска и меняется/уничтожается. После этого всё можно пользоваться программой до следующего срока.

Посмотрим на нашего подопытного рефлектором:
Немного погуляв по коду, находим интересную строчку в конструкторе MainForm


Открываем редактор реестра, идём в HKEY_CURRENT_USER\Software\Ultrapico\Expresso и видим следующие ключи:


Удаляем их и получаем ещё 60 дней работы.

Данный вариант, конечно, прост и очевиден, но если он даже был бы сложнее - потребовалось бы чуть больше времени провести в рефлекторе, чтобы выяснить все места, куда пишется информация и зачистить их.

Совет разработчикам, которые будут пытаться записать данные в потаённое место: пишите аккуратнее, а то всё может обернуться проблемами обычным пользователям, у которых почему-то не окажется данного места, или не хватит на него прав.

1. Написание keygen"а

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

Открываем рефлектор и ищем код на предмет классов содержащих License или Registration, видим:

При вводе имени и кода по имени вычисляется некий хеш, который и сравнивается с кодом.


Данный хеш использует DES и всякие префиксы


Байты конвертятся в строку с помощью данного метода.

Теперь всё выяснилось, открываем IDE и копируем все необходимые куски кода (или сами реализовываем). Осталось только выяснить, какие значения у Prefix, Suffix и параметры реализации MyDES. Я их приводить не буду, это уже технические детали.

В результате генерируем ключ на любое имя и видим:


Бинго!

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

2. Использование враппера

Проверка корректности лицензии, достаточно хлопотное дело, и небыстрое. Поэтому разработчики программ обычно проверяют лицензию один раз, и дальше используют полученный флажок - валидна/невалидна (как вариант насколько валидна, если допускается несколько типов лицензии, отличающихся возможностями). Тут можно на этом сыграть, использовав следующий алгоритм:
  1. Указать программе, что лицензия уже проверена
  2. Указать программе, что лицензия корректна
Как это сделать? Я уже упоминал о наличии метаданных в исполняемых файлах в начале, этим и воспользуемся. Посмотрим как запускается программа и как проверяется лицензия:


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

Воспользуемся этим:
Сделаем новый проект, добавим Reference на Expresso.exe и запустим его через себя:


Смотрим, что получилось:


Ну кто бы сомневался.

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

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

Но все эти защиты приведут к тому, что злоумышленник будет использовать

3. Физический взлом программы

Тут уже всё серьёзно. Программа целиком декомилируется в MSIL а из него уже собирается обратно (помните, я писал, что MSIL это такой же язык как и C#?). Для декомпиляции нам понадобится утилита из SDK под названием ildasm , а для компиляции компилятор из.NET Framework ilasm .

Запускаем ildasm, открываем Expresso.exe и сохраняем дамп в.il файл. Находим уже рассмотренный метод IsRegistered и добавляем немножко своего кода (без меток):

Потом берём ilasm и собираем всё назад (не забыв подключить ресурсы).

Что делает данный код: устанавливает нужное имя для регистрации (не обязательно), и возвращает статус, что всё хорошо.
Чтобы было понятнее, так это выглядит в рефлекторе, в C#

Т.е. вполне очевидно, что теперь всё будет хорошо:

Немного про код в MSIL: это стековая машина, у которой нет регистров, все операции имеют вид: засунуть в стек нужное количество параметров, выполнить функцию, которая заберёт нужное количество параметров и положит результат. Ну и обратно: установить значение переменной тем, что лежит в стеке. Чтобы лучше понять работу всего этого рекомендую простой приём: пишите маленькую программу на привычном языке, компилируете, смотрите что получилось в MSILe и разбираетесь в конструкциях языка.
При этом некоторые вещи в MSIL можно сделать очень красиво, например поменять две переменные местами - 4 симпатичных строчки (на C# меньше, но некрасиво).

Чем жертвует злоумышленник: подписью программы, теперь она уже не автора, а его. В некоторых случаях это проблема, если в программе используется множество библиотек. Тогда злобному хакеру придётся разбирать их все и собирать их заново, но если он с этим справится, то у него будет «своя» версия программы подписанная его ключом.

Защиты от всего этого безобразия собственно немного: проводить обфускацию или выносить часть логики/проверки защиты в нативный код.

Заключение

Думаю я рассказал, как просто всё можно разломать на.NET, если создатель не приложил усилий для защиты своей программы. А вы уж решайте, стоит ли делать защиту и тратить на это время и ресурсы. А может просто сделать web-систему, или же бесплатную ограниченную версию. Решать разработчикам.
Выбор редакции
Полученный недавно по электронной почте деловой документ, а точнее текст этого документа (техническая сторона) и послужил своеобразным...

Поп-арт – это стилизация изображений под определённые цвета. Чтобы сделать свои фотографии в данном стиле необязательно быть гуру , так...

Большинство пользователей привыкли уже к главной странице Яндекса, но ее легко можно изменить. Например, сделать главную страницу такой:...

USB - наиболее распространённый способ подключения любых периферийных компонентов к компьютеру. Флешки, жёсткие диски, клавиатуры, мыши и...
Еще одним принципиальным (пусть и откровенно маркетинговым) отличием Xperia XZ от Xperia X Performance является возможность съемки видео...
75 360 158 2 Часто случается, что позарез необходимо посмотреть фотографии закрытого профиля VK. Как известно, любой пользователь...
Гарантированно доказать факт получения письма адресатом можно с помощью такого документа, как почтовое уведомление о вручении письма. И...
Не имеет значение на долгий срок вы приехали в Польшу или нет, вам так или иначе понадобиться пользоваться мобильной связью. Рассмотрим,...
× Close Google Chrome - это мощный бесплатный и безопасный браузер веб-страниц, который соединил простоту и ведущие новейшие...