Процесс декомпиляции файлов с расширением exe

Содержание:

Faster — многофункциональный ускоритель работы программиста 1С и других языков программирования Промо

Программа Faster 9.4 позволяет ускорить процесс работы программиста
(работает в любом текстовом редакторе).
Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов.
Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код.
Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке.
Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования.
Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода.
Настройка любых шорткатов под себя с помощью скриптов.
Никаких установок и лицензий, все бесплатно.

1 стартмани

Способы декомпиляции EXE-файлов

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

Способ 1: VB Decompiler

Первым рассмотрим VB Decompiler, который позволяет декомпилировть программы, написанные на Visual Basic 5.0 и 6.0.

  1. Нажмите «Файл» и выберите пункт «Открыть программу» (Ctrl+O).

Найдите и откройте программу.

Декомпиляция должна сразу запуститься. Если этого не произошло, нажмите кнопку «Старт».

По завершении внизу окна появится слово «Декомпилировано». В левой части расположено дерево объектов, а в центральной можно просматривать код.

При необходимости, сохраните декомпилированные элементы. Для этого нажмите «Файл» и выберите подходящий вариант, например, «Сохранить декомпилированный проект», чтобы извлечь все объекты в папку на диске.

Способ 2: ReFox

В плане декомпиляции программ, скомпилированных через Visual FoxPro и FoxBASE+, неплохо себя зарекомендовал ReFox.

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

Откройте контекстное меню и выберите пункт «Decompile».

Откроется окно, где нужно указать папку для сохранения декомпилированных файлов. После нажмите «ОК».

По окончании появится такое сообщение:

Можно просмотреть результат в указанной папке.

Способ 3: DeDe

А DeDe будет полезна для декомпиляции программ на Delphi.

  1. Нажмите кнопку «Добавление файла».

Найдите файл EXE и откройте его.

Для запуска декомпиляции нажмите кнопку «Процесс».

При успешном завершении процедуры появится такое сообщение:

В отдельные вкладки будет выведена информация о классах, объектах, формах и процедурах.

Для сохранения всех этих данных откройте вкладку «Project», проставьте галочки рядом с типами объектов, которые нужно сохранить, выберите папку и нажмите «Сделать файлы».

Способ 4: EMS Source Rescuer

Декомпилятор EMS Source Rescuer позволяет работать с EXE-файлами, скомпилированными при помощи Delphi и C++ Builder.

  1. В блоке «Executable File» нужно указать нужную программу.
  2. В «Project name» пропишите имя проекта и нажмите «Next».

Выберите необходимые объекты, укажите язык программирования и нажмите «Next».

В следующем окне исходный код доступен в режиме предпросмотра. Осталось выбрать выходную папку и нажать кнопку «Save».

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Как декомпилировать EXE-файл

К сожалению, Windows не предусматривает в своем инструментарии встроенных инструментов, позволяющих выполнить декомпиляцию, поэтому придется пользоваться только сторонним ПО. Такое ПО может быть полезно как пользователям, которые просто желают получше изучить исходный код той или иной программы, так и разработчикам.

Вариант 1: VB Decompiler

Корректно способен провести декомпиляцию EXE-файлов, написанных и скомпилированных через Visual Basic 5.0 и 6.0. Это самая популярная среда разработки программ для Windows. Сама программа полностью бесплатна и занимает на диске всего несколько мегабайт.

  1. В верхней части интерфейса кликните по пункту «Файл» и выберите из контекстного меню вариант «Открыть программу». Вместо этого можно воспользоваться сочетанием клавиш Ctrl+O.
  2. В «Проводнике» отыщите исполняемый файл той программы, декомпиляцию которой вы собираетесь провести. Выделите его и нажмите на кнопку «Открыть», чтобы выполнить загрузку файла в рабочую среду.
  3. Путь до нужного EXE-файла отобразится в строке «Файл». Нажмите на кнопку «Старт», чтобы запустить процедуру декомпиляции.
  4. Программа не оповещает о завершении процедуры декомпиляции. О завершении таковой будет свидетельствовать только надпись «Декомпилировано» в нижней левой части окна.
  5. Для сохранения декомпилированного файла нажмите по кнопке «Файл» в верхнем меню и выберите из выпадающего списка вариант «Сохранить декомпилированный проект». Можете просто воспользоваться сочетанием клавиш Ctrl+S.

Вариант 2: EMS Source Rescuer

Данный декомпилятор корректно работает с файлами, скомпилированными с помощью Delphi и C++ Builder. Работа с другими компиляторами возможна, но официально не поддерживается, поэтому есть риски. Программа распространяется полностью бесплатно.

  1. Запустите EMS Source Rescuer. Его интерфейс представлен в качестве блоков с шагами. На первом шаге вам требуется указать путь до проекта, который будет декомпилирован. Это можно сделать, нажав на кнопку папки в строке «Executable File».
  2. Выберите нужный EXE-файл в окошке «Проводника».
  3. В поле «Project name» пропишите имя декомпилируемого проекта и нажмите «Next».
  4. На следующем шаге потребуется выбрать язык программирования, используемый в выбранном проекте. Это делается в блоке «Output style». Поставив маркер на нужном месте нажмите «Next».
  5. Вы перейдете сразу на 3-й шаг. Здесь будет показан исходный код проекта. Ниже выберите папку, в которую будут сохранены исходные файлы, извлеченные из EXE-файла, и нажмите «Save».

Вариант 3: ReFox

ReFox отлично зарекомендовал себя в декомпиляции проектов, созданных через Visual FoxPro и FoxBASE+. Сама программа носит условно-бесплатный характер использования. Есть демонстрационная версия, использование которой бесплатно, но только определенный период времени.

Инструкция по использованию данной программы выглядит так:

  1. В левую часть интерфейса программы уже встроен обозреватель файлов. Воспользуйтесь им, чтобы найти и открыть нужный EXE-файл. В правой части отображается техническая информация о выбранном элементе.
  2. Кликните правой кнопкой мыши по выбранному файлу. В контекстном меню выберите пункт «Decompile».
  3. Появится окошко, в котором будет указана директория декомпилируемого файла. Если там все верно, то нажмите «Ок» для продолжения операции.
  4. По завершении процесса вы получите соответствующее сообщение. Нажмите там «Ок». Результат можно посмотреть в той папке, которую вы указали во 2 шаге.

Вариант 4: DeDe

Эта программа для декомпиляции не так функциональна и поддерживает только одни язык – Delphi.

  1. Около самого верхнего поля нажмите на кнопку в виде раскрытой папки. Она отвечает за добавление папки.
  2. Выберите в «Проводнике» нужный EXE-файл и нажмите «Открыть».
  3. Чтобы запустить процесс декомпиляции, нажмите на кнопку «Процесс», которая расположена около строки указания проекта.
  4. При успешном завершении вы получите соответствующее сообщение. Нажмите «Ок» или закройте его.
  5. Теперь вам осталось сохранить результаты декомпилирования на компьютере. Переключитесь на вкладку «Project».
  6. Рекомендуется отметить галочками все пункты в блоке «Сохранить Делфи Проект». В строке «Папка проекта» укажите директорию, куда будет выполнено сохранение. Нажмите на кнопку «Сделать файлы», чтобы завершить сохранение.

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

Related Repositories

  • retdec-idaplugin — Embeds RetDec into IDA (Interactive Disassembler) and makes its use much easier.
  • retdec-r2plugin — Embeds RetDec into Radare2 and makes its use much easier.
  • retdec-regression-tests-framework — A framework for writing and running regression tests for RetDec and related tools. This is a must if you plan to contribute to the RetDec project.
  • retdec-regression-tests — A suite of regression tests for RetDec and related tools.
  • retdec-build-system-tests — A suite of tests for RetDec’s build system. This can also serve as a collection of demos on how to use RetDec libraries.
  • vim-syntax-retdecdsm — Vim syntax-highlighting file for the output from the RetDec’s disassembler ( files).

Licenses + Acknowledgments

Application

FFDec Application is licensed with GNU GPL v3, see the license.txt.
It uses modified code of these libraries:

And links also these libraries:

  • Java Native Access — JNA (Registry association, Process memory reading) — LGPL
  • javactivex (Flash Player ActiveX embedding) — LGPLv3
  • flashdebugger library (Debugging ActionScript) — LGPLv3
  • FFDec Library (LGPLv3) — see below

Library

FFDec Library is licensed with GNU LGPL v3, see license.txt for details.
It uses modified code of these libraries:

  • UAB «DKD» NellyMoser ASAO codec (Decoding Nelly Moser sound format) — LGPL

And links also these libraries:

Authors

The decompiler was originally written by Jindra Petřík also known as JPEXS.
The application was made in Czech republic.

Developers

  • JPEXS — leader, development of the decompiler, website main admin, github account admin, organization
  • honfika — development of the decompiler
  • Paolo Cancedda — former developer
  • …other pushers on GitHub or Google Code

Translators

  • Jaume Badiella Aguilera — catalan translation
  • Capasha — swedish translation
  • 王晨旭 (Chenxu Wang) — chinese translation
  • focus — russian translation
  • honfika — hungarian translation
  • kalip — italian translation
  • Krock — german translation
  • Laurent LOUVET — french translation
  • MaGiC — portugese translation
  • martinkoza — polish translation
  • Osman ÖZ — turkish translation
  • pepka — ukrainian and dutch translation
  • poxyran — spanish translation
  • realmaster42 — portugese-brasil translation
  • Rtsjx — chinese translation
  • koiru — japanese translation

9 best Java Decompiler to be used

There are many best Java Decompiler which provide offline services. You can easily download these applications from the internet in order to get the work done. Here are some of the best java Decompiler on the internet today those are friendly to work with and have a good user interface.

1) JD Project

JD Project is one of the most frequently used best java decompiler offline. It is developed to decompile Java 5 and beyond, which currently goes up to Java 8. It is available for Windows, Mac, and Linux and is the best decompiler for eclipse and IntelliJ as it provides a plugin for each platform separately. This proves to be extremely useful during the debugging process.
It uses the JD- GUI. This is an easy to use and an interactive graphical interface.

2) Cavaj Java Decompiler

This is another great tool for converting bytecodes to Java source code. If you are a Windows user, then Cavaj is the best option available for you out there. It is simple to use and decompiles any given Java class file. One major drawback for this application is that it lacks Syntax Highlighting. It is also not available for Mac and Linux Operating softwares. In short, this is a standalone Windows application that converts bytecodes into class code.

3) DJ Java Decompiler

This is yet another standalone Windows Application. It is available for Windows XP, Windows 2003, Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10. It can easily decompile complex Java applets and binaries to produce accurate source code. There are drag and drop features for smooth working, so you can decompile .class files on your computer’s hard disk or on a network drive that you have connected.

4) JBVD

JBVD stands for Java Bytecode Viewer and Decompiler. It is based on the Javassist open source library. Like the others, this application too is available only for Windows users. It is one of the most powerful bytecode viewer and decompiler. Of course, this program needs Java to be installed on your computer to work JBVD can thus be used both, as a Java viewer and a decompiler.

5) AndroChef Java Decompiler

If you are on the lookout for a Java decompiler to view and analyze bytecode then AndroChef should be your preferred option. It is capable of easily converting Java .class files and applets into Java source code. It is simple and easy to use, however it is only available on the Windows Operating System. With Androchef, you can decompile apk. dex, jar, and java class files.

6) Procyon

It is one of the most popular open source Java decompiler. One of its most amazing features is the ability to deal with Java 8. Procyon can handle all those features which were launched with Java 5 to the latest version to Java. Due to this, Procyon can be used as an alternative where other java versions fail. It can also easily deal with other features such as local classes, annotations, Enum declarations, and Lamdas in Java 8.

7) CFR Decompiler

This is another such decompiler that was developed to deal with the latest features and updates in Java programming. It can easily decompile the latest Java features such as Lamdas and Switch Statement. This means if you are using Java 8, you can be at peace with yourself. The only downside here is that this decompiler is not an open source program. However, it has a command line tool that makes the decompiling process faster and even more efficient.

8) FernFlower

Apart from the decompilers mentioned above, the ones mentioned here are still in nascent stages and are under development. Fernflower is one of those. Fren is an analytical decompiler for Java and has recently been made open sourced. The software renames all the obfuscated symbols and puts them into a JAR file in the end. FrenFlower is used to decompile .class, zip and JAR file extensions.

9) Krakatau

It is an interesting decompiler as it has been written in Python. It is still in the development stage. However, it contains three tools: a decompiler and disassembler for Java class files and an assembler to create class files. However, one major drawback here is that it does not support all Java 8 features.

Conclusion- Which is best Java Decompiler?

If you are looking out for a best Java decompiler then you can try out any of the ones mentioned above. Just download them and try them out. You could share your experience in the comments below and even if you are aware of other amazing decompilers, then you could share those two. I would love to add it to the above list. You can also check out detailed tools section for more content.

Java Decompiler Software
$0

5

Summary

Check these 9 best offline Java decompiler which help you manage the codes and convert it as required. You can download these top Java decompilers and install it on your system.

Как пользоваться

Как его использовать на примере ELMA BPM и C#.

  1. Запустите IlSpy.exe (находится в скачанном архиве, предварительно распаковать)
  2. Скопируйте файлы с расширением .dll в отдельную папку
    • файлы .dll серверных частей модулей Elma BPM лежат в папке <Elma>/Web/bin
    • файлы .dll веб частей модулей Elma BPM лежат в папке <Elma>/Web/Modules/<ModuleName>/bin

      в папке веб модуля есть 90% исходного кода в виде файлов .cs

  3. Перенесите содержимое папки в левую часть окна IlSpy
  4. Результат — мы имеем декомпилированный код модулей.

Инструкция:

  1. Вспоминаем где используется нужный нам механизм (на примере texttemplate)
  2. Определяем область поиска и ищем по смыслу нужные примеры в исходниках.

*Внутри Elma BPM два генератора текста — в «базовом» не работают функции для шаблонов. На скриншоте полноценный вариант

Точки расширения системы

— интерфейсы при реализации которых добавляется новый функционал.

Например как добавить новую функцию в генератор Elma BPM — вот статья, а как:

  • Добавить новую функцию в EQL ( например вам нужна функция которая вернет начало текущего года — CurrentYear())
  • Выполнить действие по событию переназначения задачи (например при переназначении процессной задачи (изменении исполнителя) — нужно изменить поле в сущности)

И так далее ( а таких точек расширения десятки а то и сотни) — этого в документации нет.

Служебные механизмы

Следующее с чем сталкиваются это:

— «Elma как то генерирует текст по шаблону — мне нужно то же самое!» (нет не по файлу, именно тексту)

как это сделать база знаний не ответит, за то ответит исходный код:

Особенности работы с базой данных

Изучите как устроены модули, из полезного я так нашел (точнее мне оно очень нужно было):

  • Как правильно создавать и вызвать хранимые процедуры в ELMA BPM
  • Как создавать индексы в базе данных
  • Как вызвать sql скрипт из кода

— последние два пункта — домашнее задание) 

Как используются паттерны в Elma BPM

Иногда приходится разобраться как правильно применить паттерны (также как производитель)

  • Паттерн Unit Of Work
  • Как вызвать отдельный поток (попробуйте найти сами)
  • Как создать пул потоков и воспользоваться сервисами ELMA BPM  (используется в Workflow для исполнения элементов бизнес процесса)
  • Как работает IoC в Elma BPM (используется Autofac, инверсия управления и внедрение зависимостей)

Доработать функционал веб части

Тут даже может не потребоваться декомпилятор, исходный код открыт.

Типичные примеры:

  • Нужен универсальный модуль массового редактирования полей :
  • Нужен универсальный модуль импорта :

Для этого вам нужно

  1. Открыть исходный код веб части модуля Common (работа со справочниками)
  2. Изучить то как устроен контроллер (это из MVC, обычный класс с методами) Catalogs
  3. Скопировать в свой модуль, добавить зависимости
  4. Добавить функционал который требуется ( например импорт справочников, логику придется придумать самостоятельно)

далее пофантазируйте — что еще можно сделать зная «правду»

Licenses + Acknowledgments

Application

FFDec Application is licensed with GNU GPL v3, see the license.txt.
It uses modified code of these libraries:

And links also these libraries:

  • Java Native Access — JNA (Registry association, Process memory reading) — LGPL
  • javactivex (Flash Player ActiveX embedding) — LGPLv3
  • flashdebugger library (Debugging ActionScript) — LGPLv3
  • FFDec Library (LGPLv3) — see below

Library

FFDec Library is licensed with GNU LGPL v3, see license.txt for details.
It uses modified code of these libraries:

  • UAB «DKD» NellyMoser ASAO codec (Decoding Nelly Moser sound format) — LGPL

And links also these libraries:

Используем декомпилятор для снятия защиты

На многих сайтах, которые посвящены 1С, в сети можно найти специальную программу-обработку, которая называется декомпилятор 1С 8.3. Работает это программа следующим образом: происходит компиляция образа модуля, а уже на основе данного образа начинается генерация строчек кода. Однако все закомментированные строчки кода, а также комментарии декомпилировать не получится.

В основном, форма внешней обработки содержит в себе следующие элементы:

  • поле, в котором вы выбираете файл. Декомпиляторы работают с расширениями: cf, epf, erf;
  • функция «Не создавать копию». Ее используют те пользователи, которые уже имеют резервную копию на своем устройстве. Однако, если у вас конфигурация только в одном экземпляре, то обязательно создайте бекап или поставьте флажок напротив этой функции. В таком случае, перед началом работы, декомпилятор сделает копию файла и присвоит ей префикс;
  • функция «Искать все модули». Данная функция сообщает декомпилятору о том, что нужно хорошо анализировать входной файл, а также его структуру. Ее стоит применять, если до этого модули не декомпилировались. Функция значительно увеличивает время работы декомпилятора над кодом.

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

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

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

Самыми популярными считаются следующие три способа «запутывания»:

  • заменяются имена переменных на нечитаемые и понятные только автору. И если речь идет о простой программе, то кажется, что это несложно, но когда мы говорим о сложном модуле, где куча разных функций и процедур, то тут голова закружится у любого программиста или разработчика.
  • изменение значения и типа данных. Как правило, число предоставляется в двоичной системе или строкой, но фантазия может быть настолько без граничной, что без знания конкретного алгоритма, чтение кода превратится в сущую проблему.
  • третий тип – это разбиение кода на несколько отдельных блоков, вызывая их переменно. Это считается нарушением прямого выполнения кода программы.

Безусловно, все что однажды зашифровали, можно расшифровать. Но единожды попробовав, вы поймете, насколько сложно это делать. Редко какие программисты занимаются обфускацей и установкой паролей в 1С, так как в данной сфере хорошая репутация лучше, чем дополнительные деньги за расшифровку от двух-трех клиентов.

Доверяйте поддержку и доработку 1С квалифицированным специалистам и тогда подобных проблем с шифровкой данных у вас не будет.

Остались вопросы? Закажите бесплатную консультацию наших специалистов!

Поиск и удаление дублей в 1С 8.3
Курсы валют в 1С 8.3: как загрузить их при помощи программы

Набор подсистем «Умные таблицы»

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

Количество ошибок при сборке результата декомпиляции

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

В этой секции jadx не рассматривается, так как он бросает 39 исключений при декомпиляции и, следовательно, в принципе не декомпилирует большое количество кода.

Для начала заметим, что есть три класса ошибок: синтаксические (их не выявлено ни одной, хотя еще несколько версий назад в CFR их было несколько); семантические ошибки, связанные с типами (неправильно выведенные параметры у дженериков, ненайденные методы, некорректные приведения типов), и все остальные семантические ошибки.

Причины, по которым ошибки, связанные с выведением типов, выделены в отдельную категорию:

  • декомпиляторы теоретически не способны полностью корректно восстановить типы;
  • эти ошибки встречаются чаще, чем все остальные вместе взятые;
  • они относительно мало влияют на читаемость кода.

К тому же, количество ошибок, связанных с выводом типов, примерно одинаково (хотя CFR все-таки проигрывает соперникам).

Из всего этого можно сделать вывод, что нам гораздо интереснее не связанные с типами ошибки.

Синтаксические Все семантические Связанные с типами Остальные
Fernflower 101 65 36
CFR 82 80 2
Procyon 79 61 16

В коде, сгенерированном с помощью Fernflower, таких ошибок больше всего, причем 34 из 36 — это ошибки вида . Две ошибки у CFR тоже связаны с переопределением переменных. В случае Procyon’а большинство (10 из 16) ошибок происходят из-за того, что переменная типа используется в качестве индекса массива. Это происходит из-за некорректной обработки тернарных операторов (подробнее этот случай рассмотрен в ).

Отдельно стоит заметить, что CFR — единственный из трех декомпиляторов, улучшивший свои показатели за последние 4 месяца. Раньше у него было 10 ошибок, не связанных с типами и 72 — про типы. Из этого можно предположить, что большое количество «типовых» ошибок у CFR связано с тем, что остальных ошибок у него меньше и, следовательно, больше пространства для неправильного вывода типов.

Декомпиляция приложений и её функции

Один из языков программирования, который используется при написании программ для ОС Android – Java. На нём, как правило, пишут программы новички и люди, которые привыкли к его инструментарию. Крупные разработчики используют другие языки, которые дают больше свободы в использовании сторонних библиотек или программных компонентов.

Для того, чтобы написанный код превратился работающее приложение, его нужно скомпилировать встроенным в SDK (Software Development Kit) компилятором. Обратный же процесс, когда из готового APK-файла получается программный код, называется декомпиляцией.

Для чего может понадобиться декомпилировать такие файлы? Есть несколько ситуаций, в которых это пригодится:

  1. Пользователю недостаточно предоставленного функционала и он обладает достаточными знаниями и опытом, чтобы вносить изменения в готовый код.
  2. Посмотреть, как работает определённый компонент программы и приобрести нужный опыт в его реализации при создании собственного продукта.
  3. Определить, используются ли в приложении какие-либо части вредоносного кода.

Как видно, все эти задачи требуют некоторого опыта работы с языками программирования и Android SDK. Но при этом, на просторах интернета есть множество инструкций, которые под силу и новичкам, что делает процесс обратной компиляции полезным и для них. Нужно просто следовать инструкциям.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector