|
CRACKER (WIN32 by .SVD.) | Описание | Информация | CRACKER - Патчер двоичных файлов. Реализация для WIN32/GUI.
Первая из подобных программ, ещё от 1991 года, для DOS: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=5192
Описание возможностей программы CRACKER: ================================
-Работает в Windows 95 и более новых.
-Работает с форматами CRK,CRA,XCK,CRX.
-Поддерживаются комментарии в стиле Cracker Advanced, однако его опции #SIZE, #CHCKSUM, #RUN и т.д. игнорируются за явной ненадобностью.
-Поддерживается корректное использование кириллицы в кодировках DOS/WIN (можно выбрать),
-LFN для кряков и имён исправляемых программ (как и положено в WIN32).
-Смещения для патчения в файле CRK могут задаваться либо традиционно, в виде абсолютных величин,либо в виде VirtualAddress, как для WIN32 PE-файлов. Тогда перед адресом нужно указывать точку, например, вот так: .00401005: 72 EB
В версии 0.002a добавлена возможность использования RVA адресов для WIN32-PE файлов: ..0001005: 72 EB
CRK-файлы в таком формате c VA удобно получать с помощью утилиты CMP32 v.0.002a+: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3110 (Там же на странице имеется и HEM-плагин для HIEW32, генерирующий кряки. Им тоже бывает удобно пользоваться.)
Начиная с версии 0.003 VA/RVA поддерживаются также и для WIN64-PE (PE+).
- Опции PATCH_CHECK и PATCH_FORCE: .00401005: 72 ?? ;;проверка байта .00401005: ?? EB ;;безусловная замена байта
-Вызов редакторов DOS/WIN для редактирования текста кряков, не выходя из программы (пути к редакторам настраиваются).
-Корректная работа как в Win9x, так и в WinXP (на других всерьёз не тестировалась, но работать будет).
-Два размера диалогового окна - компактный для режима 640x480 и более просторный для высокого разрешения экрана.
-Все опции помимо стандартных контролов продублированы горячими клавишами, так что можно (и даже удобнее) работать без использования мыша.
Ну и т.д.
[ENG]------------------------------------------------[ENG]
Binary files patcher for WIN32.
-Works on Windows 95 and newer.
-Works with crack-files at formats CRK,CRA,XCK,CRX.
-Supported commenting at Cracker Advanced style, but his options #SIZE, #CHCKSUM, #RUN etc. ignored.
-Supported cyrillic in DOS/WIN codepage (can select),
-LFN for crack-files and patched files names.
-Patching file offsets can be given as absolute offsets, also as VirtualAddress for WIN32 PE-files. Then address must be started with dot, for example: .00401005: 72 EB
Version 0.002a supports RVA for WIN32-PE files, for example: ..0001005: 72 EB
CRK-files in this case (with VA for PE-EXE) may be maked with CMP32 v.0.002a: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3110
Since version 0.003 supported also VA/RVA for WIN64-PE (PE+).
- PATCH_CHECK & PATCH_FORCE options: .00401005: 72 ?? .00401005: ?? EB
-DOS/WIN editors calling for selected crack-file editing (can change editors paths).
-Works in Win9x and in WinXP (others not tested).
-Two sizes of main dialog window - compact for 640x480 and spacious for high resolutions.
-All options are duplicated with hot-keys, thus it is possible to work without mouse. .
| Раздел: Крякеры
 size 1 Скриншоты Операционная система: Windows 9x Требования: - Автор: .SVD. Издатель: -
Добавил: Nika (2015.11.05) | Доступные файлы - сортировка по имени и версии, времени добавления Файлов: 12. Файл | Размер | Выпуск | Версия | Язык | Качество | Загрузил | | 24.7 Кб | 2016.02.15 | 0.001a | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2016.02.15 | Для Win32-PE файлов можно указывать адреса VA в формате ".00401234:" | | 24.7 Кб | 2016.12.29 | 0.002a | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2016.12.29 | Для Win32-PE файлов можно указывать адреса VA в формате ".00401234:", а также в формате RVA, например "..0001234:" | | 24.8 Кб | 2017.11.30 | 0.002a | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2017.11.30 | Добавлена корректная обработка случая, когда в описании патча следом за двоеточием адреса сразу без пробела следует оригинальный hex-байт для патчения. Такое отсутствие пробела случается, если файл составляется вручную. Раньше выдавалось невнятное сообщение об ошибке в строке. Теперь можно и так, и этак: .00401234: 75 EB .00401234:75 EB | | 25.2 Кб | 2018.01.07 | 0.002b | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2018.01.08 | Добавлена опция "Always On Top" и отображение списка опций по Alt+Up/Down. Чтобы можно было обходиться совсем без мыши. Также добавлена опция изменения прозрачности окна, а-ля Vitrite (Эта функция будет иметь эффект только в WinXP+). | | 25.2 Кб | 2018.05.06 | 0.002b | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2018.05.06 | Добавлено корректное сворачивание в Windows TaskBar. | | 15.2 Кб | | | Русский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2020.10.08 | Описание форматов кряк-файлов, с которыми может работать CRACKER (WIN32).
Добавлено краткое описание форматов кряк-файлов, взято с http://zloba2001.fdd5-25.net/htxt_069.htm
| | 46.1 Кб | 2020.11.30 | 0.003b | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2020.12.01 | Добавлена работа с VA/RVA для WIN64 PE-EXE (PE+). Адреса RAW теперь могут быть тоже 64-битными (патч файлов размером>4Gb). Добавлена краткая документация и примеры для тестирования. | | 47.5 Кб | 2021.01.16 | 0.004d | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2020.12.24 | Добавлена опция "Prescan" (Hot key = Alt+V). По умолчанию она отключена, и CRACKER v.0.004c выглядит и работает так же точно, как его прошлая версия 0.003b. //Fixed: crash when "Prescan" turn on. | | 48 Кб | 2021.01.16 | 0.005d | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2020.12.28 | Незначительное новогоднее улучшение. Добавлена кнопка вызова REGEDIT'а для просмотра собственных сохранённых настроек. (И "горячая клавиша" <Alt+G>). //Fixed: crash when "Prescan" turn on. | | 562 Кб | 1998 | | Мультиязычный (русский) | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2021.02.04 | Коллекция реальных CRK & XCK файлов (более 2'500 штук) для тестирования CRACKER'а. | | 49.2 Кб | 2021.02.04 | 0.005e | Английский | ![[Не подделка]](http://old-dos.ru/img/nofake.png) | Nika 2021.02.04 | Исправленная версия. Пофикшены падения при чтении старинных не вполне корректно оформленных .XCK-файлов. Протестировать можно с помощью библиотеки кряков CRK&XCK_test. Не все CRK&XCK-файлы из той библиотеки будут без правок синтаксиса нормально работать с CRACKER'ом, но падений при их чтении быть не должно. Опция "Prescan" теперь по умолчанию включена. | | 50 Кб | 2024.03.09 | 0.005g | Английский | ![Качество гарантировано! [100%]](http://old-dos.ru/img/verified.png) | Nika 2024.03.05 | Добавлено использование параметров командной строки. Если задан хоть один аргумент (любой), то рабочей директорией при запуске крякера устанавливается текущая и вдобавок она же устанавливается директорией кряков. При этом эти пути при завершении крякера не сохраняются для последующих запусков. Чтобы всё же подавить это поведение, добавлен контрол "Save State". |
 |
Комментарии | #1 Автор: Nika (2016.02.15 22:59, изменений: 5, 2017.11.30 03:39) | Version 0.001a: 2016.02.15 - v 0.001a - багфикс - падал на пустых или нулевой длины .CRK-файлах. Version 0.002a: 2016.02.17 - v 0.002a - добавилась возможность указывать адреса для Win32-PE в формате RVA. 2016.02.25 - v 0.002a - Добавлена реакция на встреченный в CRK-файле символ его конца (1Ah). 2016.03.18 - v 0.002a - Усовершенствована опция "PATCH_FORCE". |
#2 Автор: Nika (2016.12.29 22:52, изменений: 2, 2016.12.29 23:00) | 2016.12.29 - v.002a Поправлена ошибка определения PE-файла, из-за которой он падал при попытке патча по виртуальному адресу в DOS-MZ запакованном файле. (Что неверно изначально). Некритичная, но неприятная ошибка. |
#3 Автор: Nika (2017.11.30 03:40, изменений: 1, 2018.01.14 20:54) | 2017.11.30 - v.0.002a Добавлена корректная обработка случая, когда в описании патча следом за двоеточием адреса сразу без пробела следует оригинальный hex-байт для патчения.
(Надо заметить, что в старом CRACKER'е 1991-го года тоже с этим не всё в порядке.) |
#4 Автор: SergeCpp (2017.11.30 13:37, изменений: 1, 2017.11.30 13:42) | All options duplicated with hot-keys, then can work without mouse. === All options are duplicated with hot-keys, thus it is possible to work without mouse.
P.S. Кстати, обратите внимание, что число всех комментариев (в списке там вверху) почти равно числу загруженных на сайт файлов (так было и годами раньше).
//
|
#5 Автор: Nika (2017.11.30 16:13, изменений: 4, 2017.12.25 08:33) | Спасибо, поправил описание
С комментариями - Да, интересное наблюдение. Не знаю, чем это объяснить.
И, наверное, это нормально. |
#6 Автор: Nika (2017.12.25 08:31, изменений: 1, 2018.01.08 00:15) | Версия 0.002b: Добавлена опция "Always On Top" и отображение списка опций по Alt+Up/Down. Чтобы можно было обходиться совсем без мыши. Также добавлена опция изменения прозрачности окна, а-ля Vitrite (Эта функция будет иметь эффект только в WinXP+). |
#8 Автор: vaaal17 (2018.01.11 15:52) | Пришел поругаться. Какого тут происходит? Всякие новшества рекламируют. Использую для crk-файлов крякер cracker.exe 91го года. Если спец высокого уровня, то используй примитивные и старые тулзы-инструменты. Это такой шик и блеск. Хайлевелы должны выделяться из толпы старыми потертыми топорами. Привыкли руки к топору - хрен отдерешь. Любой дурак может махать новым топором. Совсем раслабились? Отбились от рук? Надо исправляться. Шутка. |
#9 Автор: Nika (2018.01.14 20:51, изменений: 6, 2018.07.09 08:08) | А он и есть потёртый. Хотя и ещё не старый. Тоже шутка.
А серьёзно - делали бы сами такие новшества - только приветствуется.
Под Win x64 по-любому все старые WIN16 и DOS-тулзы пойдут на полку. Потому и допиливать что-то DOS'овское просто не имело смысла. Да и опции полезные добавлены, касаемо PE-формата. Длинные имена файлов тоже, LFN. От этого никуда не денешься. Как и от кодировки win1251, с возможностью пользоваться и dos866. Плюс опция безусловного патчения - т.н. PATCH_FORCE - тоже нужная. Заодно уже и PATCH_CHECK с PATCH_ALL. Регулярно пользуюсь, - удобно, когда в одном файле CRK описано множество кряков. В свежей версии добавлены "Always on top" и прозрачность. Удобно. И при всём при этом нормальная работоспособность в Win9x с экраном 640x480. Дальше. Текст самих кряков видеть нужно? - Нужно. Это тоже есть. Иметь возможность быстро их поредактировать надо? - Да. Есть. Что из перечисленного лишнее?
В общем в этой программе всё по делу и только по необходимости, без всяких там выгибонов. А по ощущениям при работе она очень сходна с той, старой, 1991-го года. Специально так и делалось. - Преемственность. Мне нравится.
На днях вот наткнулся на свой же архив с кряком 2010-го года, где адреса были ещё абсолютные, стандартно, - и помучился искать те места, чтобы распатчить PE-софтину, так как после менял в ней размер заголовка и всё поплыло. С новым крякером такой проблемы не будет, если использовать VA.
CRK-файлы в таком формате c VA удобно получать с помощью утилиты CMP32 v.0.002a: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3110 (Там же на странице имеется и HEM-плагин для HIEW32, генерирующий кряки. Им тоже бывает удобно пользоваться.)
Удобно вызывать CRACKER как из командной строки оболочки вроде FAR'а так и настроить эксплорер на вызов CRACKER'а по тычку на файле CRK. (тогда подставляется текущий каталог в качестве рабочего, "WRK"), А каталог кряков ("CRK") можно быстро сделать текущим с помощью <Alt+F3>. Если же запускать CRACKER тычком по его иконке, тогда и WRK и CRK каталоги слизываются сохранённые в реестре (последние использованные). Так сделано, чтобы приходилось меньше шарить в виндовом диалоге GetOpenFileName. Оно практически и не приходится, - хотя такая возможность тоже имеется, стандартно.
Вообще, все сохранения опций сделаны прозрачно для пользователя - что сейчас настроено, то и сохраняется при завершении для следующего запуска.
В общем, переписал, считай, заголовок страницы. А зачем? - Читать же надо описание, прежде чем |
#10 Автор: Nika (2020.11.30 20:22) | Добавлена версия 0.003b с поддержкой WIN64 PE-EXE (PE+). |
#11 Автор: Nika (2020.12.24 01:01) | Добавлена версия 0.004b с поддержкой опции "Prescan". При включении этой опции в списке кряков отображается состояние патченности файла(ов) этим кряком. |
#12 Автор: Nika (2020.12.24 02:29) | Вообще, последние изменения, касающиеся поддержки PE+ и Prescan'а потребовали существенно перетрясти весь код патчера. Так что багов пугаться не надо, они вполне ожидаемы. |
#13 Автор: Nika (2021.01.14 12:06, изменений: 2, 2021.01.16 19:25) | Вот оно. Перезалиты исправленнве версии 0.004с и 0.005с. Поправлен баг включения опции "Prescan" когда нет загруженных CRK-файлов.
|
#14 Автор: Nika (2021.01.16 19:26, изменений: 2, 2024.03.10 12:16) | Перезалиты исправленные версии 0.004d и 0.005d. Поправлен баг включения опции "Prescan" когда загруженный CRK-файл содержит синтаксические ошибки.
|
#15 Автор: Nika (2021.02.04 18:33, изменений: 1, 2021.02.05 10:13) | Версия 0.005e Исправлены падения при чтении не вполне корректно оформленных .XCK-файлов. Для совместимости со старыми кривыми .XCK-файлами добавлено комментирование строки с помощью символа '|' в её начале. Исправлена пара-тройка стрёмных мест, где могли бы проявиться баги.
Кстати, вот пример программки, которую не "раздувает" в разы с выходом каждой новой версии. Программа не коммерческая, удивлять никого не стремится. Добавления и правки вносятся только по мере реальной необходимости и осторожно. |
#16 Автор: Валентин (2023.03.06 02:17) | Ну очень заумно реализовано. Написал пару строк текста, скопировал файл и заменил один символ во втором файле FC /B сделал my.crk И не смог пропатчить первый файл :-(((
|
#17 Автор: Nika (2023.03.20 23:00, изменений: 5, 2023.03.20 23:23) | По команде "FC /B orig_file new_file> my.crk" вы не получите CRK-файл, готовый к использованию с CRACKER'ом. К файлу MY.CRK нужно в текстовом редакторе добавить строку заголовка. Почитайте о стандартном формате CRK-файлов в документации.
Более-менее пригодный файл можно получить без правок не с помощью FC, а с помощью утилиты CMP32 v.0.003c (с ключом "/h"): http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3110
При создании кряк-файла используется ключ "/h" для создания строки заголовка, последующие записи в файл добавляются уже без этого ключа.
Например: C> cmp32 file_orig file_new /h >000.crk C> cmp32 file_orig file_new >>000.crk C> cmp32 file_orig file_new >>000.crk
Но всё равно полученный файл тогда придётся править ручками - названия кряков внутри одного CRK-файла должны различаться.
|
#18 Автор: Nika (2023.03.20 23:22, изменений: 2, 2023.03.20 23:25) | Был замысел добавить в крякер неявную возможность работать только с одним файлом CRK, прикопированным к нему в качестве оверлея. Для создания патчера только одной конкретной софтины. Причём если такой оверлей при запуске обнаруживается, то на экране крякера уже не будет элементов диалога по выбору целевого файла и кряк-файла. Этот прикопированный кряк-файл мог бы быть как в текстовом формате, так и в двоичном. Понадобилось бы вводить дополнительно поддержку формата CRB, который тоже уже давно придуман. Ну и добавлять опцию в утилиту cmp32, для генерации этих кряков в виде CRB. Но вот уж это сильно бы всё усложнило, да и не особо оно бывает нужно.
Ну, это уже, наверное, никогда не сделаю Останется в том виде, как сейчас.
|
#19 Автор: lоnghorn_gnu (2023.08.01 09:07) | А если останется "AS IS", то может исходники откроешь? |
#20 Автор: longhorn_gnu (2023.08.04 15:32) | А если останется "AS IS", то может исходники откроешь? |
#21 Автор: Невася (2023.08.12 10:31) | А программа комстроки понимает? Кракстудия и прочее досовское например вполне понимало, а тут только рабочую директорию видит, а не сам файл. Его приходится вручную набивать в строку crk |
#22 Автор: Nika (2023.08.12 14:38, изменений: 7, 2023.08.26 21:18) | Параметры командной строки программа никакие не принимает.
Что касается команд в самом файле CRK - в описании написано -- >> -Поддерживаются комментарии в стиле Cracker Advanced, >> однако его опции #SIZE, #CHCKSUM, #RUN и т.д. игнорируются за явной ненадобностью.
Что до "проблемы", то вручную ничего набивать не нужно. Нужно только выбрать каталог, где лежит исправляемый файл.
И то, если крякер запустить из того каталога, где тот файл лежит (задать в Эксплорере ассоциацию с файлами *.CRK.Тогда можно по ним тыцкать) - и где рядом с ним лежит его файл .CRK, то рабочий каталог (WRK) сразу подставляется в "WRK", а каталог кряка можно тут же скопировать из "WRK" в "CRK" нажатием Alt+F3.
Имя исправляемого файла программа нигде не отображает -- оно должно быть задано в самом файле патча (*.CRK)
А дальше программа или найдёт этот файл, или не найдёт. Если не найдёт, то сообщит.
Если файл(ы) найдены, то тут же значками отобразится текущее состояние запатченности/распатченности этого файла(лов). (Эта опция в последних версиях включена по умолчанию).
В файле патча (*.CRK) может упоминаться далеко не один файл для исправления. И они могут быть описаны с применением каталогов (полный путь от текущего "WRK").
И что теперь? - Допустим, в патче описаны исправления для 154 файлов. (Сто пятдесят четыре файла патчатся гамузом). Будете каждый файл по запросу указывать тыцканием? -- Абсурд полный.
Так что руками ничего забивать не нужно. Иначе это бы не имело никакого смысла. |
#23 Автор: Multik (2024.01.11 12:28) | Сейчас уже не помню какой ник у парня был на Спектруме, по имени Alex (вроде Лёха), а ник может Killer, а может даже SVD, но писал он для меня программулинку с чёрным фоном была она. Сравнение 3-х или 4-х файлов (по принципу fc) В окошках можно было задавать цифры для поиска, например я использовал эту программу чтобы в сейвах на NES искать жизни. Сохраняем игру: Сейв 1 - 5 жизней Сейв 2 - 4 жизни Сейв 3 - 3 жизни Выбираем программой три этих сейва, делаем сравнение, получаем crk файл. Этой же программой ищем в сейвах данные, как находит показывает адрес, изменяем значение на 9 жизней, и сохраняем. Очень удобная штука была, может кто из программеров нынче такое накодит, было бы не плохо. |
#24 Автор: Nika (2024.01.12 14:26, изменений: 3, 2024.01.12 14:30) | Здесь на сайте есть примитивный аналог такого компаратора, COMP4, ещё и с исходными текстами на Си.
http://old-dos.ru/index.php?page=files&mode=files&do=show&id=5205
В такой постановке задачи генерировать кряк-файл смысла нет, поскольку патчить надо не изменяющиеся байты, а код, который их изменяет. А его ещё нужно найти. |
#25 Автор: Verno (2024.08.16 17:03, изменений: 1, 2024.08.16 17:12) | Спасибо большое за программу! Зарегистрировался на портале, чтобы написать.
Если автор прочитает и обратная связь принимается, рассмотрите, пожалуйста, предложение расширить функционал двумя возможностостями.
1. Возможность задавать диапазон адресов. Бывает, что нужно пропатчить большой объём последовательных данных совершенно одинаково. Набирать каждый такой адрес в HEX неудобно по нескольким причинам, но, главное, это затемняет смысл патча, если его анализировать.
Например так (здесь символ ~ после адреса указывает, что задан диапазон адресов для патча):
00001000~00008000: ?? 00
2. Возможность не указывать название файла прямо (если оно может быть любым или меняется динамически — это очень часто бывает в сэйвах или когда много бэкапов одного файла под разными именами), чтобы программа сама предложила пользователю выбрать, какой именно файл править.
Например, три случая:
?.sav ; расширение постоянно, меняется имя 00001000~00008000: ?? 00
gamesave.? ; имя постоянно, меняется расширение 00001000~00008000: ?? 00
?.? ; имя с расширением могут быть любыми 00001000~00008000: ?? 00
Может быть, задействовать и символ * сразу *.sav ; пропатчить одинаково все файлы *.sav в папке gamesave.* ; пропатчить одинаково все файлы gamesave.* в папке
Вдруг что-то из этого покажется действительно рациональным для реализации. Спасибо!
Заметил ещё, что, если в конце пути в поле CRK не поставлен слэш \, то будет выдавать ошибку чтения файла crk, хотя все файлы в папке прочитаны и выведены другой процедурой, где этот слэш не важен. Понять причину ошибки пользователю не просто: файлы показаны, а прочитать их программа не может. Видимо, нет проверки пути, есть в конце символ \ или нет. Предполагается, что пользователь всегда выбирает путь в самой программе, а не copy/paste его в поле, когда слэша может не быть. |
#26 Автор: Nika (2024.08.20 23:40, изменений: 3, 2024.11.19 01:04) | Из предложенного только по замечанию со слешем получится что-то сделать, и то не точно. Действительно, проверки на присутствие слеша в конце строки не выполняются, - а должны бы. Ошибки или некорректности в этом нет, по определению имя каталога отличается от имени файла наличием слэша в его конце. То есть в таком формате имя каталога и ожидается при ручном его вводе. Просто сам никогда вручную имена каталогов не вбиваю и не копирую их туда, нет такой необходимости. Но сделать такое можно, оно не навредит.
Диапазоны, а ещё более "дикие карты" неимоверно усложнят проверки корректности патча, корректности распатчивания и работу крайне нужной функции "Prescan" (ключевые и важные функции крякера), что приведёт к ошибкам или ситуации, когда трудно проверить, ошибка ли это.
Дичь уже была введена с возможностью использования символа "?" для безусловного патча - и это привело к необратимости таких патчей, что неудобно и мною лично практически никогда не используется.
Сама идеология программ-крякеров основана на патчении конкретных байтов, этим и симпатична и полезна.
Единственное серьёзное улучшение, реально которое нужно было бы сделать, это обратить последовательность распатчивания, чтобы корректно работало распатчивание по нескольким перекрывающимся патчам. Но это сильно сложно, и вряд ли того стОит - сам практически не применяю перекрывающиеся патчи, а если попадаются, то распатчиваю по ним вручную. соблюдая обратную последовательность.
В дистрибутиве в каталоге с примерами патчей есть кряк-файлы с перекрывающимися патчами, чтобы можно было проверить, как это работает.
Так что по факту разработка программы прекращена, но не за её ненадобностью, а по достижении полноты желаемого функционала и недостатка времени и возможностей для всяких изощрённых выдумок.
Любые правки, даже самые мелкие, сейчас приходится делать крайне осмотрительно, поскольку каждая новая версия может запросто оказаться последней, и не хотелось бы, чтобы она вышла кривой. Пока вроде бы всё в порядке. Полёт нормальный
|
| |
|