14.04.2017

Генератор Ключей Исходник На Дельфи

Генератор ключевой последовательности, иногда называемый генератором бегущего ключа, выдает последовательность бит к1, к2, .

  1. Главная » Delphi » Свой генератор паролей (случайных символов) на.
  2. DeDe – это такой декомпилятор программ, написанных на Delphi и Builder'е. Это только с виду кажется, что hiew — беспонтовая программа.
  3. Ключ 80-512 бит, ВИ (опционально) 80-512 бит. Исходники на C и Delphi .

Взлом Борландии: изящная декомпиляция Delphi. Начинающие хакеры обычно испытывают большие трудности при взломе программ, написанных на Delphi и Builder, поскольку классические трюки, типа бряка на Get.

Window. Text. A, не работают. И чтобы не пилить серпом по яйцам, требуется учитывать особенности библиотеки VCL, которая только с виду кажется неприступной, а в действительности ломается даже проще, чем чистые Си- программы! Убедись сам! Для начала. Первая (и самая сложная) фаза атаки — разведывательная. Прежде чем наносить основной удар по врагу, необходимо локализовать защитный механизм в мегабайтах мирного программного кода, после чего выстелить битхаком, поменяв JE на JNE, либо, разобравшись с алгоритмом процедуры регистрации, написать свой собственный генератор ключей/серийных номеров.

Ударная фаза практически не зависит от специфики ломаемого приложения и отрабатывается годами, представляя собой неромантичный кропотливый труд, а вот комплекс разведывательных мероприятий гораздо более интеллектуальное занятие, требующее хитрых мозгов и, конечно же, хвойно- новогодних опилок, которые мы будем настойчиво курить. И ожесточенно долбить. По клавиатуре! Ведь Новый год — семейный праздник, и всякий уважающий себя хакер проводит его наедине с самым близким ему существом — компьютером. Для создания атмосферы праздника нужно будет зажечь свечи (не те, что от геморроя), послать всех девушек в /dev/null, зарядить бурбулятор свежей порцией man’ов и начать маньячить. Ведь юзеры ждутподарков, а лучшего подарка, чем новый кряк, для компьютерщика, пожалуй, и не придумаешь!

Короче, надо хачить. Поехали! Осваиваем De. De. De. De – это такой декомпилятор программ, написанных на Delphi и Builder. Бесплатный и очень мощный. Мы будем использовать менее процента от его возможностей.

Кто там говорит, что это расточительство? Нет, расточительство — это выбрасывать елку в мусор после праздника. Полная декомпиляция в наши задачи не входит. Наша цель — локализация дислокации штаб- квартиры защитного механизма, то есть определение адресов процедур, проверяющих введенный пользователем регистрационный номер. Вот для этого нам и нужен De. De, а все остальное можно сделать и руками.

Генератор Ключей Исходник На Дельфи

Очень хочу научиться сам, но время поджимает =( Добавлено через 37 минут Поясню: программа должна. Delphi для начинающих.

То есть дизассемблером. Классическая Мебель Модели 3Д далее. Вообще- то, в состав De.

AMPRNG rev1.1 - безопасный, простой и быстрый генератор псевдослучайных чисел (ГПСЧ). Исходники на C и Delphi с примером генерации потока. SEAL 3.0 (ключ 160 бит) - самый быстрый симметричный потоковый шифр, .

De входит интегрированный дизассемблер в духе WIN3. DASM, однако по своему качеству он значительноуступает даже халявной версии IDA, не говоря уже о полном боекомплекте тяжелой артиллерии в виде IDA Pro + Soft.

ICE. Это просто ужас какой- то! Это все равно что засунуть еловую ветку Стиву Б. Намного круче! Похоже, что Da. Fixer полностью утратил интерес к своему детищу, решив похоронить De. De на свалке истории.

Данная программа бесплатная, в лицензии вроде бы ничего не указано. NET языке (C#, Visual Basic, F#, Delphi. Написание keygen'а. Вообще, считается хорошим стилем создание первичного ключа в виде. В основном, триггер, использующий генератор, вызывается по событию . То-есть нужно сделать программу генератор,она будет генерировать. Как написать генератор паролей (How to write a password generator) - Duration: 36:49.

Полные исходные тексты версии 3. De. De обречен на медленное и мучительное вымирание. Программы, собранные новыми компиляторами от Багдада, De. De либо вообще не переваривает, либо декомпилирует неправильно (вот потому чуть позже мы рассмотрим, как ломать Борландию своими руками без посторонней помощи). Архив De. De. 3. 1.

Rx. Lib. И прежде чем De. De удастся собрать, их необходимо найти в интернете. Если же ты не собираешься заниматься доработкой De. De, то лучше скачать с www. В общем, значит, ставим мы De. De и втыкаем в его философию. А философия эта такова, что декомпиляции подвергается не сам исполняемый файл, а образ запущенного процесса в памяти, за счет чего удается раздавить упаковщики, даже не почувствовав их присутствия.

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

Однако крутые протекторы на практике встречаются не так уж часто, что очень радует. Ладно, не будем впадать в депрессию. Ведь Новый год на дворе!

И пока остальные рвут петарды, мы будем рвать себе задницу, декомпилируя интересные программы : ). Все очень просто! Берем прогу, загружаем ее в De. De, давим на кнопку «Процесс» и сидим себе в ожидании, пока De. De распотрошит дамп памяти. Лучше всего это делать под VMware, а то среди защищенных программ есть всякие твари, начиненные Ad.

Ware и прочей малварью. Честно говоря, я поубивал бы тех, кто придумал механизм идентификации типов в рантайме, благодаря которому названия классов не уничтожаются при компиляции (как в классическом Паскале и Си), а попадают непосредственно в исполняемый файл (как в Visual Basic’е). Взлом упрощается настолько, что ломать становится скучно. Никакого тебе интеллектуального поединка.

Все равно что ломом добивать попавшую в капкан мышь. Но мы же не садисты и не маньяки какие- нибудь. Оставим мышь любоваться праздничным салютом, а сами вернемся к De. De. Самая левая (можно даже сказать: радикально левая) вкладка с именами классов не содержит для нас ничего интересного. Вкладки Units Info и Forms также отправляются в /dev/null или куда поглубже. А вот вкладка Procedures — это уже то, что нужно. Открываем ее и смотрим.

Ага, здесь перечислены юниты со всеми процедурами в них содержащимися. Причем и сами юниты, и имена классов, и названия событий (events) даны в символьном виде. То есть если в программе есть диалоговое окно регистрации, то De. De покажет что- то типа: f.

Register ? Как нетрудно догадаться, b. OKClick — это и есть имя процедуры, получающей управление при нажатии на кнопку ОК и занимающейся проверкой валидности введенного юзером серийного номера.

Тут же в колонке RVA De. De показывает ее относительный виртуальный адрес, по которому функцию легко найти в файле.

А можно и не искать! Двойной щелчок по имени функции открывает окно с интегрированным дизассемблером, перемещая наш хвост непосредственно на зловредный защищенный код, что особенно полезно при анализе упакованных файлов, которые бессмысленно загружать в Иду. De. De дизассемблирует дамп памяти, и потому упаковщики идут лесом. Как вариант — можно заюзать Soft. ICE, установив по заданному адресу аппаратную точку останова (команда «BPM адрес X»). Необходимо только помнить, что RVA – это относительный виртуальный адрес, а Soft.

ICE требует абсолютный. Чтобы перевести относительный виртуальный адрес в абсолютный, достаточно загрузить файл в hiew, нажать < F8> (header), посмотреть на базовый адресзагрузки (base address) и сложить его с RVA- адресом, сообщенным De.

De. Техника ручного взлома. Ураганный артиллерийский огонь декомпилятора De. De накрывает практически весь Багдад, ставя моджахедов по стойке смирно, а всех несогласных отправляет на север, где они рубят пихтовый лес и гонят драп, чтобы у всех плановых жителей было по елке. В смысле ПО «Елки», программное обеспечение то есть : ). Недостатков у De. De как минимум два. Первый: ломать автоматом — это не в кайф и вообще не по понятиям.

Настоящие хакеры так не поступают, предпочитая во всем разбираться самостоятельно с помощью кедрового отвара из хрюнделя (в просторечии называемого hiew’ом) и топора. Второй: как уже говорилось, De. De обречен на вымирание и скоро исчезнет с жестких дисков за ненадобностью, как в свое время исчезли динозавры и мамонты. А потому во многих ситуациях ручной взлом оказывается намного предпочтительнее, а бывает так, что он становится вообще единственно возможным вариантом. Короче, кто как, а я сразу за демократию! Любовь и IDA Pro — во!

Берем, значит, Иду, переходим в начало сегмента данных (View\Open subviews\Segments или < Shift- F7> ) и прокручиваем его вниз до тех пор, пока не встретим текстовые названия элементов управления с прилегающими к ним ссылками. Дизассемблерный текст должен выглядеть так, как показано ниже. Названия методов класса формы в исполняемом файле прямым текстом.

E8. 8B word. Это не названия кнопок, это названия методов класса, отвечающих за обработку нажатий кнопок, а вот каким реально кнопкам они соответствуют, так сразу и не скажешь, поэтому придется хитрить. Перемещаем курсор на название функции, автоматически назначенное Идой на основе текстовой строки (например, «.

Загружаем файл в hiew, нажимаем < Enter> для перехода в шестнадцатеричный режим, давим < F5> (goto) и вводим адрес перехода (в данном случае «.

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

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

А основным будет Reflector, декомпилятор программ под . NET В качестве подопытного кролика я выбрал Expresso — анализатор регулярных выражений. Данная программа бесплатная, в лицензии вроде бы ничего не указано про взлом, но при этом без регистрации она будет работать всего 6.

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

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

Она и так вся в открытом виде лежит, а инструменты в виде Reflector'а занимаются тем, что приводят конструкции MSIL к соответствующим конструкциям C# или другого языка, повышая читабельность кода. Перейдём, собственно, к взлому. Обнуление триала. Собственно, это даже не взлом, а полулегальный способ продлить срок использования неактивированной программы.

Заключается он в том, что находится место, где хранится дата первого запуска и меняется/уничтожается. После этого всё можно пользоваться программой до следующего срока. Посмотрим на нашего подопытного рефлектором: Немного погуляв по коду, находим интересную строчку в конструкторе Main. Form. Открываем редактор реестра, идём в HKEY. Написание keygen'а. Самый ужасный для разработчика вариант, и самый приятный для конечного злобного пользователя.

Программа считает себя лицензионной, никаких страшных телодвижений не нужно делать. Открываем рефлектор и ищем код на предмет классов содержащих License или Registration, видим: При вводе имени и кода по имени вычисляется некий хеш, который и сравнивается с кодом. Данный хеш использует DES и всякие префиксы. Байты конвертятся в строку с помощью данного метода. Теперь всё выяснилось, открываем IDE и копируем все необходимые куски кода (или сами реализовываем). Осталось только выяснить, какие значения у Prefix, Suffix и параметры реализации My.

DES. Я их приводить не буду, это уже технические детали. В результате генерируем ключ на любое имя и видим: Бинго! Защита от кейгенов проста и очевида: использовать в каком либо виде ассиметричное шифрование.

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

Как это сделать? Я уже упоминал о наличии метаданных в исполняемых файлах в начале, этим и воспользуемся. Посмотрим как запускается программа и как проверяется лицензия: С запуском ничего интересного, а в проверке видно, что если уже программа зарегистрирована, то она считает, что всё хорошо и не делает дальнейшую работы по выяснению корректности лицензии. Воспользуемся этим: Сделаем новый проект, добавим Reference на Expresso.

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

Физический взлом программы. Тут уже всё серьёзно. Журнал Иностранный Язык В Школе. Программа целиком декомилируется в MSIL а из него уже собирается обратно (помните, я писал, что MSIL это такой же язык как и C#?). Для декомпиляции нам понадобится утилита из SDK под названием ildasm, а для компиляции компилятор из . NET Framework ilasm. Запускаем ildasm, открываем Expresso. Находим уже рассмотренный метод Is.

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

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

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

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