Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Пример написания Крака на паскале

Delphi , Программа и Интерфейс , Исследование программ

Пример написания Крака на паскале

Оформил: DeeCo
Автор: http://www.cracklab.narod.ru

Автор: vallkor (vallkor@chat.ru)

Многие не верят в возможность написания нормального крака на паскале. Я решил разбить этот стереотип в этой статье.
Итак, я привожу пример такого крака для Opera 3.5 и коментарии ко всем строкам:
uses Crt;
const
  A: array[1..1] of record
    {таблица может состоять из сколько угодно элементов - один эл-т таблицы - один изменяемый байт}
    A: Longint;
    B: Byte;
  end =
  ((A: $0005BF31; B: $EB));
    {здесь А - адрес изменяемого байта, В - новое значение этого байта}

var
  Ch: Char;
  I: Byte;
  F: file;
  FN: file of Byte;
  Size: Longint;

begin
  clrscr;
  Writeln('Hello!'); {здесь идёт вывод информации о краке}
  Writeln(#3, ' This is an Opera 3.5 Crack! ', #3);
    {рекомендовано использовать всякие приколы}
  Writeln(' It`s REmove the REmember window in the start '); {шутки}
  Writeln(' And Trial stay in forever!'); {прибаутки}
  Writeln(' Cracked by vallkor'); {и имя создателя}
  writeln(' Cracking Opera.exe .......');
    {обязательно укажем имя кракаемого файла}
  Assign(F, 'opera.EXE'); {открываем}
{$I-}Reset(F, 1);
{$I+}
  if IOResult <> 0 then {если файла такого нет}
  begin
    TextColor(4);
    Writeln(' ');
    Writeln(' File not found !!!'); {выводим сообщение об ошибке}
    Writeln(' This file must be in the same folder with target file !!!', #7);
      {и то, что крак должен быть в этой дирректории}
    Halt(1); {выходим из программы}
  end;
  Size := FileSize(f); {получаем размер кракаемого файла}
  if Size <> 1228800 then {если он не равен нужному}
  begin {то}
    TextColor(4);
    Writeln(' ');
    Writeln(' Error !!!'); {выводим сообщение об ошибке}
    Writeln(' Filesize Mismatch', #7);
    Halt(1);
  end;
  for I := 1 to 1 do {проходим по таблице}
  begin
    Seek(F, A[I].A); {и патчим}
    Ch := Char(A[I].B); {все}
    Blockwrite(F, Ch, 1); {байтики}
  end;
  TextColor(9);
  Writeln(' ');
  Writeln(' Everything went OK. Enjoy !!!', #7);
    {если всё прошло успешно - сообщение об этом}
end. {конец}
На таком простом примере я показал, что даже на паскале (народном языке) возможно написание нормального крака, без необходимости изучения других языков.

ВСЁ!

Here's the translation of the text into Russian:

Паскальский крак! До начала анализа кода, хочу сказать, что написание крака для Opera 3.5 - это quite интересный проект. Автор сделал отличную работу по объяснению каждой строки кода и добавлению комментариев в программе.

Теперь давайте разбираться с кодом:

Инициализация

uses Crt;

Эта строка импортирует модуль Crt, который предоставляет функции для ввода/вывода в консоли.

Константы

const
  A: array[1..1] of record
      {таблица может состоять из любого количества элементов - один элемент таблицы - изменяемый байт}
    A: Longint;
    B: Byte;
  end = ((A: $0005BF31; B: $EB));

Константа A - это массив с одним элементом, который является записью с двумя полями: A (длинное целое число) и B (байт). Значение A равно $0005BF31, а значение B равно $EB. Это кажется каким-то магическим числом или смещением.

Переменные

var
  Ch: Char;
  I: Byte;
  F: file;
  FN: file of Byte;
  Size: Longint;

В этих переменных объявлены:

  • Ch - символьная переменная
  • I - целочисленная переменная (байтовая)
  • F - файловая переменная
  • FN - файловая переменная, которая может читать/записывать байты
  • Size - длинное целое число

Основной программный код

begin
  clrscr;   // очистка экрана
  Writeln('Hello!');   // вывод "Hello!" в консоль
  ...

Основная программа начинается с очистки экрана и вывода приветственного сообщения.

Процесс крака

Assign(F, 'opera.EXE');   // открытие файла
Reset(F, 1);   // сброс указателя на файл
...
if IOResult <> 0 then   // проверка успешности открытия файла
begin
  TextColor(4);
  Writeln('File not found !!!');
  Writeln('This file must be in the same folder with target file !!!', #7);
  Halt(1);   // остановка программы
end;

Программа открывает файл opera.EXE и проверяет, был ли он открыт успешно. Если нет, она выводит сообщение об ошибке и останавливается.

Проверка размера файла

Size := FileSize(F);   // получение размера файла
if Size <> 1228800 then   // проверка соответствия размера файла
begin
  TextColor(4);
  Writeln('Error !!!');
  Writeln('Filesize Mismatch', #7);
  Halt(1);
end;

Программа проверяет, равен ли размер файла 1228800. Если нет, она выводит сообщение об ошибке и останавливается.

Процесс изменения

for I := 1 to 1 do   // перебор таблицы
begin
  Seek(F, A[I].A);   // поиск в файле
  Ch := Char(A[I].B);   // чтение байта из файла
  Blockwrite(F, Ch, 1);   // запись байта в файл
end;

Программа перебирает таблицу и ищет в файле. Затем она читает байт из файла и записывает его обратно в файл.

Сообщение о успехе

TextColor(9);
Writeln('Everything went OK. Enjoy !!!', #7);

Если процесс изменения был успешен, программа выводит сообщение о успехе.

В целом, это Паскальский крак, который предназначен для изменения конкретного байта в файле opera.EXE, что позволяет обойти какую-то защиту или ограничение. Автор сделал отличную работу по комментированию каждой строки кода и объяснению каждого раздела.

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

Пример статьи: Многие не верят в возможность написания нормального крака на паскале, но автор показывает пример такого крака для Opera 3.5 и комментарии ко всем строкам.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Исследование программ ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 09:09:25/0.014613151550293/1